deezer-oauth-cli 1.7.0__tar.gz → 1.8.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 (25) hide show
  1. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/PKG-INFO +4 -3
  2. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/README.md +2 -2
  3. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/pyproject.toml +24 -44
  4. deezer_oauth_cli-1.8.0/src/deezer_oauth/__init__.py +1 -0
  5. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/PKG-INFO +4 -3
  6. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/tests/test_dunder_main.py +1 -1
  7. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/tests/test_main.py +1 -1
  8. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/tests/test_server.py +3 -6
  9. deezer_oauth_cli-1.7.0/src/deezer_oauth/__init__.py +0 -1
  10. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/LICENSE +0 -0
  11. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/setup.cfg +0 -0
  12. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/__main__.py +0 -0
  13. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/client.py +0 -0
  14. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/constants.py +0 -0
  15. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/files.py +0 -0
  16. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/main.py +0 -0
  17. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/py.typed +0 -0
  18. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/server.py +0 -0
  19. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/SOURCES.txt +0 -0
  20. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/dependency_links.txt +0 -0
  21. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/entry_points.txt +0 -0
  22. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/requires.txt +0 -0
  23. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/top_level.txt +0 -0
  24. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/tests/test_client.py +0 -0
  25. {deezer_oauth_cli-1.7.0 → deezer_oauth_cli-1.8.0}/tests/test_files.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deezer-oauth-cli
3
- Version: 1.7.0
3
+ Version: 1.8.0
4
4
  Summary: A small CLI to quickly obtain an API token for Deezer API.
5
5
  Author-email: Bruno Alla <alla.brunoo@gmail.com>
6
6
  License-Expression: MIT
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
23
24
  Classifier: Topic :: Software Development :: Libraries
24
25
  Requires-Python: >=3.10
25
26
  Description-Content-Type: text/markdown
@@ -46,8 +47,8 @@ Dynamic: license-file
46
47
  <a href="https://github.com/astral-sh/ruff">
47
48
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
48
49
  </a>
49
- <a href="https://github.com/pre-commit/pre-commit">
50
- <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
50
+ <a href="https://github.com/j178/prek">
51
+ <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json" alt="prek">
51
52
  </a>
52
53
  </p>
53
54
  <p align="center">
@@ -15,8 +15,8 @@
15
15
  <a href="https://github.com/astral-sh/ruff">
16
16
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
17
17
  </a>
18
- <a href="https://github.com/pre-commit/pre-commit">
19
- <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
18
+ <a href="https://github.com/j178/prek">
19
+ <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json" alt="prek">
20
20
  </a>
21
21
  </p>
22
22
  <p align="center">
@@ -4,7 +4,7 @@ requires = [ "setuptools>=77.0.3" ]
4
4
 
5
5
  [project]
6
6
  name = "deezer-oauth-cli"
7
- version = "1.7.0"
7
+ version = "1.8.0"
8
8
  description = "A small CLI to quickly obtain an API token for Deezer API."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -23,9 +23,9 @@ classifiers = [
23
23
  "Programming Language :: Python :: 3.12",
24
24
  "Programming Language :: Python :: 3.13",
25
25
  "Programming Language :: Python :: 3.14",
26
+ "Programming Language :: Python :: 3.15",
26
27
  "Topic :: Software Development :: Libraries",
27
28
  ]
28
-
29
29
  dependencies = [
30
30
  "httpx>=0.27",
31
31
  "rich>=10",
@@ -41,16 +41,16 @@ scripts.deezer-oauth = "deezer_oauth.main:app"
41
41
 
42
42
  [dependency-groups]
43
43
  dev = [
44
- "pyfakefs>=5,<6",
45
- "pytest>=8,<9",
44
+ "pyfakefs>=6,<7",
45
+ "pytest>=9,<10",
46
46
  "pytest-cov>=7,<8",
47
47
  "pytest-mock>=3.6,<4",
48
48
  "respx>=0.22",
49
+ "ty==0.0.69",
49
50
  ]
50
51
 
51
52
  [tool.ruff]
52
53
  line-length = 88
53
-
54
54
  lint.select = [
55
55
  "B", # flake8-bugbear
56
56
  "C4", # flake8-comprehensions
@@ -83,63 +83,43 @@ lint.per-file-ignores."tests/**/*" = [
83
83
  lint.isort.known-first-party = [ "deezer_oauth", "tests" ]
84
84
 
85
85
  [tool.pyproject-fmt]
86
- max_supported_python = "3.14"
86
+ max_supported_python = "3.15"
87
87
 
88
- [tool.pytest.ini_options]
89
- addopts = "-v -Wdefault --cov=deezer_oauth --cov-report=term-missing:skip-covered"
90
- pythonpath = [ "src" ]
88
+ [tool.ty]
89
+ terminal.error-on-warning = true
90
+ analysis.allowed-unresolved-imports = [ "test.**" ]
91
91
 
92
- [tool.coverage.run]
93
- branch = true
92
+ [tool.pytest]
93
+ addopts = [ "-v", "-Wonce", "--cov=deezer_oauth" ]
94
+ minversion = "9.0"
95
+ pythonpath = [ "src" ]
94
96
 
95
- [tool.coverage.report]
96
- ignore_errors = true
97
- exclude_lines = [
98
- "pragma: no cover",
97
+ [tool.coverage]
98
+ run.branch = true
99
+ report.exclude_lines = [
99
100
  "@overload",
100
101
  "if TYPE_CHECKING",
102
+ "pragma: no cover",
101
103
  ]
102
-
103
- [tool.mypy]
104
- check_untyped_defs = true
105
- disallow_any_generics = true
106
- disallow_incomplete_defs = true
107
- disallow_untyped_defs = true
108
- mypy_path = "src/"
109
- no_implicit_optional = true
110
- show_error_codes = true
111
- warn_unreachable = true
112
- warn_unused_ignores = true
113
-
114
- [[tool.mypy.overrides]]
115
- module = "tests.*"
116
- allow_untyped_defs = true
104
+ report.ignore_errors = true
117
105
 
118
106
  [tool.semantic_release]
119
- version_toml = [ "pyproject.toml:project.version" ]
120
107
  version_variables = [
121
108
  "src/deezer_oauth/__init__.py:__version__",
122
109
  ]
110
+ version_toml = [ "pyproject.toml:project.version" ]
123
111
  build_command = """
124
112
  pip install uv
125
113
  uv lock
126
114
  git add uv.lock
127
115
  uv build
128
116
  """
129
-
130
- [tool.semantic_release.changelog]
131
- exclude_commit_patterns = [
117
+ branches.main.match = "main"
118
+ branches.noop.match = "(?!main$)"
119
+ branches.noop.prerelease = true
120
+ changelog.environment.keep_trailing_newline = true
121
+ changelog.exclude_commit_patterns = [
132
122
  "chore.*",
133
123
  "ci.*",
134
124
  "Merge pull request .*",
135
125
  ]
136
-
137
- [tool.semantic_release.changelog.environment]
138
- keep_trailing_newline = true
139
-
140
- [tool.semantic_release.branches.main]
141
- match = "main"
142
-
143
- [tool.semantic_release.branches.noop]
144
- match = "(?!main$)"
145
- prerelease = true
@@ -0,0 +1 @@
1
+ __version__ = "1.8.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deezer-oauth-cli
3
- Version: 1.7.0
3
+ Version: 1.8.0
4
4
  Summary: A small CLI to quickly obtain an API token for Deezer API.
5
5
  Author-email: Bruno Alla <alla.brunoo@gmail.com>
6
6
  License-Expression: MIT
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
23
24
  Classifier: Topic :: Software Development :: Libraries
24
25
  Requires-Python: >=3.10
25
26
  Description-Content-Type: text/markdown
@@ -46,8 +47,8 @@ Dynamic: license-file
46
47
  <a href="https://github.com/astral-sh/ruff">
47
48
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
48
49
  </a>
49
- <a href="https://github.com/pre-commit/pre-commit">
50
- <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" alt="pre-commit">
50
+ <a href="https://github.com/j178/prek">
51
+ <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json" alt="prek">
51
52
  </a>
52
53
  </p>
53
54
  <p align="center">
@@ -3,7 +3,7 @@ import sys
3
3
 
4
4
 
5
5
  def test_can_run_as_python_module():
6
- result = subprocess.run( # noqa: S603
6
+ result = subprocess.run(
7
7
  [sys.executable, "-m", "deezer_oauth", "--help"],
8
8
  check=True,
9
9
  capture_output=True,
@@ -9,7 +9,7 @@ def test_no_arguments():
9
9
  result = runner.invoke(app)
10
10
  assert result.exit_code == 2
11
11
  assert "Error" in result.stderr
12
- assert "Missing argument 'APP_ID'." in result.stderr
12
+ assert "Missing argument 'app_id'." in result.stderr
13
13
 
14
14
 
15
15
  def test_help():
@@ -2,7 +2,6 @@ import http.client
2
2
  import threading
3
3
 
4
4
  import pytest
5
- from test.support.threading_helper import threading_cleanup, threading_setup
6
5
 
7
6
  from deezer_oauth.client import OAuthDancer
8
7
  from deezer_oauth.server import LocalHTTPServer, LocalRequestHandler, run_server
@@ -38,8 +37,9 @@ class ServerWrapperThread(threading.Thread):
38
37
  """
39
38
 
40
39
  server: LocalHTTPServer
40
+ test_class: "TestLocalRequestHandler | None"
41
41
 
42
- def __init__(self, test_class):
42
+ def __init__(self, test_class: "TestLocalRequestHandler"):
43
43
  threading.Thread.__init__(self)
44
44
  self.test_class = test_class
45
45
 
@@ -49,6 +49,7 @@ class ServerWrapperThread(threading.Thread):
49
49
  ("localhost", 0),
50
50
  LocalRequestHandler,
51
51
  )
52
+ assert self.test_class is not None
52
53
  self.test_class.host, self.test_class.port = self.server.socket.getsockname()
53
54
  self.test_class.server_started.set()
54
55
  self.test_class = None
@@ -69,16 +70,12 @@ class TestLocalRequestHandler:
69
70
 
70
71
  @pytest.fixture
71
72
  def http_server(self):
72
- _threads = threading_setup()
73
73
  self.server_started = threading.Event()
74
74
  thread = ServerWrapperThread(self)
75
75
  thread.start()
76
76
  self.server_started.wait()
77
77
  yield
78
78
  thread.stop()
79
- # clear assignment to avoid dangling thread
80
- thread = None # type: ignore[assignment]
81
- threading_cleanup(*_threads)
82
79
 
83
80
  def request(self, uri, method="GET"):
84
81
  self.connection = http.client.HTTPConnection(self.host, self.port)
@@ -1 +0,0 @@
1
- __version__ = "1.7.0"