Publish to PyPI as da-sync, not da-cli - #6
Merged
Merged
Conversation
PyPI refuses `da-cli`: it is too similar to the unrelated `dacli` project, which the two differing only by a separator is precisely what its typosquat guard exists to catch. Worth recording, because it invalidates the check I had been relying on: `https://pypi.org/pypi/da-cli/json` returns **404**. The name is not taken. It is still rejected. Availability and acceptability are separate questions on PyPI, and only the pending-publisher form answers the second — so `tools/check_discoverability.py`-style 404 probes cannot clear a name on their own. `da-sync` instead: seven characters, says what the tool does, reads naturally with the `da` command, and differs from `dacli` by more than a separator, which is the specific thing that tripped the guard. THREE NAMES, THREE JOBS — this is the part worth being explicit about, because they are now deliberately different and that looks like a mistake if you do not know why: distribution (PyPI) da-sync what you `pip install` import package dacli what `import` resolves; unchanged console script da what you type; unchanged repository da-cli unchanged Only the first changed. Nothing about the installed tool moves. Verified by building and installing the wheel into a clean virtualenv rather than reasoning about it: built da_sync-0.1.0-py3-none-any.whl, da_sync-0.1.0.tar.gz da --version -> da-cli 0.1.0 import dacli -> ok, version 0.1.0 metadata -> name=da-sync version=0.1.0 The existing `dacli` on PyPI installs a top-level `dacli/` directory and a `dacli` console script. So our console script does not collide, but the import package would if both were installed into the same environment — pip does not detect two distributions writing the same directory. That is accepted deliberately: this is an application, not a library, nobody imports it, the README recommends pipx (which isolates per tool), and the two audiences barely overlap. The README's install section now names `da-sync` and warns about both neighbouring names rather than only one. tools/check_version_sync.py matches both `da-cli` and `da-sync` when it scans prose for a version that disagrees with the package — the first is still the HTTP User-Agent and the repository name, the second is now the distribution.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PyPI refuses
da-cli: it is too similar to the unrelateddacliproject, which the two differing only by a separator is precisely what
its typosquat guard exists to catch.
Worth recording, because it invalidates the check I had been relying on:
https://pypi.org/pypi/da-cli/jsonreturns 404. The name is nottaken. It is still rejected. Availability and acceptability are separate
questions on PyPI, and only the pending-publisher form answers the
second — so
tools/check_discoverability.py-style 404 probes cannotclear a name on their own.
da-syncinstead: seven characters, says what the tool does, readsnaturally with the
dacommand, and differs fromdacliby more than aseparator, which is the specific thing that tripped the guard.
THREE NAMES, THREE JOBS — this is the part worth being explicit about,
because they are now deliberately different and that looks like a mistake
if you do not know why:
distribution (PyPI) da-sync what you
pip installimport package dacli what
importresolves; unchangedconsole script da what you type; unchanged
repository da-cli unchanged
Only the first changed. Nothing about the installed tool moves.
Verified by building and installing the wheel into a clean virtualenv
rather than reasoning about it:
built da_sync-0.1.0-py3-none-any.whl, da_sync-0.1.0.tar.gz
da --version -> da-cli 0.1.0
import dacli -> ok, version 0.1.0
metadata -> name=da-sync version=0.1.0
The existing
daclion PyPI installs a top-leveldacli/directory anda
dacliconsole script. So our console script does not collide, but theimport package would if both were installed into the same environment —
pip does not detect two distributions writing the same directory. That is
accepted deliberately: this is an application, not a library, nobody
imports it, the README recommends pipx (which isolates per tool), and the
two audiences barely overlap.
The README's install section now names
da-syncand warns about bothneighbouring names rather than only one.
tools/check_version_sync.py matches both
da-cliandda-syncwhen itscans prose for a version that disagrees with the package — the first is
still the HTTP User-Agent and the repository name, the second is now the
distribution.