python-eveonline 0.2.2__tar.gz → 0.4.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.
- python_eveonline-0.4.0/PKG-INFO +84 -0
- python_eveonline-0.4.0/README.md +52 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/pyproject.toml +13 -1
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/__init__.py +2 -0
- python_eveonline-0.4.0/src/eveonline/client.py +937 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/const.py +3 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/models.py +169 -0
- python_eveonline-0.4.0/src/python_eveonline.egg-info/PKG-INFO +84 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/SOURCES.txt +1 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_client_authenticated.py +567 -0
- python_eveonline-0.4.0/tests/test_etag_caching.py +653 -0
- python_eveonline-0.2.2/PKG-INFO +0 -144
- python_eveonline-0.2.2/README.md +0 -112
- python_eveonline-0.2.2/src/eveonline/client.py +0 -499
- python_eveonline-0.2.2/src/python_eveonline.egg-info/PKG-INFO +0 -144
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/LICENSE +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/setup.cfg +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/auth.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/exceptions.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/py.typed +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/dependency_links.txt +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/requires.txt +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/top_level.txt +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_auth.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_client_public.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_const.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_exceptions.py +0 -0
- {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_models.py +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python-eveonline
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Async Python client for the Eve Online ESI API
|
|
5
|
+
Author: Ronald van der Meer
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/ronaldvdmeer/python-eveonline
|
|
8
|
+
Project-URL: Repository, https://github.com/ronaldvdmeer/python-eveonline
|
|
9
|
+
Project-URL: Issues, https://github.com/ronaldvdmeer/python-eveonline/issues
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Topic :: Games/Entertainment
|
|
17
|
+
Classifier: Typing :: Typed
|
|
18
|
+
Classifier: Framework :: AsyncIO
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
25
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
27
|
+
Requires-Dist: aioresponses>=0.7; extra == "dev"
|
|
28
|
+
Requires-Dist: mypy>=1.8; extra == "dev"
|
|
29
|
+
Requires-Dist: pylint>=3.0; extra == "dev"
|
|
30
|
+
Requires-Dist: ruff>=0.3; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# python-eveonline
|
|
34
|
+
|
|
35
|
+
[](https://pypi.org/project/python-eveonline/)
|
|
36
|
+
[](https://pypi.org/project/python-eveonline/)
|
|
37
|
+
[](https://github.com/ronaldvdmeer/python-eveonline/blob/main/LICENSE)
|
|
38
|
+
[](https://github.com/ronaldvdmeer/python-eveonline/releases)
|
|
39
|
+
|
|
40
|
+
Async Python client library for the [Eve Online ESI API](https://esi.evetech.net/ui/).
|
|
41
|
+
|
|
42
|
+
Built for use with [Home Assistant](https://www.home-assistant.io/) but can be used standalone in any async Python project.
|
|
43
|
+
|
|
44
|
+
## Features
|
|
45
|
+
|
|
46
|
+
- **Fully async** — built on [aiohttp](https://docs.aiohttp.org/)
|
|
47
|
+
- **Typed models** — all API responses are frozen dataclasses with full type annotations
|
|
48
|
+
- **23 endpoints** — public (server, character, corporation, universe) and authenticated (wallet, skills, location, industry, market, mail, notifications, clones, fatigue, contacts, calendar, loyalty, killmails)
|
|
49
|
+
- **Abstract auth** — implement `AbstractAuth` to plug in any OAuth2 token source
|
|
50
|
+
- **Type-safe** — PEP 561 compatible (`py.typed`), strict mypy configuration
|
|
51
|
+
- **Tested** — ≥98% test coverage
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install python-eveonline
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Quick start
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
import asyncio
|
|
63
|
+
import aiohttp
|
|
64
|
+
from eveonline import EveOnlineClient
|
|
65
|
+
|
|
66
|
+
async def main():
|
|
67
|
+
async with aiohttp.ClientSession() as session:
|
|
68
|
+
client = EveOnlineClient(session=session)
|
|
69
|
+
status = await client.async_get_server_status()
|
|
70
|
+
print(f"{status.players} players online (v{status.server_version})")
|
|
71
|
+
|
|
72
|
+
asyncio.run(main())
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Documentation
|
|
76
|
+
|
|
77
|
+
- [**Quickstart**](docs/quickstart.md) — public and authenticated endpoint examples
|
|
78
|
+
- [**Authentication**](docs/authentication.md) — implementing `AbstractAuth`, required OAuth scopes
|
|
79
|
+
- [**Endpoints**](docs/endpoints.md) — full reference with field tables for all 23 methods
|
|
80
|
+
- [**Error Handling**](docs/error-handling.md) — exception hierarchy, rate limiting, ESI cache times
|
|
81
|
+
|
|
82
|
+
## License
|
|
83
|
+
|
|
84
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# python-eveonline
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/python-eveonline/)
|
|
4
|
+
[](https://pypi.org/project/python-eveonline/)
|
|
5
|
+
[](https://github.com/ronaldvdmeer/python-eveonline/blob/main/LICENSE)
|
|
6
|
+
[](https://github.com/ronaldvdmeer/python-eveonline/releases)
|
|
7
|
+
|
|
8
|
+
Async Python client library for the [Eve Online ESI API](https://esi.evetech.net/ui/).
|
|
9
|
+
|
|
10
|
+
Built for use with [Home Assistant](https://www.home-assistant.io/) but can be used standalone in any async Python project.
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- **Fully async** — built on [aiohttp](https://docs.aiohttp.org/)
|
|
15
|
+
- **Typed models** — all API responses are frozen dataclasses with full type annotations
|
|
16
|
+
- **23 endpoints** — public (server, character, corporation, universe) and authenticated (wallet, skills, location, industry, market, mail, notifications, clones, fatigue, contacts, calendar, loyalty, killmails)
|
|
17
|
+
- **Abstract auth** — implement `AbstractAuth` to plug in any OAuth2 token source
|
|
18
|
+
- **Type-safe** — PEP 561 compatible (`py.typed`), strict mypy configuration
|
|
19
|
+
- **Tested** — ≥98% test coverage
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install python-eveonline
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick start
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
import asyncio
|
|
31
|
+
import aiohttp
|
|
32
|
+
from eveonline import EveOnlineClient
|
|
33
|
+
|
|
34
|
+
async def main():
|
|
35
|
+
async with aiohttp.ClientSession() as session:
|
|
36
|
+
client = EveOnlineClient(session=session)
|
|
37
|
+
status = await client.async_get_server_status()
|
|
38
|
+
print(f"{status.players} players online (v{status.server_version})")
|
|
39
|
+
|
|
40
|
+
asyncio.run(main())
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Documentation
|
|
44
|
+
|
|
45
|
+
- [**Quickstart**](docs/quickstart.md) — public and authenticated endpoint examples
|
|
46
|
+
- [**Authentication**](docs/authentication.md) — implementing `AbstractAuth`, required OAuth scopes
|
|
47
|
+
- [**Endpoints**](docs/endpoints.md) — full reference with field tables for all 23 methods
|
|
48
|
+
- [**Error Handling**](docs/error-handling.md) — exception hierarchy, rate limiting, ESI cache times
|
|
49
|
+
|
|
50
|
+
## License
|
|
51
|
+
|
|
52
|
+
[MIT](LICENSE)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-eveonline"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.4.0"
|
|
8
8
|
description = "Async Python client for the Eve Online ESI API"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -58,6 +58,10 @@ addopts = [
|
|
|
58
58
|
"--cov-report=term-missing",
|
|
59
59
|
"--cov-fail-under=90",
|
|
60
60
|
"-v",
|
|
61
|
+
"-m", "not integration",
|
|
62
|
+
]
|
|
63
|
+
markers = [
|
|
64
|
+
"integration: live ESI API tests — require network access; authenticated tests also require ESI_TOKEN env var",
|
|
61
65
|
]
|
|
62
66
|
|
|
63
67
|
# -- coverage ----------------------------------------------------------------
|
|
@@ -160,6 +164,13 @@ ignore = [
|
|
|
160
164
|
"src/eveonline/const.py" = [
|
|
161
165
|
"S105", # SSO_TOKEN_URL is a URL, not a password
|
|
162
166
|
]
|
|
167
|
+
"scripts/**/*.py" = [
|
|
168
|
+
"D", # No docstring requirements in scripts
|
|
169
|
+
"T20", # Allow print in scripts (CLI output)
|
|
170
|
+
"ANN", # No annotation requirements in scripts
|
|
171
|
+
"S105", # URL constants that look like passwords
|
|
172
|
+
"S310", # URL open is expected in these scripts
|
|
173
|
+
]
|
|
163
174
|
|
|
164
175
|
[tool.ruff.lint.pydocstyle]
|
|
165
176
|
convention = "google"
|
|
@@ -181,3 +192,4 @@ disable = [
|
|
|
181
192
|
|
|
182
193
|
[tool.pylint.design]
|
|
183
194
|
max-args = 10
|
|
195
|
+
max-public-methods = 30
|
|
@@ -13,6 +13,7 @@ from .exceptions import (
|
|
|
13
13
|
EveOnlineNotFoundError,
|
|
14
14
|
EveOnlineRateLimitError,
|
|
15
15
|
)
|
|
16
|
+
from .models import CharacterKillmail
|
|
16
17
|
|
|
17
18
|
try:
|
|
18
19
|
__version__ = version("python-eveonline")
|
|
@@ -21,6 +22,7 @@ except PackageNotFoundError:
|
|
|
21
22
|
|
|
22
23
|
__all__ = [
|
|
23
24
|
"AbstractAuth",
|
|
25
|
+
"CharacterKillmail",
|
|
24
26
|
"EveOnlineAuthenticationError",
|
|
25
27
|
"EveOnlineClient",
|
|
26
28
|
"EveOnlineConnectionError",
|