Sans

Latest version: v1.2.6

Safety actively analyzes 710445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 5

1.2.1

- Adds `sans.deferred()` and `sans.locked()` for inspecting the state of the internal ratelimiting lock
**Full Changelog**: https://github.com/Zephyrkul/sans/compare/1.2.0...1.2.1

1.2.0

- `sans.Client` and `sans.AsyncClient` are now actual types.
- `sans.ClientType` and `sans.AsyncClientType` remain as aliases for backwards compatibility.
- full [`trio`](https://pypi.org/project/trio/) support
- internal ratelimiting lock now uses a FIFO queue
- full [Telegrams API](https://www.nationstates.net/pages/api.html#telegrams) support
- Use by passing an instance of `sans.TelegramLimiter` ([example on README](https://github.com/Zephyrkul/sans/tree/1.2.0/#telegrams))
- Using `sans.TelegramLimiter` is optional but can preserve API requests
- Fix issues with POST coercion for private commands
- Added `--verbose` / `-v` flag to `sans` CLI tool, and refactored for logging
- Mark `lock` module as private

**Full Changelog**: https://github.com/Zephyrkul/sans/compare/1.1.4...1.2.0

1.1.4

- Fix empty `q=` parameter causing 400: Bad Request errors (thanks, jmikk)
- Re-add script info to `sans.set_agent` (regression from [1.0.0a3](https://github.com/Zephyrkul/sans/releases/tag/1.0.0a3))
- Fix private shard authentication being handled incorrectly

1.1.3

- fix TypeError when creating a `sans.Client` or `sans.AsyncClient`
- Happy 69th commit

1.1.2

- Fix `sans.ClientType` and `sans.AsyncClientType` not being available during type analysis

1.1.1

- Fix a TypeError with `sans.prepare_and_execute`

Page 2 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.