crosspoint 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- crosspoint-0.1.0/.gitignore +5 -0
- crosspoint-0.1.0/PKG-INFO +37 -0
- crosspoint-0.1.0/README.md +27 -0
- crosspoint-0.1.0/pyproject.toml +24 -0
- crosspoint-0.1.0/src/crosspoint/__init__.py +8 -0
- crosspoint-0.1.0/src/crosspoint/_options.py +16 -0
- crosspoint-0.1.0/src/crosspoint/py.typed +0 -0
- crosspoint-0.1.0/src/crosspoint/v2026_04.py +40 -0
- crosspoint-0.1.0/src/crosspoint/v2026_10.py +40 -0
- crosspoint-0.1.0/tests/test_client.py +33 -0
- crosspoint-0.1.0/uv.lock +183 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: crosspoint
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Crosspoint API client: the Polar SDK, pointed at Crosspoint
|
|
5
|
+
Project-URL: Documentation, https://app.crosspoint.finance/docs/africa/sdks
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
|
+
Requires-Dist: polar-sdk>=1.0.0a22
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
|
|
11
|
+
# crosspoint
|
|
12
|
+
|
|
13
|
+
Python client for the [Crosspoint](https://crosspoint.finance) API.
|
|
14
|
+
|
|
15
|
+
Crosspoint's API is compatible with the Polar API, so this package is a thin layer over
|
|
16
|
+
the official `polar-sdk`: same methods and models, already pointed at
|
|
17
|
+
`https://api.crosspoint.finance`.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pip install crosspoint
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from crosspoint import Crosspoint
|
|
25
|
+
|
|
26
|
+
# reads CROSSPOINT_ACCESS_TOKEN (an organization access token, cxp_oat_...)
|
|
27
|
+
crosspoint = Crosspoint()
|
|
28
|
+
|
|
29
|
+
for product in crosspoint.products.iter_list(limit=10):
|
|
30
|
+
print(product)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Async: `from crosspoint import CrosspointAsync`. Pin an API version with
|
|
34
|
+
`from crosspoint.v2026_10 import Crosspoint`. Verify webhooks with
|
|
35
|
+
`crosspoint.webhooks.validate_event`.
|
|
36
|
+
|
|
37
|
+
Docs: https://app.crosspoint.finance/docs/africa/sdks
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# crosspoint
|
|
2
|
+
|
|
3
|
+
Python client for the [Crosspoint](https://crosspoint.finance) API.
|
|
4
|
+
|
|
5
|
+
Crosspoint's API is compatible with the Polar API, so this package is a thin layer over
|
|
6
|
+
the official `polar-sdk`: same methods and models, already pointed at
|
|
7
|
+
`https://api.crosspoint.finance`.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install crosspoint
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from crosspoint import Crosspoint
|
|
15
|
+
|
|
16
|
+
# reads CROSSPOINT_ACCESS_TOKEN (an organization access token, cxp_oat_...)
|
|
17
|
+
crosspoint = Crosspoint()
|
|
18
|
+
|
|
19
|
+
for product in crosspoint.products.iter_list(limit=10):
|
|
20
|
+
print(product)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Async: `from crosspoint import CrosspointAsync`. Pin an API version with
|
|
24
|
+
`from crosspoint.v2026_10 import Crosspoint`. Verify webhooks with
|
|
25
|
+
`crosspoint.webhooks.validate_event`.
|
|
26
|
+
|
|
27
|
+
Docs: https://app.crosspoint.finance/docs/africa/sdks
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "crosspoint"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Crosspoint API client: the Polar SDK, pointed at Crosspoint"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
|
+
dependencies = ["polar-sdk>=1.0.0a22"]
|
|
9
|
+
|
|
10
|
+
[project.urls]
|
|
11
|
+
Documentation = "https://app.crosspoint.finance/docs/africa/sdks"
|
|
12
|
+
|
|
13
|
+
[build-system]
|
|
14
|
+
requires = ["hatchling"]
|
|
15
|
+
build-backend = "hatchling.build"
|
|
16
|
+
|
|
17
|
+
[tool.hatch.build.targets.wheel]
|
|
18
|
+
packages = ["src/crosspoint"]
|
|
19
|
+
|
|
20
|
+
[dependency-groups]
|
|
21
|
+
dev = ["pytest>=8"]
|
|
22
|
+
|
|
23
|
+
[tool.uv]
|
|
24
|
+
prerelease = "if-necessary"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""Crosspoint API client: the Polar SDK, pointed at Crosspoint.
|
|
2
|
+
|
|
3
|
+
The default API version is 2026-10; pin one with ``from crosspoint.v2026_10 import ...``.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .v2026_10 import CROSSPOINT_API_URL, Crosspoint, CrosspointAsync, webhooks
|
|
7
|
+
|
|
8
|
+
__all__ = ["CROSSPOINT_API_URL", "Crosspoint", "CrosspointAsync", "webhooks"]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Crosspoint's API is Polar's API: the Polar SDK works once it points at Crosspoint."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
CROSSPOINT_API_URL = "https://api.crosspoint.finance"
|
|
6
|
+
ACCESS_TOKEN_ENV = "CROSSPOINT_ACCESS_TOKEN"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def resolve_access_token(access_token: str | None) -> str:
|
|
10
|
+
token = access_token or os.environ.get(ACCESS_TOKEN_ENV)
|
|
11
|
+
if not token:
|
|
12
|
+
raise ValueError(
|
|
13
|
+
f"Crosspoint: pass access_token or set {ACCESS_TOKEN_ENV} "
|
|
14
|
+
"(an organization access token, cxp_oat_...)."
|
|
15
|
+
)
|
|
16
|
+
return token
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Crosspoint client for API version 2026_04."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from polar.v2026_04 import Polar, PolarAsync
|
|
6
|
+
from polar.v2026_04 import webhooks as webhooks
|
|
7
|
+
|
|
8
|
+
from ._options import CROSSPOINT_API_URL, resolve_access_token
|
|
9
|
+
|
|
10
|
+
__all__ = ["CROSSPOINT_API_URL", "Crosspoint", "CrosspointAsync", "webhooks"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Crosspoint(Polar):
|
|
14
|
+
"""`Crosspoint()` reads CROSSPOINT_ACCESS_TOKEN; pass `base_url` only for local development."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
access_token: str | None = None,
|
|
19
|
+
*,
|
|
20
|
+
base_url: str = CROSSPOINT_API_URL,
|
|
21
|
+
timeout: Any = 5.0,
|
|
22
|
+
) -> None:
|
|
23
|
+
super().__init__(
|
|
24
|
+
resolve_access_token(access_token), base_url=base_url, timeout=timeout
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CrosspointAsync(PolarAsync):
|
|
29
|
+
"""Async client: `async with CrosspointAsync() as crosspoint: ...`."""
|
|
30
|
+
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
access_token: str | None = None,
|
|
34
|
+
*,
|
|
35
|
+
base_url: str = CROSSPOINT_API_URL,
|
|
36
|
+
timeout: Any = 5.0,
|
|
37
|
+
) -> None:
|
|
38
|
+
super().__init__(
|
|
39
|
+
resolve_access_token(access_token), base_url=base_url, timeout=timeout
|
|
40
|
+
)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Crosspoint client for API version 2026_10."""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from polar.v2026_10 import Polar, PolarAsync
|
|
6
|
+
from polar.v2026_10 import webhooks as webhooks
|
|
7
|
+
|
|
8
|
+
from ._options import CROSSPOINT_API_URL, resolve_access_token
|
|
9
|
+
|
|
10
|
+
__all__ = ["CROSSPOINT_API_URL", "Crosspoint", "CrosspointAsync", "webhooks"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Crosspoint(Polar):
|
|
14
|
+
"""`Crosspoint()` reads CROSSPOINT_ACCESS_TOKEN; pass `base_url` only for local development."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
access_token: str | None = None,
|
|
19
|
+
*,
|
|
20
|
+
base_url: str = CROSSPOINT_API_URL,
|
|
21
|
+
timeout: Any = 5.0,
|
|
22
|
+
) -> None:
|
|
23
|
+
super().__init__(
|
|
24
|
+
resolve_access_token(access_token), base_url=base_url, timeout=timeout
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CrosspointAsync(PolarAsync):
|
|
29
|
+
"""Async client: `async with CrosspointAsync() as crosspoint: ...`."""
|
|
30
|
+
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
access_token: str | None = None,
|
|
34
|
+
*,
|
|
35
|
+
base_url: str = CROSSPOINT_API_URL,
|
|
36
|
+
timeout: Any = 5.0,
|
|
37
|
+
) -> None:
|
|
38
|
+
super().__init__(
|
|
39
|
+
resolve_access_token(access_token), base_url=base_url, timeout=timeout
|
|
40
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import httpx
|
|
2
|
+
import pytest
|
|
3
|
+
|
|
4
|
+
from crosspoint import CROSSPOINT_API_URL, Crosspoint
|
|
5
|
+
from crosspoint.v2026_04 import Crosspoint as Crosspoint202604
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def http(client: Crosspoint) -> httpx.Client:
|
|
9
|
+
return client._client._client # the SDK's httpx client
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_talks_to_crosspoint_not_polar() -> None:
|
|
13
|
+
client = http(Crosspoint("cxp_oat_test"))
|
|
14
|
+
|
|
15
|
+
assert str(client.base_url).rstrip("/") == CROSSPOINT_API_URL
|
|
16
|
+
assert client.headers["authorization"] == "Bearer cxp_oat_test"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_local_development_url() -> None:
|
|
20
|
+
client = http(Crosspoint("cxp_oat_test", base_url="http://127.0.0.1:8001"))
|
|
21
|
+
assert str(client.base_url).rstrip("/") == "http://127.0.0.1:8001"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_reads_the_environment(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
25
|
+
monkeypatch.setenv("CROSSPOINT_ACCESS_TOKEN", "cxp_oat_env")
|
|
26
|
+
Crosspoint()
|
|
27
|
+
Crosspoint202604()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_explains_a_missing_token(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
31
|
+
monkeypatch.delenv("CROSSPOINT_ACCESS_TOKEN", raising=False)
|
|
32
|
+
with pytest.raises(ValueError, match="CROSSPOINT_ACCESS_TOKEN"):
|
|
33
|
+
Crosspoint()
|
crosspoint-0.1.0/uv.lock
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
version = 1
|
|
2
|
+
revision = 3
|
|
3
|
+
requires-python = ">=3.11"
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "adaptix"
|
|
7
|
+
version = "3.0.0b12"
|
|
8
|
+
source = { registry = "https://pypi.org/simple" }
|
|
9
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5d/82/aa17eb2968cf7c78caf4915ca62397214f196dc1bef07e4d81bfb4c4abc5/adaptix-3.0.0b12.tar.gz", hash = "sha256:906053a39ff509f0aa4ca9faa07dffa205bd90fa41d9774cd849d3454565b0ea", size = 128634, upload-time = "2026-04-04T17:31:01.084Z" }
|
|
10
|
+
wheels = [
|
|
11
|
+
{ url = "https://files.pythonhosted.org/packages/11/66/abcca849b17e4a3adf5116e58c51471f37264a190cee2c67f1ba57782a7f/adaptix-3.0.0b12-py3-none-any.whl", hash = "sha256:8156f0549b96fcd193d13efca7bfbda39b3d6389085556d930e204c09f9ae6ed", size = 188651, upload-time = "2026-04-04T17:30:59.17Z" },
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
[[package]]
|
|
15
|
+
name = "anyio"
|
|
16
|
+
version = "4.15.1"
|
|
17
|
+
source = { registry = "https://pypi.org/simple" }
|
|
18
|
+
dependencies = [
|
|
19
|
+
{ name = "idna" },
|
|
20
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.15'" },
|
|
21
|
+
]
|
|
22
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a9/d2/f4d173e22df740bc37b1db102b386ba719b66e95b0f0d751f556b387e6d2/anyio-4.15.1.tar.gz", hash = "sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94", size = 276966, upload-time = "2026-09-05T10:42:39.44Z" }
|
|
23
|
+
wheels = [
|
|
24
|
+
{ url = "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl", hash = "sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101", size = 132079, upload-time = "2026-09-05T10:42:37.923Z" },
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[[package]]
|
|
28
|
+
name = "certifi"
|
|
29
|
+
version = "2026.7.22"
|
|
30
|
+
source = { registry = "https://pypi.org/simple" }
|
|
31
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" }
|
|
32
|
+
wheels = [
|
|
33
|
+
{ url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" },
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[[package]]
|
|
37
|
+
name = "colorama"
|
|
38
|
+
version = "0.4.6"
|
|
39
|
+
source = { registry = "https://pypi.org/simple" }
|
|
40
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
41
|
+
wheels = [
|
|
42
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[[package]]
|
|
46
|
+
name = "crosspoint"
|
|
47
|
+
version = "0.1.0"
|
|
48
|
+
source = { editable = "." }
|
|
49
|
+
dependencies = [
|
|
50
|
+
{ name = "polar-sdk" },
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[package.dev-dependencies]
|
|
54
|
+
dev = [
|
|
55
|
+
{ name = "pytest" },
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
[package.metadata]
|
|
59
|
+
requires-dist = [{ name = "polar-sdk", specifier = ">=1.0.0a22" }]
|
|
60
|
+
|
|
61
|
+
[package.metadata.requires-dev]
|
|
62
|
+
dev = [{ name = "pytest", specifier = ">=8" }]
|
|
63
|
+
|
|
64
|
+
[[package]]
|
|
65
|
+
name = "h11"
|
|
66
|
+
version = "0.16.0"
|
|
67
|
+
source = { registry = "https://pypi.org/simple" }
|
|
68
|
+
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" }
|
|
69
|
+
wheels = [
|
|
70
|
+
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
[[package]]
|
|
74
|
+
name = "httpcore"
|
|
75
|
+
version = "1.0.9"
|
|
76
|
+
source = { registry = "https://pypi.org/simple" }
|
|
77
|
+
dependencies = [
|
|
78
|
+
{ name = "certifi" },
|
|
79
|
+
{ name = "h11" },
|
|
80
|
+
]
|
|
81
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" }
|
|
82
|
+
wheels = [
|
|
83
|
+
{ url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" },
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
[[package]]
|
|
87
|
+
name = "httpx"
|
|
88
|
+
version = "0.28.1"
|
|
89
|
+
source = { registry = "https://pypi.org/simple" }
|
|
90
|
+
dependencies = [
|
|
91
|
+
{ name = "anyio" },
|
|
92
|
+
{ name = "certifi" },
|
|
93
|
+
{ name = "httpcore" },
|
|
94
|
+
{ name = "idna" },
|
|
95
|
+
]
|
|
96
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" }
|
|
97
|
+
wheels = [
|
|
98
|
+
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
[[package]]
|
|
102
|
+
name = "idna"
|
|
103
|
+
version = "3.20"
|
|
104
|
+
source = { registry = "https://pypi.org/simple" }
|
|
105
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f5/08/8eea9d4b8302028f3abb2c0813953f7aec26d33b7a8960ed760e65ff29fa/idna-3.20.tar.gz", hash = "sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44", size = 216463, upload-time = "2026-09-17T14:11:04.752Z" }
|
|
106
|
+
wheels = [
|
|
107
|
+
{ url = "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl", hash = "sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c", size = 69583, upload-time = "2026-09-17T14:11:03.168Z" },
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
[[package]]
|
|
111
|
+
name = "iniconfig"
|
|
112
|
+
version = "2.3.1"
|
|
113
|
+
source = { registry = "https://pypi.org/simple" }
|
|
114
|
+
sdist = { url = "https://files.pythonhosted.org/packages/01/e1/2069291243c926a2ff1cd706c7f3eeb9b62144bf60f77c9fb9ff2fb26bd3/iniconfig-2.3.1.tar.gz", hash = "sha256:67f4b9c50da0dedf52af349e7749a80a9057a5031199791b906c3bb3ae878960", size = 21209, upload-time = "2026-10-06T22:48:38.076Z" }
|
|
115
|
+
wheels = [
|
|
116
|
+
{ url = "https://files.pythonhosted.org/packages/56/43/4ca9e49d27a1fcf6bece6f6aec0ea46bb9112489b93d4b688fb415457bdb/iniconfig-2.3.1-py3-none-any.whl", hash = "sha256:9121e2c1fdb355232495be3194c8dfe87ccc2d5dee45947b78e68f499790d7a7", size = 7552, upload-time = "2026-10-06T22:48:36.959Z" },
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
[[package]]
|
|
120
|
+
name = "packaging"
|
|
121
|
+
version = "26.3"
|
|
122
|
+
source = { registry = "https://pypi.org/simple" }
|
|
123
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" }
|
|
124
|
+
wheels = [
|
|
125
|
+
{ url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" },
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[[package]]
|
|
129
|
+
name = "pluggy"
|
|
130
|
+
version = "1.6.0"
|
|
131
|
+
source = { registry = "https://pypi.org/simple" }
|
|
132
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" }
|
|
133
|
+
wheels = [
|
|
134
|
+
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[[package]]
|
|
138
|
+
name = "polar-sdk"
|
|
139
|
+
version = "1.0.2"
|
|
140
|
+
source = { registry = "https://pypi.org/simple" }
|
|
141
|
+
dependencies = [
|
|
142
|
+
{ name = "adaptix" },
|
|
143
|
+
{ name = "httpx" },
|
|
144
|
+
{ name = "typing-extensions" },
|
|
145
|
+
]
|
|
146
|
+
sdist = { url = "https://files.pythonhosted.org/packages/10/b4/6ff182038bd8d133c84061ed2d8c907f9f53f3ca3a25cf1726bee2dbec42/polar_sdk-1.0.2.tar.gz", hash = "sha256:9df91d57f7b9cb62162c1e64274e8b3cf556e4db711ac9c49b928f6bef9aeada", size = 327581, upload-time = "2026-10-02T07:00:30.008Z" }
|
|
147
|
+
wheels = [
|
|
148
|
+
{ url = "https://files.pythonhosted.org/packages/92/e2/abec9d0e022b0cde10333fd937dba2b7057cacd3fe0a90b2c3340a02cc22/polar_sdk-1.0.2-py3-none-any.whl", hash = "sha256:170379262decb1c390e5e3c69b819cff1e3866045d08069bd49097e89760963a", size = 458808, upload-time = "2026-10-02T07:00:28.451Z" },
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
[[package]]
|
|
152
|
+
name = "pygments"
|
|
153
|
+
version = "2.21.0"
|
|
154
|
+
source = { registry = "https://pypi.org/simple" }
|
|
155
|
+
sdist = { url = "https://files.pythonhosted.org/packages/49/2e/ced460408999b33da6b31b0021b0f37d329e202d4169aeb164493778f25b/pygments-2.21.0.tar.gz", hash = "sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c", size = 5005329, upload-time = "2026-08-17T08:02:48.824Z" }
|
|
156
|
+
wheels = [
|
|
157
|
+
{ url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9", size = 1250147, upload-time = "2026-08-17T08:02:44.912Z" },
|
|
158
|
+
]
|
|
159
|
+
|
|
160
|
+
[[package]]
|
|
161
|
+
name = "pytest"
|
|
162
|
+
version = "9.1.1"
|
|
163
|
+
source = { registry = "https://pypi.org/simple" }
|
|
164
|
+
dependencies = [
|
|
165
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
166
|
+
{ name = "iniconfig" },
|
|
167
|
+
{ name = "packaging" },
|
|
168
|
+
{ name = "pluggy" },
|
|
169
|
+
{ name = "pygments" },
|
|
170
|
+
]
|
|
171
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
|
|
172
|
+
wheels = [
|
|
173
|
+
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
|
|
174
|
+
]
|
|
175
|
+
|
|
176
|
+
[[package]]
|
|
177
|
+
name = "typing-extensions"
|
|
178
|
+
version = "4.16.0"
|
|
179
|
+
source = { registry = "https://pypi.org/simple" }
|
|
180
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" }
|
|
181
|
+
wheels = [
|
|
182
|
+
{ url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
|
|
183
|
+
]
|