Skip to content

Point package metadata and package READMEs at the right pages - #35

Merged
jwrosewell merged 1 commit into
rcfrom
docs/package-metadata-and-links
Nov 4, 2026
Merged

jwrosewell merged 1 commit into
rcfrom
docs/package-metadata-and-links

Conversation

@jwrosewell

Copy link
Copy Markdown
Contributor

Why

PyPI shows a package's links in its sidebar and renders the README that setup.py passes as long_description. Every package gave the 51degrees.com home page as its only link, fiftyone_devicedetection_onpremise and fiftyone_ipintelligence_onpremise gave none, and nothing pointed at this repository. The READMEs PyPI renders carried GitHub's UTM tags and had no "Find out more" section. Separately, many links went to documentation pages that were renamed when the documentation was reorganised.

Package metadata

In all 18 setup.py files, url= becomes project_urls with three entries.

url= fills the core metadata field Home-page, which the core metadata specification marks "Deprecated since version 1.2: Per PEP 753, use Project-URL (multiple-use) instead." Keeping both would show two home pages. The labels are the well-known ones in the well-known project URLs specification, homepage, documentation and source, so PyPI shows them as Homepage, Documentation and Source Code. The two on-premise packages, which had no URL, get the same three entries after author_email.

Packages Homepage Documentation
fiftyone_pipeline_core, _engines, _engines_fiftyone, _cloudrequestengine, _translation https://51degrees.com/build-your-own https://51degrees.com/documentation/_pipeline_api__index.html
fiftyone_pipeline_did https://51degrees.com/developers/51did https://51degrees.com/documentation/_identifiers_51_did.html
fiftyone_devicedetection, _shared, _cloud, _onpremise, _examples https://51degrees.com/device-detection https://51degrees.com/documentation/_device_detection__index.html
fiftyone_ipintelligence, _shared, _cloud, _onpremise, _translation, _examples https://51degrees.com/ip-intelligence https://51degrees.com/documentation/_ip_intelligence__index.html
fiftyone_location https://51degrees.com/geolocation https://51degrees.com/documentation/_reverse_geocoding__index.html

The two examples packages are not published, and are changed only so that every setup.py follows the same pattern. Each 51degrees.com link carries utm_source=pypi, utm_medium=package, utm_campaign=51degrees-python, the package name as utm_content, and homepage or documentation as utm_term.

The README on each PyPI page

For the 16 published packages, the readme.md beside each setup.py changes in three ways.

  1. Every 51degrees.com link carries PyPI's tags, utm_source=pypi&utm_medium=package&utm_campaign=51degrees-python, with the package name as utm_content. Each link keeps its utm_term. Before, they carried utm_source=github&utm_medium=readme and the file name as utm_content. The same files are shown on GitHub, so clicks there will now be counted under PyPI too.
  2. The README ends with a "Find out more" section. It links the area's page, the area's documentation, and where it fits the getting started guide and the pricing page, then this repository. The on-premise packages also list https://github.com/51Degrees/51degrees-cxx, where their engines' C code lives. fiftyone_pipeline_cloudrequestengine also links the cloud service documentation.
  3. The five published IP Intelligence READMEs linked "Developer Documentation" to https://51degrees.com/ip-intelligence-python/index.html. The site sends that address to the IP tester, and no Python IP Intelligence reference is published (https://51degrees.com/documentation/apis/ip-intelligence-python/index.html redirects to the documentation home page). The link now goes to the IP Intelligence documentation. The examples README and ip-intelligence/readme.md, which PyPI does not show, get the same fix and keep their GitHub tags.
Area Find out more links
Pipeline Build your own, Pipeline API documentation, Pipeline API examples
51Did 51Did, 51Did documentation, 51Did inspector
Device Detection Device Detection, documentation, getting started, pricing
IP Intelligence IP Intelligence, documentation, getting started, pricing
Location Geolocation, reverse geocoding documentation, getting started, pricing

Documentation links

The renamed pages now redirect to the documentation home page, so a reader never reached the page a link was for. Each old page below was found in the 4.4 documentation, which keeps the old names, and matched to the current page with the same title. Where the title changed, as for the Configurator page, the two pages open with the same text. The UTM parameters of each link are unchanged.

Old page Current page Links
_concepts__configuration__builders__index.html _pipeline_api__concepts__configuration__builders__index.html 8 links in 8 files
_concepts__configurator.html _services__configurator.html 1 link in 1 file
_examples__device_detection__getting_started__console__cloud.html _device_detection__examples__getting_started__console__cloud.html 1 link in 1 file
_examples__device_detection__index.html _device_detection__examples__index.html 1 link in 1 file
_features__automatic_datafile_updates.html _pipeline_api__features__automatic_datafile_updates.html 4 links in 4 files
_features__usage_sharing.html _pipeline_api__features__usage_sharing.html 5 links in 4 files
_info__resource_keys.html _services__cloud__resource_keys.html 18 links in 17 files
_info__tested_versions.html _product_summaries__tested_versions.html 5 links in 5 files

43 links in 25 files

The two web getting started examples for Device Detection linked "JavaScriptBuilderElementBuilder" to a 4.3 reference page that no longer exists, for "details on available settings such as changing the fod name". The link now goes to the JavascriptBuilderElement page of the current Python reference, which documents that setting as obj_name, and names that class.

How it was checked

  • Every address this change adds or retags was requested once and answered 200, apart from https://51degrees.com/img/logo.png and https://51degrees.com/resources/property-dictionary, which refuse HEAD requests and answered a full request normally, and the links left as they are below.
  • Every page in the Find out more sections and in the metadata is in the 51degrees.com sitemap.
  • Every changed setup.py still parses as Python.
  • common-ci's scripts/utm-lint.ps1 reports no violations, both on rc and with this change.
  • No changed line is on or next to a line that Read the data files from the data repository in cxx/data #28 changes, although Read the data files from the data repository in cxx/data #28 edits some of the same files.
  • No package was built and no version number changes.

Left for later

  • Four READMEs link _info__dependencies.html, which the current documentation has no page for, so those links still land on the documentation home page.
  • fiftyone_ipintelligence_examples/.../onpremise/performance_console.py links _features__performance_options.html, which did not exist in the 4.4 or 4.3 documentation either.
  • The Lite IP Intelligence file links to 51ddatafiles.blob.core.windows.net in fiftyone_ipintelligence_onpremise/readme.md and the on-premise web example answer 404. Read the data files from the data repository in cxx/data #28 already replaces both.

Each package's setup.py gave the 51degrees.com home page as its url, and
two gave none. The url, which Python packaging has deprecated, becomes
project_urls with Homepage, Documentation and Source links.

The README each package shows on PyPI now tags its 51degrees.com links
for PyPI and ends with a Find out more section. Links to documentation
pages that were renamed go to the page each became.
@jwrosewell
jwrosewell marked this pull request as ready for review November 4, 2026 17:25
@jwrosewell
jwrosewell merged commit 7364fe9 into rc Nov 4, 2026
2 checks passed
@jwrosewell
jwrosewell deleted the docs/package-metadata-and-links branch November 4, 2026 17:25
@jwrosewell jwrosewell mentioned this pull request Nov 4, 2026
jwrosewell added a commit that referenced this pull request Nov 4, 2026
Releases what has collected on `rc` since #30:

- [#26](#26) Update submodules
- [#28](#28) Read the data files from the data repository in cxx/data
- [#34](#34) Say in AGENTS.md how to get the data, build and run the examples
- [#35](#35) Point package metadata and package READMEs at the right pages
- [#32](#32) Ask the country property for its no value message in the location example
- [#29](#29) Describe the rc approach to releases in AGENTS.md
- [#31](#31) Check the callback URL before the JavaScript builder writes it
- [#36](#36) Let FlowData and pipelines release native memory, and close them in the tests and examples

## Release note

From [#36](#36):

- `FlowData` and `Pipeline` now have `close()` and work in a `with` statement. Closing a FlowData releases the native results its element data holds. Closing a pipeline closes its flow elements, unless it was built with `auto_close_elements` set to false.
- The on-premise Device Detection and IP Intelligence packages now require `fiftyone_pipeline_core>=4.5.42` and `fiftyone_pipeline_engines>=4.5.42`, the versions this release publishes with `close()`.

## Notes

The cxx submodule moves from [4.5.102](https://github.com/51Degrees/51degrees-cxx/releases/tag/4.5.102) to [4.5.103](https://github.com/51Degrees/51degrees-cxx/releases/tag/4.5.103). That release adds the [data](https://github.com/51Degrees/data) repository at `cxx/data` and changes nothing under `src/`.

No commit asks for a major or minor version change, so the publish moves only patch numbers.

The last release into `main` was #30, merged at 09:23 UTC on 4 November 2026.
jwrosewell added a commit that referenced this pull request Nov 4, 2026
…ud tests

#35 moved the resource keys explainer link in the cloud request engine's
messages from _info__resource_keys.html to _services__cloud__resource_keys.html.
test_missing_property_service_element_not_found and
test_missing_property_service_not_found_anywhere still looked for the old
link, so they failed in every Test job of the publish.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant