diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..3ba13e0ce --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/overture.yaml b/.github/ISSUE_TEMPLATE/overture.yaml new file mode 100644 index 000000000..f7f8337e1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/overture.yaml @@ -0,0 +1,47 @@ +name: Overture +description: General issue for work tracked in the Overture project. +projects: ["OvertureMaps/84"] +body: + - type: dropdown + id: type + attributes: + label: Type + description: What kind of work is this? Used to populate the organization-level `Type` field during triage. + options: + - Task + - Bug + - Agenda + validations: + required: true + - type: dropdown + id: scope + attributes: + label: Scope + description: Primary theme or platform impacted. Used to populate the organization-level `Scope` field during triage. + options: + - Addresses + - Base + - Buildings + - Divisions + - Places + - Transportation + - Multi-theme or Platform + validations: + required: true + - type: dropdown + id: skillset + attributes: + label: Skillset + description: Primary skill needed to complete this task. Used to populate the organization-level `Skillset` field during triage. + options: + - data analysis + - data science + - dev ops + - engineering + - type: textarea + id: description + attributes: + label: Description + placeholder: Describe what this issue is trying to accomplish (what), context (why), constraints, acceptance criteria, design details (how), and testing + validations: + required: true diff --git a/.github/linters/.textlintrc.json b/.github/linters/.textlintrc.json index 4ef3eab66..78998baf4 100644 --- a/.github/linters/.textlintrc.json +++ b/.github/linters/.textlintrc.json @@ -4,7 +4,7 @@ }, "rules": { "terminology": { - "exclude": ["to-?do(s)?(?=[ ,.])"] + "exclude": ["to-?do(s)?(?=[ ,.])", "ID"] } } } diff --git a/.github/workflows/sync-issue-type-and-scope.yml b/.github/workflows/sync-issue-type-and-scope.yml new file mode 100644 index 000000000..e3108e14f --- /dev/null +++ b/.github/workflows/sync-issue-type-and-scope.yml @@ -0,0 +1,25 @@ +--- +name: Sync issue Type and Scope + +on: + issues: + types: [opened] + +# One sync run per issue at a time; drop duplicate triggers. +concurrency: + group: sync-issue-type-scope-${{ github.event.issue.number }} + cancel-in-progress: true + +permissions: {} + +jobs: + sync-fields: + name: Sync Fields + runs-on: ubuntu-slim + permissions: + issues: write # for the sync action to set org-level Type, Scope, and Skillset + steps: + - name: Sync Type and Scope from form answers + uses: OvertureMaps/workflows/.github/actions/sync-issue-fields@main # zizmor: ignore[unpinned-uses] intentionally track main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/schema/reference/base/infrastructure.md b/docs/schema/reference/base/infrastructure.md index 8f3432f8d..f2526d26b 100644 --- a/docs/schema/reference/base/infrastructure.md +++ b/docs/schema/reference/base/infrastructure.md @@ -45,7 +45,7 @@ such as bridges, airports, runways, aerialways, communication towers, and power | `names.rules[].between` | [`LinearlyReferencedRange`](../common/scoping/linearly_referenced_range.md) (list, optional) | The linearly-referenced sub-segment of the geometry, specified as a range (pair) of percentage displacements from the start of the geometry, that the containing NameRule applies to. | | `names.rules[].side` | [`Side`](../common/scoping/side.md) (optional) | The side, either left or right, that the containing NameRule applies to. | | `level` | [`Level`](../common/level.md) (optional) | Z-order of the feature where 0 is visual level | -| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key/value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | +| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key-value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | | `wikidata` | [`WikidataId`](../system/wikidata_id.md) (optional) | A wikidata ID, as found on https://www.wikidata.org/ | ## Examples diff --git a/docs/schema/reference/base/land.md b/docs/schema/reference/base/land.md index b54eb24a0..970620666 100644 --- a/docs/schema/reference/base/land.md +++ b/docs/schema/reference/base/land.md @@ -55,7 +55,7 @@ TODO: Update this description when the relationship to `land_cover` is better un | `names.rules[].between` | [`LinearlyReferencedRange`](../common/scoping/linearly_referenced_range.md) (list, optional) | The linearly-referenced sub-segment of the geometry, specified as a range (pair) of percentage displacements from the start of the geometry, that the containing NameRule applies to. | | `names.rules[].side` | [`Side`](../common/scoping/side.md) (optional) | The side, either left or right, that the containing NameRule applies to. | | `level` | [`Level`](../common/level.md) (optional) | Z-order of the feature where 0 is visual level | -| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key/value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | +| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key-value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | | `wikidata` | [`WikidataId`](../system/wikidata_id.md) (optional) | A wikidata ID, as found on https://www.wikidata.org/ | ## Examples diff --git a/docs/schema/reference/base/land_use.md b/docs/schema/reference/base/land_use.md index 40b9d21b3..cb8df33ad 100644 --- a/docs/schema/reference/base/land_use.md +++ b/docs/schema/reference/base/land_use.md @@ -50,7 +50,7 @@ TODO: Explain relationship to `Land` features. | `names.rules[].between` | [`LinearlyReferencedRange`](../common/scoping/linearly_referenced_range.md) (list, optional) | The linearly-referenced sub-segment of the geometry, specified as a range (pair) of percentage displacements from the start of the geometry, that the containing NameRule applies to. | | `names.rules[].side` | [`Side`](../common/scoping/side.md) (optional) | The side, either left or right, that the containing NameRule applies to. | | `level` | [`Level`](../common/level.md) (optional) | Z-order of the feature where 0 is visual level | -| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key/value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | +| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key-value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | | `wikidata` | [`WikidataId`](../system/wikidata_id.md) (optional) | A wikidata ID, as found on https://www.wikidata.org/ | ## Examples diff --git a/docs/schema/reference/base/types/source_tags.md b/docs/schema/reference/base/types/source_tags.md index 41f50ae8f..aaac97608 100644 --- a/docs/schema/reference/base/types/source_tags.md +++ b/docs/schema/reference/base/types/source_tags.md @@ -1,6 +1,6 @@ # SourceTags -Key/value pairs imported directly from the source data without change. +Key-value pairs imported directly from the source data without change. This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. diff --git a/docs/schema/reference/base/water.md b/docs/schema/reference/base/water.md index 5b2bd1430..e2bfb1f75 100644 --- a/docs/schema/reference/base/water.md +++ b/docs/schema/reference/base/water.md @@ -66,7 +66,7 @@ and `water=*`. | `names.rules[].perspectives.countries` | `list<`[`CountryCodeAlpha2`](../system/country_code_alpha2.md)`>` | Countries holding the given mode of perspective. | | `names.rules[].between` | [`LinearlyReferencedRange`](../common/scoping/linearly_referenced_range.md) (list, optional) | The linearly-referenced sub-segment of the geometry, specified as a range (pair) of percentage displacements from the start of the geometry, that the containing NameRule applies to. | | `names.rules[].side` | [`Side`](../common/scoping/side.md) (optional) | The side, either left or right, that the containing NameRule applies to. | -| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key/value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | +| `source_tags` | [`SourceTags`](types/source_tags.md) (map, optional) | Key-value pairs imported directly from the source data without change.

This field provides access to raw OSM entity tags for features sourced from OpenStreetMap. | | `wikidata` | [`WikidataId`](../system/wikidata_id.md) (optional) | A wikidata ID, as found on https://www.wikidata.org/ | ## Examples diff --git a/docs/schema/reference/places/place.md b/docs/schema/reference/places/place.md index 2b8b2bd63..d145a4dab 100644 --- a/docs/schema/reference/places/place.md +++ b/docs/schema/reference/places/place.md @@ -37,7 +37,7 @@ Places are point representations of real-world facilities, businesses, services, | `taxonomy.hierarchy` | `list<`[`SnakeCaseString`](../system/snake_case_string.md)`>` | The full primary hierarchy of categories known for this place, ordered from most general to most specific. An example hierarchy might be: `["food_and_drink", "restaurant", "casual_eatery", "gas_station_sushi"]`.

The rightmost, or most specific, value in the `hierarchy` must always be equal to the `primary` field. The basic level category of the place will typically be found in the middle of the primary hierarchy. The primary hierarchy does not include any of the alternate categories found in the `alternates` field. | | `taxonomy.alternates` | `list<`[`SnakeCaseString`](../system/snake_case_string.md)`>` (optional) | Unordered list of additional categories that are known for this place but that are not part of the primary category hierarchy.

Alternate categories allow a more complete picture of the place to be surfaced when it fits multiple unconnected branches in the taxonomy. For example a gas station that also sells groceries might have primary category of "gas_station" with an alternate of "grocery_store".

Alternate categories are not part of the primary hierarchy or another alternate category's hierarchy. In other words, if a category is a parent in the hierarchy of another category, that category can't be a primary or alternate category itself.

Note as well that this field is an unordered list of extra categories and does not represent a hierarchy. | | `confidence` | [`ConfidenceScore`](../common/confidence_score.md) (optional) | A score between 0 and 1 indicating how confident we are that the place exists.

A confidence score of 0 indicates that we are certain the place doesn't exist anymore and will always be paired with an `operating_status` of `"permanently_closed"`.

A confidence score of 1 indicates that we are certain the place does exist.

If there is no value for confidence, it means we don't have enough information on which to estimate our confidence level. | -| `websites` | `list<`[`HttpUrl`](../pydantic/networks/http_url.md)`>` (optional) | The websites of the place.

*Minimum length: 1*
*All items must be unique. (`UniqueItemsConstraint`)* | +| `websites` | `list<`[`HttpUrl`](../pydantic/networks/http_url.md)`>` (optional) | The web addresses of the place.

*Minimum length: 1*
*All items must be unique. (`UniqueItemsConstraint`)* | | `socials` | `list<`[`HttpUrl`](../pydantic/networks/http_url.md)`>` (optional) | The social media URLs of the place.

*Minimum length: 1*
*All items must be unique. (`UniqueItemsConstraint`)* | | `emails` | `list<`[`EmailStr`](../pydantic/networks/email_str.md)`>` (optional) | The email addresses of the place.

*Minimum length: 1*
*All items must be unique. (`UniqueItemsConstraint`)* | | `phones` | `list<`[`PhoneNumber`](../system/phone_number.md)`>` (optional) | The phone numbers of the place.

*Minimum length: 1*
*All items must be unique. (`UniqueItemsConstraint`)* | diff --git a/docs/schema/reference/system/snake_case_string.md b/docs/schema/reference/system/snake_case_string.md index 4bfeb76e8..6c8cd4c8e 100644 --- a/docs/schema/reference/system/snake_case_string.md +++ b/docs/schema/reference/system/snake_case_string.md @@ -1,12 +1,12 @@ # SnakeCaseString -A string that looks like a snake case identifier, like a Python variable name (*e.g.*, `foo_bar`). +A string that looks like a `snake_case` identifier, like a Python variable name (*e.g.*, `foo_bar`). Underlying type: `string` ## Constraints -- Allows only strings that look like snake case identifiers, *e.g.* `"foo_bar"`. (`SnakeCaseConstraint`, pattern: `^[a-z0-9]+(_[a-z0-9]+)*$`) +- Allows only strings that look like `snake_case` identifiers, *e.g.* `"foo_bar"`. (`SnakeCaseConstraint`, pattern: `^[a-z0-9]+(_[a-z0-9]+)*$`) ## Used By