deezer-oauth-cli 1.6.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.6.0 → deezer_oauth_cli-1.8.0}/PKG-INFO +5 -3
  2. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/README.md +2 -2
  3. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/pyproject.toml +25 -44
  4. deezer_oauth_cli-1.8.0/src/deezer_oauth/__init__.py +1 -0
  5. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/PKG-INFO +5 -3
  6. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/tests/test_dunder_main.py +1 -1
  7. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/tests/test_main.py +1 -1
  8. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/tests/test_server.py +3 -6
  9. deezer_oauth_cli-1.6.0/src/deezer_oauth/__init__.py +0 -1
  10. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/LICENSE +0 -0
  11. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/setup.cfg +0 -0
  12. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/__main__.py +0 -0
  13. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/client.py +0 -0
  14. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/constants.py +0 -0
  15. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/files.py +0 -0
  16. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/main.py +0 -0
  17. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/py.typed +0 -0
  18. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth/server.py +0 -0
  19. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/SOURCES.txt +0 -0
  20. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/dependency_links.txt +0 -0
  21. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/entry_points.txt +0 -0
  22. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/requires.txt +0 -0
  23. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/src/deezer_oauth_cli.egg-info/top_level.txt +0 -0
  24. {deezer_oauth_cli-1.6.0 → deezer_oauth_cli-1.8.0}/tests/test_client.py +0 -0
  25. {deezer_oauth_cli-1.6.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.6.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
@@ -19,6 +19,8 @@ Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
22
24
  Classifier: Topic :: Software Development :: Libraries
23
25
  Requires-Python: >=3.10
24
26
  Description-Content-Type: text/markdown
@@ -45,8 +47,8 @@ Dynamic: license-file
45
47
  <a href="https://github.com/astral-sh/ruff">
46
48
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
47
49
  </a>
48
- <a href="https://github.com/pre-commit/pre-commit">
49
- <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">
50
52
  </a>
51
53
  </p>
52
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.6.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"
@@ -22,9 +22,10 @@ classifiers = [
22
22
  "Programming Language :: Python :: 3.11",
23
23
  "Programming Language :: Python :: 3.12",
24
24
  "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
26
+ "Programming Language :: Python :: 3.15",
25
27
  "Topic :: Software Development :: Libraries",
26
28
  ]
27
-
28
29
  dependencies = [
29
30
  "httpx>=0.27",
30
31
  "rich>=10",
@@ -40,16 +41,16 @@ scripts.deezer-oauth = "deezer_oauth.main:app"
40
41
 
41
42
  [dependency-groups]
42
43
  dev = [
43
- "pyfakefs>=5,<6",
44
- "pytest>=8,<9",
44
+ "pyfakefs>=6,<7",
45
+ "pytest>=9,<10",
45
46
  "pytest-cov>=7,<8",
46
47
  "pytest-mock>=3.6,<4",
47
48
  "respx>=0.22",
49
+ "ty==0.0.69",
48
50
  ]
49
51
 
50
52
  [tool.ruff]
51
53
  line-length = 88
52
-
53
54
  lint.select = [
54
55
  "B", # flake8-bugbear
55
56
  "C4", # flake8-comprehensions
@@ -82,63 +83,43 @@ lint.per-file-ignores."tests/**/*" = [
82
83
  lint.isort.known-first-party = [ "deezer_oauth", "tests" ]
83
84
 
84
85
  [tool.pyproject-fmt]
85
- max_supported_python = "3.13"
86
+ max_supported_python = "3.15"
86
87
 
87
- [tool.pytest.ini_options]
88
- addopts = "-v -Wdefault --cov=deezer_oauth --cov-report=term-missing:skip-covered"
89
- pythonpath = [ "src" ]
88
+ [tool.ty]
89
+ terminal.error-on-warning = true
90
+ analysis.allowed-unresolved-imports = [ "test.**" ]
90
91
 
91
- [tool.coverage.run]
92
- branch = true
92
+ [tool.pytest]
93
+ addopts = [ "-v", "-Wonce", "--cov=deezer_oauth" ]
94
+ minversion = "9.0"
95
+ pythonpath = [ "src" ]
93
96
 
94
- [tool.coverage.report]
95
- ignore_errors = true
96
- exclude_lines = [
97
- "pragma: no cover",
97
+ [tool.coverage]
98
+ run.branch = true
99
+ report.exclude_lines = [
98
100
  "@overload",
99
101
  "if TYPE_CHECKING",
102
+ "pragma: no cover",
100
103
  ]
101
-
102
- [tool.mypy]
103
- check_untyped_defs = true
104
- disallow_any_generics = true
105
- disallow_incomplete_defs = true
106
- disallow_untyped_defs = true
107
- mypy_path = "src/"
108
- no_implicit_optional = true
109
- show_error_codes = true
110
- warn_unreachable = true
111
- warn_unused_ignores = true
112
-
113
- [[tool.mypy.overrides]]
114
- module = "tests.*"
115
- allow_untyped_defs = true
104
+ report.ignore_errors = true
116
105
 
117
106
  [tool.semantic_release]
118
- version_toml = [ "pyproject.toml:project.version" ]
119
107
  version_variables = [
120
108
  "src/deezer_oauth/__init__.py:__version__",
121
109
  ]
110
+ version_toml = [ "pyproject.toml:project.version" ]
122
111
  build_command = """
123
112
  pip install uv
124
113
  uv lock
125
114
  git add uv.lock
126
115
  uv build
127
116
  """
128
-
129
- [tool.semantic_release.changelog]
130
- 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 = [
131
122
  "chore.*",
132
123
  "ci.*",
133
124
  "Merge pull request .*",
134
125
  ]
135
-
136
- [tool.semantic_release.changelog.environment]
137
- keep_trailing_newline = true
138
-
139
- [tool.semantic_release.branches.main]
140
- match = "main"
141
-
142
- [tool.semantic_release.branches.noop]
143
- match = "(?!main$)"
144
- 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.6.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
@@ -19,6 +19,8 @@ Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
22
24
  Classifier: Topic :: Software Development :: Libraries
23
25
  Requires-Python: >=3.10
24
26
  Description-Content-Type: text/markdown
@@ -45,8 +47,8 @@ Dynamic: license-file
45
47
  <a href="https://github.com/astral-sh/ruff">
46
48
  <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff">
47
49
  </a>
48
- <a href="https://github.com/pre-commit/pre-commit">
49
- <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">
50
52
  </a>
51
53
  </p>
52
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.6.0"