Python-3xui 0.0.8.post1__tar.gz → 0.0.9.post2__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.
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/PKG-INFO +12 -4
- python_3xui-0.0.9.post2/README.md +16 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/pyproject.toml +58 -58
- python_3xui-0.0.9.post2/python_3xui/__init__.py +9 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/python_3xui/api.py +271 -94
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/python_3xui/base_model.py +15 -15
- python_3xui-0.0.9.post2/python_3xui/custom_exceptions.py +27 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/python_3xui/endpoints.py +69 -66
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/python_3xui/models.py +73 -38
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/python_3xui/util.py +52 -23
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/conftest.py +1 -8
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/gather_response_stubs.py +2 -2
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/test_endpoints_inbounds.py +10 -4
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/test_non_idempotent_endpoints_clients.py +32 -33
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/test_non_idempotent_endpoints_inbounds.py +1 -0
- python_3xui-0.0.9.post2/tests/test_xuiclient_helpers.py +188 -0
- python_3xui-0.0.8.post1/README.md +0 -8
- python_3xui-0.0.8.post1/python_3xui/__init__.py +0 -5
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/.gitignore +0 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/LICENSE +0 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/pytest.ini +0 -0
- {python_3xui-0.0.8.post1 → python_3xui-0.0.9.post2}/tests/test_endpoints_clients.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Python-3xui
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9.post2
|
|
4
4
|
Summary: 3x-ui wrapper for python
|
|
5
5
|
Project-URL: Homepage, https://github.com/Artem-Potapov/3x-py
|
|
6
6
|
Project-URL: Issues, https://github.com/Artem-Potapov/3x-py/issues
|
|
@@ -12,7 +12,7 @@ Classifier: Intended Audience :: Developers
|
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Requires-Python: >=3.11
|
|
15
|
-
Requires-Dist: async-lru~=2.
|
|
15
|
+
Requires-Dist: async-lru~=2.3.0
|
|
16
16
|
Requires-Dist: dotenv~=0.9.9
|
|
17
17
|
Requires-Dist: httpx~=0.28.1
|
|
18
18
|
Requires-Dist: pydantic<3,~=2.12.5
|
|
@@ -28,7 +28,15 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
<p>I'm not expecting much to be honest, so please feel free to fork it if I abandon the project and you need it!</p>
|
|
29
29
|
<p>Also, if you REALLY want it I can give you the ownership if I step down, you can find my email in the pyproject.toml (I don't check it that much but trust me I do)</p>
|
|
30
30
|
|
|
31
|
-
<h2>0.0.
|
|
31
|
+
<h2>0.0.9 Release Notes</h2>
|
|
32
32
|
<ul>
|
|
33
|
-
<li>
|
|
33
|
+
<li>Fix _request_update_client for it to actually work and NOT create "zombies"</li>
|
|
34
|
+
<li>DTO un-split because fields reset when not provided, so full inbounds must be fetched</li>
|
|
35
|
+
<li>New method: update_client_by_tgid</li>
|
|
36
|
+
<li>Fixed test suite</li>
|
|
37
|
+
<li>Fix from_response and from_list</li>
|
|
38
|
+
<li>Remove obsolete and useless client fields from models</li>
|
|
39
|
+
<li>Inbound settings actually get parsed properly into ClientsSettings</li>
|
|
40
|
+
<li>New asyncio task management so they won't get destroyed when GCed</li>
|
|
41
|
+
<li>XUIClient async_lru cache now binds to event loop at runtime, not in initialization</li>
|
|
34
42
|
</ul>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<h1>Hi! This is my example python 3x-ui wrapper!</h1>
|
|
2
|
+
<p>I'm not expecting much to be honest, so please feel free to fork it if I abandon the project and you need it!</p>
|
|
3
|
+
<p>Also, if you REALLY want it I can give you the ownership if I step down, you can find my email in the pyproject.toml (I don't check it that much but trust me I do)</p>
|
|
4
|
+
|
|
5
|
+
<h2>0.0.9 Release Notes</h2>
|
|
6
|
+
<ul>
|
|
7
|
+
<li>Fix _request_update_client for it to actually work and NOT create "zombies"</li>
|
|
8
|
+
<li>DTO un-split because fields reset when not provided, so full inbounds must be fetched</li>
|
|
9
|
+
<li>New method: update_client_by_tgid</li>
|
|
10
|
+
<li>Fixed test suite</li>
|
|
11
|
+
<li>Fix from_response and from_list</li>
|
|
12
|
+
<li>Remove obsolete and useless client fields from models</li>
|
|
13
|
+
<li>Inbound settings actually get parsed properly into ClientsSettings</li>
|
|
14
|
+
<li>New asyncio task management so they won't get destroyed when GCed</li>
|
|
15
|
+
<li>XUIClient async_lru cache now binds to event loop at runtime, not in initialization</li>
|
|
16
|
+
</ul>
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
[project]
|
|
2
|
-
name = "Python-3xui"
|
|
3
|
-
version = "0.0.
|
|
4
|
-
authors = [
|
|
5
|
-
{ name="JustMe_001", email="justme001.causation755@passinbox.com" },
|
|
6
|
-
]
|
|
7
|
-
description = "3x-ui wrapper for python"
|
|
8
|
-
readme = "README.md"
|
|
9
|
-
|
|
10
|
-
requires-python = ">=3.11"
|
|
11
|
-
classifiers = [
|
|
12
|
-
"Programming Language :: Python :: 3",
|
|
13
|
-
"Operating System :: OS Independent",
|
|
14
|
-
|
|
15
|
-
"Development Status :: 3 - Alpha",
|
|
16
|
-
"Intended Audience :: Developers",
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
license = "Apache-2.0"
|
|
20
|
-
license-files = ["LICEN[CS]E*"]
|
|
21
|
-
|
|
22
|
-
dependencies = [
|
|
23
|
-
"pydantic ~= 2.12.5, < 3",
|
|
24
|
-
"httpx ~=0.28.1",
|
|
25
|
-
"dotenv ~= 0.9.9",
|
|
26
|
-
"async_lru ~= 2.
|
|
27
|
-
"pyotp ~= 2.9.0"
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
[project.optional-dependencies]
|
|
32
|
-
testing = ["requests", "pytest", "pytest-asyncio", "pytest-dependency"]
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
[project.urls]
|
|
36
|
-
Homepage = "https://github.com/Artem-Potapov/3x-py"
|
|
37
|
-
Issues = "https://github.com/Artem-Potapov/3x-py/issues"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
[build-system]
|
|
41
|
-
requires = ["hatchling >= 1.26"]
|
|
42
|
-
build-backend = "hatchling.build"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
[tool.hatch.build.targets.sdist]
|
|
46
|
-
include = [
|
|
47
|
-
"python_3xui/*.py",
|
|
48
|
-
"/tests/*.py",
|
|
49
|
-
"/tests/pytest.ini"
|
|
50
|
-
]
|
|
51
|
-
exclude = [
|
|
52
|
-
"requirements.txt",
|
|
53
|
-
"main.py",
|
|
54
|
-
".env"
|
|
55
|
-
]
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
[[tool.hatch.envs.hatch-test.matrix]]
|
|
1
|
+
[project]
|
|
2
|
+
name = "Python-3xui"
|
|
3
|
+
version = "0.0.9r2"
|
|
4
|
+
authors = [
|
|
5
|
+
{ name="JustMe_001", email="justme001.causation755@passinbox.com" },
|
|
6
|
+
]
|
|
7
|
+
description = "3x-ui wrapper for python"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Programming Language :: Python :: 3",
|
|
13
|
+
"Operating System :: OS Independent",
|
|
14
|
+
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
license = "Apache-2.0"
|
|
20
|
+
license-files = ["LICEN[CS]E*"]
|
|
21
|
+
|
|
22
|
+
dependencies = [
|
|
23
|
+
"pydantic ~= 2.12.5, < 3",
|
|
24
|
+
"httpx ~=0.28.1",
|
|
25
|
+
"dotenv ~= 0.9.9",
|
|
26
|
+
"async_lru ~= 2.3.0",
|
|
27
|
+
"pyotp ~= 2.9.0"
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
[project.optional-dependencies]
|
|
32
|
+
testing = ["requests", "pytest", "pytest-asyncio", "pytest-dependency"]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Homepage = "https://github.com/Artem-Potapov/3x-py"
|
|
37
|
+
Issues = "https://github.com/Artem-Potapov/3x-py/issues"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
[build-system]
|
|
41
|
+
requires = ["hatchling >= 1.26"]
|
|
42
|
+
build-backend = "hatchling.build"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
[tool.hatch.build.targets.sdist]
|
|
46
|
+
include = [
|
|
47
|
+
"python_3xui/*.py",
|
|
48
|
+
"/tests/*.py",
|
|
49
|
+
"/tests/pytest.ini"
|
|
50
|
+
]
|
|
51
|
+
exclude = [
|
|
52
|
+
"requirements.txt",
|
|
53
|
+
"main.py",
|
|
54
|
+
".env"
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
[[tool.hatch.envs.hatch-test.matrix]]
|
|
59
59
|
python = ["3.13", "3.12", "3.11"]
|