Repository navigation
Add CI and PyPI release pipeline; fix packaging metadata - #61
Merged
Merged
Conversation
This repo had no workflows at all, so 1.1.0 (the cloudshell-snmp 6.0 adoption) had no way to reach PyPI - the last published version was 1.0.0. - ci.yml: run the 100 unit tests on 3.9 and 3.13, plus a build/twine validation job - deploy-package.yml: publish to PyPI when a release is published, using the org PYPI_TOKEN like the other shell repos - setup.py: declare long_description_content_type='text/markdown'. Without it twine defaults to RST and 'twine check' FAILED, so the description would not have rendered on PyPI - test_requirements.txt: nose 1.3.7 doesn't run on modern Python (and nothing in tests/ imports it - it was only the runner); moved to pytest, dropped the unused coveralls pin, unpinned mock from 2.0.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The exact pins (PyYAML==3.12, click==6.7, openpyxl==2.4.5,
xlsxwriter==0.9.6) predate cp313 wheels, so a clean install on 3.13
tried to build PyYAML 3.12 from source and failed. It only appeared to
work locally off a stale wheel cache.
- PyYAML>=6,<7, click>=8,<9, openpyxl>=3,<4, xlsxwriter>=3,<4,
terminaltables>=3.1,<4. Audited the API surface first: only
load_workbook, xlsxwriter.Workbook, AsciiTable and
click.{Choice,echo,group,option,secho} are used, all stable across
those ranges.
- Dropped the ipaddress==1.0.18 pin - that's the Python 2 backport of a
module that has been in the stdlib since 3.3, and nothing imports it.
- yaml.load(data) -> yaml.safe_load(data) at both call sites: PyYAML 6
requires an explicit Loader, and safe_load is the right choice for
reading user-supplied input files anyway. Tests updated to match.
- cloudshell-cli>=5.0,<7 to pick up cli 6.x, matching the rest of the
wave. The standard-telnetlib marker stays: unlike the shells, this
package imports telnetlib in its own code
(autodiscovery/cli_sessions/telnet.py), not only via cloudshell-cli.
Verified: clean no-cache install on 3.13, 100/100 tests, and the
echo-input-template CLI exercised in both yml and json modes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
This repo has no GitHub Actions workflows at all, so 1.1.0 (the cloudshell-snmp 6.0 adoption, merged in #60) had no way to reach PyPI — the last published version is still 1.0.0.
twine checkjobPYPI_TOKENlike the other shell reposlong_description_content_type="text/markdown". Without it twine defaults to RST andtwine checkFAILED, so the description would not have rendered on PyPItests/imports it (it was only the runner), so moved to pytest; dropped the unused coveralls pin and unpinned mock from 2.0.0Verified locally: 100/100 tests pass on 3.13 and
twine checkpasses on both artifacts.🤖 Generated with Claude Code