• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

un33k / python-ipware / 35773590964
99%
master: 93%

Build:
Build:
LAST BUILD BRANCH: fix/ci-pr-only
DEFAULT BRANCH: master
Ran 22 Sep 2026 07:24PM UTC
Jobs 7
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2026 07:24PM UTC coverage: 95.189% (+0.03%) from 95.161%
35773590964

push

github

web-flow
Release 4.0.0: modern engine by default, legacy frozen (#27)

* Release 4.0.0: modern engine by default, legacy frozen

- Add an algorithm router: IpWare(algorithm="auto"|"modern"|"legacy").
  "auto" resolves to "modern"; "legacy" is available only when requested.
- Move the v3 algorithm to python_ipware/legacy/ unchanged (byte-identical),
  and the v3 tests to tests/legacy/ unchanged, with a runner that checks them
  against the legacy engine.
- Add the modern engine: hardened IPv6, bracketed-port and IPv4-mapped parsing,
  and an expanded default header list. The full v3 suite passes against it.
- Modernize packaging: PEP 621 pyproject with Hatchling, SPDX license,
  Python 3.9-3.13, ruff lint.* config.
- Fix CI: current action versions, supported Pythons, legacy suite step,
  twine check.
- Rewrite README around the modern engine with Mermaid diagrams, Maintained
  with Dojo badge and sponsors; move the v3 guide to the legacy folder.

* README: keep diagrams framework-neutral (drop Django-specific request.META)

* Declare Python 3.9+ open-ended support; add 3.14 to classifiers and CI

* README: note no upper Python cap and invite reports on newer versions

* Add SECURITY.md: report vulnerabilities privately by email, not public issues or PRs

* note

* Fix modern right-most proxy_list bug; review fixes

- Modern engine: with leftmost=False, proxy_list validated the raw chain but
  picked the client from the reversed chain, so right-most networks with a
  trusted proxy list returned None. Put the chain in client-first order once,
  before validation, matching legacy.
- Strict mode now rejects empty entries (e.g. "1.2.3.4,, 5.6.7.8"), as v3 does.
- Tests: right-most + proxy_list regressions, strict empty-token tests, and a
  legacy-vs-modern differential test over 3,000+ well-formed combinations.
  These fail 211 times against the previous engine.
- Docs: replace "verified superset of v3" with the accurate claim and list the
  two remaining malformed... (continued)

160 of 169 new or added lines in 7 files covered. (94.67%)

277 of 291 relevant lines covered (95.19%)

6.66 hits per line

Jobs
ID Job ID Ran Files Coverage
1 python-3.11 - 35773590964.1 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
2 python-3.12 - 35773590964.2 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
3 python-pypy3.10 - 35773590964.3 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
4 python-3.9 - 35773590964.4 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
5 python-3.10 - 35773590964.5 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
6 python-3.13 - 35773590964.6 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
7 python-3.14 - 35773590964.7 22 Sep 2026 07:25PM UTC 8
95.19
GitHub Action Run
Source Files on build 35773590964
  • Tree
  • List 8
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 9034c38f on github
  • Prev Build on main (#8758933103)
  • Next Build on main (#35775958826)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc