Skip to main content

Changeset Second Opinion (backend)

The Python package behind Changeset Second Opinion, a second-opinion review tool for flagged OpenStreetMap changesets. It collects evidence for a changeset, asks a small decision model a fixed set of questions, applies readable rules, orders a review queue in lanes and drafts a comment that a person edits and posts. Nothing in it writes to OpenStreetMap, and nothing is hidden from reviewers.

This is the PyPI distribution changeset-second-opinion. The import package is cso and the command is cso.

pip install changeset-second-opinion
cso --help

It needs Python 3.13. The web app, the documentation site and the deployment files live in the repository, and the container images are published at ghcr.io/yogeshselvarajan/.

What the package contains

  • The API, the worker and the command line (cso api, cso worker, cso seed, cso eval).
  • The database migrations (cso.persistence.migrations), applied with cso db upgrade.
  • The recorded demo cases, under cso/_data/fixtures/demo/ inside the installed package. To run in replay mode from an installed copy, set CSO_FIXTURES_DIR to that folder.

The community configuration files (config/communities/*.yaml in the repository) are not part of the package. Download the one you want and set CSO_COMMUNITY_CONFIG to its path.

Documentation

Setup, settings, the API reference and the design notes are at https://osm.changesetreview.online/docs/. Report problems at https://github.com/yogeshselvarajan/changeset-second-opinion/issues. The change history is in CHANGELOG.md.

Licence

Apache-2.0. Third party notices are in THIRD_PARTY_NOTICES.md in the repository. The automated flags (adapters/osm/flags.py and its suspect word list) are original code and data under the same licence, and no GPL or AGPL package is a runtime dependency. psycopg stays LGPL-3.0 and is used unmodified.

How it is made

AI coding assistants helped write the code, and a person set the scope and made every decision. A person reviews and approves every change before it merges, and the checks in the repository (tests, type checks, invariant checks and documentation rules) run on every pull request.

Metadata

Release files for changeset-second-opinion 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for changeset-second-opinion 1.0.0
File Size Uploaded Provenance
changeset_second_opinion-1.0.0.tar.gz 441.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for changeset-second-opinion 1.0.0
File Interpreter ABI Platform
changeset_second_opinion-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / changeset_second_opinion-1.0.0.tar.gz

Download URL changeset_second_opinion-1.0.0.tar.gz
Size 441.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d29ac6668bb0454e0086088242995ec74e91e09a866999aeb6c8e1c04296e31f
BLAKE2b-256 checksum
How to use checksums
641679b66b34c44abd9d3202863b91c12e6a1cf5d57fde3aeac0ecc5979e9900
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / changeset_second_opinion-1.0.0-py3-none-any.whl

Download URL changeset_second_opinion-1.0.0-py3-none-any.whl
Size 816.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf7bfd20c0bd0b207c70fe714c226def45edaedd074b67a0b6da1eafe787703c
BLAKE2b-256 checksum
How to use checksums
0c9907d2ed37d604954376ffaa86c46c20931da08aab6e91a48da0abdc6aee93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for changeset-second-opinion 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for changeset_second_opinion-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page