OvertureMaps / OvertureMaps/schema

Deprecate the `ext_*` column

Open
#665 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
213
Forks
22
Avg merge
3d 3h
Merged PRs (30d)
31

Description

Type

Task

Scope

Multi-theme or Platform

Skillset

engineering

Description

The ext_* field predates the current extensions design. Investigate any existing uses of this field. Mark it deprecated as part of the v2.0.0 release, document what replaces it, find any remaining dependencies. Set a date to drop it.

This lives in the YAML and Pydantic versions of the schema

>>> print("payload keys :", sorted(gj["properties"]))
payload keys : ['class', 'ext_bar', 'ext_foo', 'height', 'is_underground', 'level', 'num_floors', 'num_floors_underground', 'sources', 'subtype', 'theme', 'type', 'version']

Done when: deprecation is in the schema and the replacement is documented

GitHub issues of yore for context:
  • #634 - @RoelBollens-TomTom defines a blocker to removing ext_*
  • #639
  • #602 - @vcschapp had wanted to drop support for ext_* from OvertureFeature. It is not supported in the Markdown and PySpark validation codegen so this seems like a good time to drop it before GA (public PyPI publishing) of the schema packages. DEFERRED because the ext_* stuff is being used in the reference counterexamples and I don't want to mess with that right now.
  • https://github.com/OvertureMaps/tf-data-platform/issues/4118 -- ext_* had been used internally for OSM processing. Check with @atiannicelli about any other internal uses
  • https://github.com/OvertureMaps/schema-wg/issues/400
    - Seth: "The meta-issue is that I believe that all models that compose an OvertureFeature subclass should behave as if @no_extra_fields were applied, even if it's not explicit, due to the constraints that most format serializations introduce (fixed set of columns, explicit struct members). If you need a dict, use a dict. Apply patterns if you need to, but don't make it a hybrid."
    - Vic: "I agree with this. I think today that is quasi-handled by the ext_* enabling code which already puts on "additionalProperties": false but allows through the narrow exception of ext_*. The ext_* exception is problematic, but when we remove it we should be left with all OvertureFeatures behaving as if @no_extra_fields was applied."
  • https://github.com/OvertureMaps/schema-wg/issues/359 - The original intention of the ext_* property: third party wants to be able to enrich Overture data with their own specific data.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the YAML and Pydantic schema definitions and search the repository for existing ext_* uses and dependencies. Review the linked context, especially issues #634, #639, and #602, before deciding the deprecation date. Done means the schema marks ext_* deprecated and documentation identifies its replacement.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design, data, documentation
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.