Skip to main content

hank-sec-egress

hank-sec-egress owns SEC HTTP identity, URL containment, retry/redirect policy, and pacing. Its explicit backends serve different deployment contracts:

  • hank_sec_egress.portable.get() coordinates across local processes through the same version-1 machine limiter at ~/.sec_budget/machine_limiter.state under fcntl.flock, with no process-local bypass. It admits requests against the host's allocated SEC_BUDGET_SITE (prod: 7/1.1s, dev: 3/1.1s), requiring SEC_BUDGET_SITE to be explicitly configured (fails closed with SECSiteBindingError if unallocated). It returns HTTP errors without automatic retries or server-directed sleeps, preserving MCP worker availability. It honors standard Requests proxy and CA environment settings, including destination-specific NO_PROXY exclusions and explicit per-scheme or per-destination overrides — None disables proxying for that key — on redirects. SEC_USER_AGENT overrides the public EDGAR client identity; caller-supplied User-Agent headers cannot override this owner. Requests owns redirect preparation and cross-origin credential isolation; the portable session owns proxy credential isolation, projecting Proxy-Authorization only from the proxy a hop actually uses. The adapter checks SEC URL containment and paces every actual request hop against the machine limiter.
  • hank_sec_egress.get() / async_get() are for managed Unix services. They coordinate the version-1 machine limiter at ~/.sec_budget/machine_limiter.state, including socket-write admission. They require SEC_BUDGET_SITE (prod or dev) and SEC_USER_AGENT. SEC_EXPECTED_MACHINE_IDENTITY is optional and is never an admission condition: site_measurement() reports the configured site, the measured current_machine_identity() (hardware/OS machine identity: macOS IOPlatformUUID, Linux /etc/machine-id, or hostname fallback), and whether the optional expected value matches. Every managed response carries that dict as sec_site_measurement, beside sec_budget_wait_seconds. No private hostnames ship in the package.

Both APIs require a nonempty product-owned caller_label. Both accept only sec.gov URLs, replace caller User-Agent headers, and apply the same compression and redirect bounds. Managed admission retains its bounded retry count. Managed consumers may call effective_headers() for request-time identity projection. Limiter implementation classes and mutable host configuration are not package-root exports.

Public EDGAR MCP submissions metadata deliberately calls SEC directly through portable.get(). Scratch document extraction remains an HTTP call to the hosted EDGAR API. Managed deployments remain pinned to their existing package versions until their deployment configuration and dependency locks are updated together.

Metadata

Release files for hank-sec-egress 0.2.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hank-sec-egress 0.2.9
File Size Uploaded
hank_sec_egress-0.2.9.tar.gz 19.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hank-sec-egress 0.2.9
File Interpreter ABI Platform
hank_sec_egress-0.2.9-py3-none-any.whl Python 3 none any Details

Total release size: 33.1 kB

Release files / hank_sec_egress-0.2.9.tar.gz

Download URL hank_sec_egress-0.2.9.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
926720cbddc9654214af5f84e9e2486d03ee79d8d69d8c4fcba3d2611e19f7e0
BLAKE2b-256 checksum
How to use checksums
56a09be7a4b9e95f92a243289f3b86813d7eb36054e3d8487eb7223d7c9dfff3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release files / hank_sec_egress-0.2.9-py3-none-any.whl

Download URL hank_sec_egress-0.2.9-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1dd3dcfb1f6ea96943a59f3727203d86b349ecd9cb75cb51f1c44d25c632b90d
BLAKE2b-256 checksum
How to use checksums
6f6ae8ca41426c51fa6dc508564e6ef7ba553e42b2b3fee7062fbbaca4792045
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release history Release notifications | RSS feed

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

This release

0.2.9 This release

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page