GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||
GeezerVison is showing github.com — chore(vendor): vendor the MEOS-API artefacts by estebanzimanyi · Pull Request #4 · MobilityDB/MobilityAPI-Python Conversation
|
| File | Source | Notes |
|---|---|---|
vendor/meos-api/meos-idl.json |
MEOS-API master + MobilityDB master headers | 3546 functions / 70 structs / 16 enums, generated by python3 run.py <MobilityDB/meos/include> |
vendor/meos-api/meos-coverage.json |
MEOS-API PR #4 (feat/service-enrichment) |
structural worklist of non-exposable functions, ranked by byClass |
vendor/meos-api/meos-object-model-parity.json |
MEOS-API PR #10 (feat/object-model) |
29-pair portable-bare-name parity contract |
vendor/meos-api/PROVENANCE.json |
this PR | machine-readable source + regenerate command for each artefact |
vendor/meos-api/README.md |
this PR | per-artefact docs + refresh procedure |
meos-coverage.json and meos-object-model-parity.json source from open MEOS-API PR branches (report.py and object_model_parity.py are not yet on master); PROVENANCE.json records that explicitly. The Makefile gracefully skips files the upstream branch does not produce.
make vendor-meos-api # from MEOS-API master + MobilityDB master make vendor-meos-api-from-prs # from open MEOS-API PRs #4 + #5, regenerated
Both targets clone MEOS-API and MobilityDB shallowly, install libclang==18.1.1, run python3 run.py <MobilityDB-headers>, and copy the produced JSON artefacts into vendor/meos-api/. MEOS_API_REPO / MEOS_API_REF / MOBILITYDB_REPO / MOBILITYDB_REF are make variables so each can be pinned.
The drift gate (step 3) lands as #5, stacked on this PR.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
MobilityAPI's working tree is the result of two distinct contribution phases that today's repo doesn't make visible: 1. **pg_mfserv (March 2024)** — the founding OGC API – Moving Features Python server for MobilityDB, authored at ULB. - Maxime Schoemans (@mschoema) — initial commit, endpoint design. - Victor Morabito (@MrMaxime1er) — main developer of the pg_mfserv codebase: column discovery, request handling, exception handling, route refactors. 2. **MobilityAPI (2025–)** — the current production-grade implementation, also at ULB. - Sirine Meraoui (@sirimeraoui) — current maintainer; structured resource layout, tests, OGC conformance, documentation. This commit adds three artefacts that surface the lineage: - **README.md** — new `## History and Acknowledgements` section before `## License` crediting all three contributors and pointing to pg_mfserv as the archived predecessor. - **AUTHORS.md** (new) — structured contributor list per phase. - **CITATION.cff** (new) — machine-readable citation metadata for Zenodo / GitHub citation widget, including a `references:` block citing pg_mfserv as predecessor work. License declared in CITATION.cff: PostgreSQL (matching the MobilityDB main project's license posture). The lineage credit is symmetric: pg_mfserv's README will gain an archive banner pointing forward to MobilityAPI in the companion PR on the pg_mfserv repository. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Add lineage credits: pg_mfserv predecessor, AUTHORS, CITATION
…ADME rewrite
The repo is now the canonical home of MobilityAPI but was missing
several artefacts that ecosystem-grade org repos carry:
1. **LICENSE.txt** — The PostgreSQL License, matching the
MobilityDB main project's licence posture. Without this,
the repository was effectively all-rights-reserved by
default. Copyright Université libre de Bruxelles and
MobilityAPI contributors.
2. **CONTRIBUTING.md** — Development setup, test instructions
(./run.sh, ./run.sh --with-tests), code-style conventions
(PEP 8 + ruff), PR conventions. Cross-references AUTHORS.md
and the lineage section in the README.
3. **.github/workflows/python.yml** — Stub CI:
- Lint job: ruff check on PRs (warning-only at this stage so
legacy code isn't blocked; tighten when codebase has been
once-through).
- Import-smoke-test job: imports each application module so
a minimal "code is at least loadable" gate runs on PRs.
No DB-integration tests at this stage; that's a separate
GitHub Actions service-container effort once the test
harness stabilises.
4. **.github/ISSUE_TEMPLATE/{bug,feature}.md** + **PULL_REQUEST_TEMPLATE.md**
— issue / PR scaffolding. Bug template asks for environment
info; feature template prompts for OGC-spec references.
5. **README rewrite** — restructured for canonical-home framing:
- Added badges (License, Python, OGC API conformance).
- Lead with what MobilityAPI is (HTTP / OGC layer of the MEOS
ecosystem) rather than the bare introduction.
- Added a Status section pointing at issues + discussions.
- Added a "Where MobilityAPI fits" section showing peer SQL
layers (MobilityDB / MobilityDuck) and language bindings.
- Cross-link to https://libmeos.org/bindings/mobilityapi/.
- Added Contributing section pointing at CONTRIBUTING.md.
- Fixed "Pyhton" / "Developement" typos and the orphaned
##Poetry section. Final License section points at LICENSE.txt
and CITATION.cff.
- Lineage section (PR #1) preserved unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Canonicalisation bundle: LICENSE, CI, contributor scaffolding, README rewrite
Vendor MobilityAPI's read-only copy of MEOS-API's published catalog +
projection artefacts under `vendor/meos-api/`, plus a Makefile target
`make vendor-meos-api` that regenerates them from upstream.
Files added:
vendor/meos-api/
PROVENANCE.json -- per-artefact source URLs + regenerate cmd
README.md -- refresh procedure
meos-idl.json -- 3546 fns / 70 structs / 16 enums
(generated by MEOS-API run.py over
MobilityDB master meos/include headers)
meos-coverage.json -- structural worklist (from open PR MobilityDB#4)
meos-object-model-parity.json -- 29-pair portable-parity (from open PR MobilityDB#10)
The Makefile target clones MEOS-API + MobilityDB shallowly, installs
libclang, runs MEOS-API's `run.py` against MobilityDB's MEOS headers,
and copies the produced JSON artefacts into `vendor/meos-api/`.
Two of the four artefacts (`meos-coverage.json`,
`meos-object-model-parity.json`) currently come from open MEOS-API PR
branches because their generators are not yet on master; PROVENANCE.json
makes that explicit. The Makefile gracefully skips them if absent.
Step 2 of `docs/MEOS_API_INGESTION_PLAN.md`. The drift gate workflow
that fails on stale artefacts is step 3 (separate stacked PR).
58bbc39 to
4d5098f
Compare
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:
::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
locally and open a refresh PR.
This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").
Stacks on PR MobilityDB#4 (vendoring + Makefile).
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:
::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
locally and open a refresh PR.
This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").
Stacks on PR MobilityDB#4 (vendoring + Makefile).
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:
::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
locally and open a refresh PR.
This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").
Stacks on PR MobilityDB#4 (vendoring + Makefile).
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:
::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
locally and open a refresh PR.
This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").
Stacks on PR MobilityDB#4 (vendoring + Makefile).
…ndation)
Step 4 of docs/MEOS_API_INGESTION_PLAN.md — the catalog-driven
dispatcher that the 5 'REPLACE' resource modules will delegate to in
follow-up PRs.
mobilityapi/dispatcher.py:
- Loads vendor/meos-api/meos-idl.json at construction; honours an
explicit catalog_path= for tests.
- Filters to network.exposable functions only when enrichment fields
are present; otherwise treats every function as exposable.
- FunctionSignature dataclass: name / category / params / return_type
/ decode_per_param / encode_return / description, all populated
from the catalog (enriched or bare).
- dispatch(function_name, params) -> Any:
* validates the parameter set against the catalog signature
(missing or unexpected names raise TypeError)
* resolves the MEOS function via an injected resolver callable
(production: getattr(pymeos.functions, name); tests: stub
registry)
* invokes it with the validated keyword args
* returns the result; the caller owns encoding to JSON / WKB
tests/test_dispatcher.py (12 tests, all passing locally):
- catalog load (default path, explicit path, FileNotFoundError)
- FunctionSignature.from_catalog_entry (basic fields, enriched wire
metadata, fallback when wire absent, non-exposable filtering)
- dispatch contract (resolver invocation, unknown function, missing
param, unexpected param, default stub resolver)
- integration sanity (the 5 MovFeat dispatch candidates named in the
ingestion plan are present in the vendored catalog)
What this PR does NOT change:
- Existing hand-written endpoint modules in resource/* remain
unchanged. The plan's 5 REPLACE candidates migrate to the
dispatcher module-by-module in follow-up PRs:
temporal_geom_seq/, temporal_geom_query/{velocity,acceleration,
distance}, temporal_properties/.
- PyMEOS is not yet a dependency (the dispatcher is resolver-
agnostic; the production resolver lands when the first endpoint
migrates).
Stacks on MobilityDB#4 (vendor MEOS-API artefacts) so vendor/meos-api/meos-idl.json
is in the tree.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.