Skip to content
928 changes: 927 additions & 1 deletion CHANGELOG.md

Large diffs are not rendered by default.

852 changes: 731 additions & 121 deletions README.md

Large diffs are not rendered by default.

15 changes: 9 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,16 @@ dependencies = ["tomli>=1.1.0; python_version < '3.11'"]
#
# `Source` and `Issues` were held back while nodemaven/nodemaven-python was
# internal, because an internal repository answers 404 to an anonymous visitor
# exactly as a repository that does not exist does. They go in with the commit
# that makes it public and not before.
# exactly as a repository that does not exist does. That condition is gone:
# `gh api repos/nodemaven/nodemaven-python --jq .visibility` answered `public`
# on 2026-09-08, so both links resolve for a logged-out reader and can stay.
#
# **They will not appear on the package page that is up now.** PyPI bakes this
# table into each uploaded distribution and never re-reads the repository, so
# 0.1.2's sidebar is fixed whatever this file says. The links arrive with the
# next release; the visibility flip on its own does nothing to them.
# **They still will not appear on the package page that is up now.** PyPI bakes
# this table into each uploaded distribution and never re-reads the repository,
# so 0.1.2's sidebar is fixed whatever this file says - re-read on 2026-09-08,
# it carries Homepage and Documentation and no Source. The links arrive with the
# next release; the visibility flip on its own did nothing to them, which is the
# whole reason this note is worth keeping.
Homepage = "https://nodemaven.com"
Documentation = "https://docs.nodemaven.com"
Source = "https://github.com/nodemaven/nodemaven-python"
Expand Down
27 changes: 26 additions & 1 deletion src/nodemaven/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,53 @@
failures returned three pages - 98 attempts per delivered page against 1.7 in a
healthy session. A library that hid that behind a default would be spending a
shared pool's reputation on your behalf.

Two things here do touch the network, and they are the only two. Both are
explicit calls and neither happens on import:

>>> proxy.check() # one CONNECT, and what the gateway said
>>> Client().me() # the account API: quota, usage, sub-users

``Proxy`` itself still opens nothing. Keeping those on separate objects is what
lets the whole string-building half of this package stay testable with no socket
and no account - see ``nodemaven.check`` and ``nodemaven.api``.
"""

from .api import Client, Page
from .check import Check
from .errors import (
ApiError,
AuthError,
CheckError,
CredentialsError,
NodeMavenError,
NotFoundError,
ParamError,
ProviderError,
RateLimitError,
)
from .providers import Provider, available, load, load_file
from .proxy import Proxy

__version__ = "0.1.2"
__version__ = "0.1.3"

__all__ = [
"Proxy",
"Provider",
"Client",
"Page",
"Check",
"load",
"load_file",
"available",
"NodeMavenError",
"ParamError",
"CredentialsError",
"ProviderError",
"ApiError",
"AuthError",
"NotFoundError",
"RateLimitError",
"CheckError",
"__version__",
]
1,761 changes: 1,761 additions & 0 deletions src/nodemaven/api.py

Large diffs are not rendered by default.

Loading
Loading