Repository navigation
Releases: dumixthestpd/sustech_survival
Releases · dumixthestpd/sustech_survival
Release list
2026.10.17 — correct package authorship
Metadata-only release. 2026.10.16 shipped with the wrong author in its package metadata (an agent-side identity override); PyPI metadata is immutable, so this version republishes the same code with Author-email: dumixthestpd <dumixthestpd@hotmail.com>. .mailmap now folds the tool-default identities into that one name. No code changes — see 2026.10.16 for the changelog.
2026.10.16 — first PyPI release
First PyPI release. Published from main at the merge of #30 / #31 / #32.
Added
bb.query.walk_contents(..., unavailable=...)collects metadata for content excluded from discovery;discover_pages()reports the excluded count on stderr.lib.search.LibraryError— authentication, browser and Primo read failures are now errors instead of an empty result list.sso/_tls.LegacyTLSAdapter— the CAS/Primo legacy-TLS policy applied to direct and proxied connection pools.pms: receipts carryjob_id,status,observed_job_ids, response format and verification URL;uploaded=Nonemeans "unknown, check the queue".
Changed
- Breaking (library):
lib.search.search()/detail()raiseLibraryErrorinstead of returning[]/None.sustech lib searchexits nonzero on failure and printsno results(exit 0) only for a confirmed empty result window. - Breaking (library):
bb.query.discover_pages()/walk_contents()propagate read failures instead of returning an empty listing; partial results are never cached. - Breaking (wire): PMS duplex codes now follow the queue labels —
long/双面长边sendsdwDuplex=2,short/双面短边sends3(previously reversed). Numeric inputs keep their wire value. pms.PrintJob.is_duplexisOptional[bool];Nonemeans the queue flags are missing or contradictory. Newduplex_flag/duplex_edgefields preserve the server tokens.- Primo scope values and route updated to the current discovery endpoints (
MyInst_and_CI/CentralIndex/MyInstitution,/discovery/search). - CAS failures now report the stage and host, redact tickets/cookies, and stop before submitting credentials when an interactive challenge appears.
Fixed
- PMS login had no working ticket/session flow, and a failed
ensure()was ignored; uploads now use the real queue page, send one POST, and reconcile against a pre-upload queue snapshot instead of trusting a redirect body. - Library Primo login through an environment proxy failed with
UNSAFE_LEGACY_RENEGOTIATION_DISABLEDand surfaced as a successful empty search. - Blackboard discovery read content explicitly marked
availability.available = "No", duplicated the root listing, ignored pagination, and cached failed reads as empty. - Primo detail metadata was contaminated by UI headings and recommendations; keyed
prm-service-detailsfields are parsed instead.
Install
pip install sustech_survival
pip install "sustech_survival[webui]" # + web UI
pip install "sustech_survival[all]" # everything2026.8.27 — CLI import bug fix + docs CI
Fixed
cli/main.py— level-1 sibling-relative imports (from .X) failed at runtime becausemain.pylives insustech_survival.cli, notsustech_survival.cli.X. Restores transit / faculty / booking / pms / lib-booking / selectcourse / papers commands in the unified CLI (silently broken since 2026.8.25 webui refactor). Thanks @Xiao-La for PR #7.docs.yml— switched frommkdocs gh-deploy --forcetoactions/upload-pages-artifact+actions/deploy-pages@v4(the official GitHub Pages flow). Fixes 7 failing Docs CI runs onmaincaused bygithub-actions[bot]lacking push permission under the official Pages flow.
Added
README.md/README_cn.md— Related projects entry for wormforce/sustech-cli (TypeScript behavioral rewrite; this repo remains the Python behavioral reference) + surface comparison covering CLI runtime, OS keychain, machine-readable contracts, Web UI, off-campus publisher modules,sustech_quickreadcompanion, and license differences..mailmap— unifies Xiao-La's two commit identities (xiao-la <836772730@qq.com>+Joyslog <47178126+Xiao-La@users.noreply.github.com>) into one canonical row on the contributors graph.
Tests
9 new tests (CliRunner + monkeypatch, no network). Full suite passes on macOS and Ubuntu CI.