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.
Files changed (28) hide show
  1. python_eveonline-0.4.0/PKG-INFO +84 -0
  2. python_eveonline-0.4.0/README.md +52 -0
  3. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/pyproject.toml +13 -1
  4. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/__init__.py +2 -0
  5. python_eveonline-0.4.0/src/eveonline/client.py +937 -0
  6. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/const.py +3 -0
  7. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/models.py +169 -0
  8. python_eveonline-0.4.0/src/python_eveonline.egg-info/PKG-INFO +84 -0
  9. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/SOURCES.txt +1 -0
  10. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_client_authenticated.py +567 -0
  11. python_eveonline-0.4.0/tests/test_etag_caching.py +653 -0
  12. python_eveonline-0.2.2/PKG-INFO +0 -144
  13. python_eveonline-0.2.2/README.md +0 -112
  14. python_eveonline-0.2.2/src/eveonline/client.py +0 -499
  15. python_eveonline-0.2.2/src/python_eveonline.egg-info/PKG-INFO +0 -144
  16. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/LICENSE +0 -0
  17. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/setup.cfg +0 -0
  18. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/auth.py +0 -0
  19. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/exceptions.py +0 -0
  20. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/eveonline/py.typed +0 -0
  21. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/dependency_links.txt +0 -0
  22. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/requires.txt +0 -0
  23. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/src/python_eveonline.egg-info/top_level.txt +0 -0
  24. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_auth.py +0 -0
  25. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_client_public.py +0 -0
  26. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_const.py +0 -0
  27. {python_eveonline-0.2.2 → python_eveonline-0.4.0}/tests/test_exceptions.py +0 -0
  28. {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
+ [![PyPI](https://img.shields.io/pypi/v/python-eveonline.svg)](https://pypi.org/project/python-eveonline/)
36
+ [![Python](https://img.shields.io/pypi/pyversions/python-eveonline.svg)](https://pypi.org/project/python-eveonline/)
37
+ [![License](https://img.shields.io/github/license/ronaldvdmeer/python-eveonline.svg)](https://github.com/ronaldvdmeer/python-eveonline/blob/main/LICENSE)
38
+ [![GitHub Release](https://img.shields.io/github/v/release/ronaldvdmeer/python-eveonline.svg)](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
+ [![PyPI](https://img.shields.io/pypi/v/python-eveonline.svg)](https://pypi.org/project/python-eveonline/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/python-eveonline.svg)](https://pypi.org/project/python-eveonline/)
5
+ [![License](https://img.shields.io/github/license/ronaldvdmeer/python-eveonline.svg)](https://github.com/ronaldvdmeer/python-eveonline/blob/main/LICENSE)
6
+ [![GitHub Release](https://img.shields.io/github/v/release/ronaldvdmeer/python-eveonline.svg)](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.2.2"
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",