mnamer 2.6.1.dev13__tar.gz → 2.6.1.dev18__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 (80) hide show
  1. mnamer-2.6.1.dev18/.python-version +1 -0
  2. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/PKG-INFO +8 -9
  3. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/__version__.py +1 -1
  4. mnamer-2.6.1.dev18/mnamer/const.py +75 -0
  5. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/frontends.py +1 -1
  6. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/setting_store.py +11 -9
  7. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/utils.py +11 -13
  8. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer.egg-info/PKG-INFO +8 -9
  9. mnamer-2.6.1.dev18/mnamer.egg-info/requires.txt +7 -0
  10. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/pyproject.toml +17 -16
  11. mnamer-2.6.1.dev18/uv.lock +1098 -0
  12. mnamer-2.6.1.dev13/.python-version +0 -1
  13. mnamer-2.6.1.dev13/mnamer/const.py +0 -110
  14. mnamer-2.6.1.dev13/mnamer.egg-info/requires.txt +0 -8
  15. mnamer-2.6.1.dev13/uv.lock +0 -937
  16. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/actions/init/action.yml +0 -0
  17. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/actions/lint/action.yml +0 -0
  18. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/actions/test/action.yml +0 -0
  19. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/dependabot.yml +0 -0
  20. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/workflows/publish.yml +0 -0
  21. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/workflows/pull_request.yml +0 -0
  22. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.github/workflows/push.yml +0 -0
  23. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.gitignore +0 -0
  24. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/.vscode/settings.json +0 -0
  25. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/Dockerfile +0 -0
  26. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/LICENSE.txt +0 -0
  27. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/MANIFEST.in +0 -0
  28. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/README.md +0 -0
  29. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/design.eps +0 -0
  30. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/logo-2.png +0 -0
  31. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/logo-3.png +0 -0
  32. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/logo.png +0 -0
  33. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/recording.mov +0 -0
  34. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/screenshot.eps +0 -0
  35. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/assets/screenshot.png +0 -0
  36. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/makefile +0 -0
  37. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/__init__.py +0 -0
  38. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/__main__.py +0 -0
  39. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/argument.py +0 -0
  40. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/endpoints.py +0 -0
  41. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/exceptions.py +0 -0
  42. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/language.py +0 -0
  43. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/metadata.py +0 -0
  44. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/providers.py +0 -0
  45. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/py.typed +0 -0
  46. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/setting_spec.py +0 -0
  47. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/target.py +0 -0
  48. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/tty.py +0 -0
  49. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer/types.py +0 -0
  50. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer.egg-info/SOURCES.txt +0 -0
  51. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer.egg-info/dependency_links.txt +0 -0
  52. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer.egg-info/entry_points.txt +0 -0
  53. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/mnamer.egg-info/top_level.txt +0 -0
  54. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/pytest.ini +0 -0
  55. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/setup.cfg +0 -0
  56. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/__init__.py +0 -0
  57. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/conftest.py +0 -0
  58. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/e2e/__init__.py +0 -0
  59. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/e2e/conftest.py +0 -0
  60. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/e2e/test_directives.py +0 -0
  61. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/e2e/test_errors.py +0 -0
  62. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/e2e/test_moving.py +0 -0
  63. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/__init__.py +0 -0
  64. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_argument.py +0 -0
  65. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_language.py +0 -0
  66. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_metadata.py +0 -0
  67. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_setting_spec.py +0 -0
  68. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_setting_store.py +0 -0
  69. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_target.py +0 -0
  70. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_tty.py +0 -0
  71. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/local/test_utils.py +0 -0
  72. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/__init__.py +0 -0
  73. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_endpoints__omdb.py +0 -0
  74. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_endpoints__tmdb.py +0 -0
  75. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_endpoints__tvdb.py +0 -0
  76. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_endpoints__tvmaze.py +0 -0
  77. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_providers__omdb.py +0 -0
  78. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_providers__tmdb.py +0 -0
  79. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_providers__tvdb.py +0 -0
  80. {mnamer-2.6.1.dev13 → mnamer-2.6.1.dev18}/tests/network/test_providers__tvmaze.py +0 -0
@@ -0,0 +1 @@
1
+ 3.14
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mnamer
3
- Version: 2.6.1.dev13
3
+ Version: 2.6.1.dev18
4
4
  Summary: A command-line utility for organizing media files.
5
5
  Author-email: Jessy Williams <jessy@jessywilliams.com>
6
6
  Maintainer-email: Jessy Williams <jessy@jessywilliams.com>
@@ -30,14 +30,13 @@ Project-URL: repository, https://github.com/jkwill87/mnamer
30
30
  Requires-Python: >=3.12
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE.txt
33
- Requires-Dist: appdirs>=1.4.4
34
- Requires-Dist: babelfish>=0.6.0
35
- Requires-Dist: guessit>=3.8.0
36
- Requires-Dist: requests>=2.32.0
37
- Requires-Dist: requests-cache~=0.9.8
38
- Requires-Dist: setuptools-scm>=8.0.0
39
- Requires-Dist: teletype>=1.3.4
40
- Requires-Dist: typing-extensions>=4.7.0
33
+ Requires-Dist: appdirs~=1.4.4
34
+ Requires-Dist: babelfish~=0.6.1
35
+ Requires-Dist: guessit~=3.8.0
36
+ Requires-Dist: requests~=2.33.1
37
+ Requires-Dist: requests-cache~=1.3.1
38
+ Requires-Dist: setuptools-scm>=10.0.0
39
+ Requires-Dist: teletype~=1.3.4
41
40
  Dynamic: license-file
42
41
 
43
42
  [![PyPI](https://img.shields.io/pypi/v/mnamer.svg?style=for-the-badge)](https://pypi.python.org/pypi/mnamer)
@@ -1,4 +1,4 @@
1
1
  # file generated by setuptools_scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __version__ = "2.6.1.dev13"
4
+ __version__ = "2.6.1.dev18"
@@ -0,0 +1,75 @@
1
+ """Shared constant definitions."""
2
+
3
+ import datetime as dt
4
+ from importlib.metadata import PackageNotFoundError, version as pkg_version
5
+ from pathlib import Path
6
+ from platform import platform, python_version
7
+ from sys import argv, gettrace, version_info
8
+
9
+ VERSION: str
10
+
11
+ try:
12
+ from mnamer.__version__ import (
13
+ __version__ as VERSION, # type: ignore # pyright: ignore
14
+ )
15
+ except ModuleNotFoundError:
16
+ from setuptools_scm import get_version # type: ignore
17
+
18
+ VERSION = get_version(root="..", relative_to=__file__, local_scheme="dirty-tag") # pyright: ignore
19
+ try:
20
+ appdirs_version = pkg_version("appdirs")
21
+ except PackageNotFoundError:
22
+ appdirs_version = "N/A"
23
+
24
+ try:
25
+ from appdirs import user_cache_dir
26
+
27
+ cache_dir = user_cache_dir()
28
+ except ModuleNotFoundError:
29
+ cache_dir = "N/A"
30
+
31
+ try:
32
+ guessit_version = pkg_version("guessit")
33
+ except PackageNotFoundError:
34
+ guessit_version = "N/A"
35
+
36
+ try:
37
+ requests_version = pkg_version("requests")
38
+ except PackageNotFoundError:
39
+ requests_version = "N/A"
40
+
41
+ try:
42
+ requests_cache_version = pkg_version("requests_cache")
43
+ except PackageNotFoundError:
44
+ requests_cache_version = "N/A"
45
+
46
+ try:
47
+ teletype_version = pkg_version("teletype")
48
+ except PackageNotFoundError:
49
+ teletype_version = "N/A"
50
+
51
+
52
+ CACHE_PATH = Path(
53
+ cache_dir, f"mnamer-py{version_info.major}.{version_info.minor}.sqlite"
54
+ ).absolute()
55
+
56
+ CURRENT_YEAR = dt.datetime.now().year
57
+ DEPRECATED = {"no_replace", "replacements"}
58
+ IS_DEBUG = gettrace() is not None
59
+ SUBTITLE_CONTAINERS = [".srt", ".idx", ".sub"]
60
+
61
+ SYSTEM = {
62
+ "date": dt.date.today(),
63
+ "platform": platform(),
64
+ "arguments": argv[1:],
65
+ "cache location": CACHE_PATH,
66
+ "python version": python_version(),
67
+ "mnamer version": VERSION,
68
+ "appdirs version": appdirs_version,
69
+ "guessit version": guessit_version,
70
+ "requests version": requests_version,
71
+ "requests cache version": requests_cache_version,
72
+ "teletype version": teletype_version,
73
+ }
74
+
75
+ USAGE = "USAGE: mnamer [preferences] [directives] target [targets ...]"
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
2
2
  from typing import override
3
3
 
4
4
  from mnamer import tty
5
- from mnamer.const import SYSTEM, USAGE, VERSION
5
+ from mnamer.const import SYSTEM, USAGE, VERSION # pyright: ignore
6
6
  from mnamer.exceptions import (
7
7
  MnamerAbortException,
8
8
  MnamerException,
@@ -108,15 +108,17 @@ class SettingStore:
108
108
  ).as_dict(),
109
109
  )
110
110
  mask: list[str] = dataclasses.field(
111
- default_factory=lambda: [
112
- "avi",
113
- "m4v",
114
- "mp4",
115
- "mkv",
116
- "ts",
117
- "wmv",
118
- ]
119
- + SUBTITLE_CONTAINERS,
111
+ default_factory=lambda: (
112
+ [
113
+ "avi",
114
+ "m4v",
115
+ "mp4",
116
+ "mkv",
117
+ "ts",
118
+ "wmv",
119
+ ]
120
+ + SUBTITLE_CONTAINERS
121
+ ),
120
122
  metadata=SettingSpec(
121
123
  flags=["--mask"],
122
124
  group=SettingType.PARAMETER,
@@ -4,6 +4,7 @@ import datetime as dt
4
4
  import json
5
5
  import re
6
6
  from collections.abc import Callable, Iterable, Iterator
7
+ from contextlib import nullcontext
7
8
  from os import walk
8
9
  from os.path import exists, expanduser, expandvars, getsize, splitdrive, splitext
9
10
  from pathlib import Path, PurePath
@@ -273,25 +274,22 @@ def request_json(
273
274
  "like Gecko) Chrome/79.0.3945.88 Safari/537.36"
274
275
  )
275
276
 
276
- # requests-cache has no public API for per-request cache disable; access internal flag.
277
- initial_cache_state = session._disabled # pyright: ignore[reportPrivateUsage]
277
+ cache_ctx = session.cache_disabled() if not cache else nullcontext()
278
278
  try:
279
- session._disabled = not cache # pyright: ignore[reportPrivateUsage]
280
- response = session.request(
281
- url=url,
282
- params=parameters,
283
- json=body,
284
- headers=headers,
285
- method=method,
286
- timeout=1,
287
- )
279
+ with cache_ctx:
280
+ response = session.request(
281
+ url=url,
282
+ params=parameters,
283
+ json=body,
284
+ headers=headers,
285
+ method=method,
286
+ timeout=1,
287
+ )
288
288
  status = response.status_code
289
289
  content = response.json() if status // 100 == 2 else None
290
290
  except Exception:
291
291
  content = None
292
292
  status = 500
293
- finally:
294
- session._disabled = initial_cache_state # pyright: ignore[reportPrivateUsage]
295
293
  return status, (content if content is not None else {})
296
294
 
297
295
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mnamer
3
- Version: 2.6.1.dev13
3
+ Version: 2.6.1.dev18
4
4
  Summary: A command-line utility for organizing media files.
5
5
  Author-email: Jessy Williams <jessy@jessywilliams.com>
6
6
  Maintainer-email: Jessy Williams <jessy@jessywilliams.com>
@@ -30,14 +30,13 @@ Project-URL: repository, https://github.com/jkwill87/mnamer
30
30
  Requires-Python: >=3.12
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE.txt
33
- Requires-Dist: appdirs>=1.4.4
34
- Requires-Dist: babelfish>=0.6.0
35
- Requires-Dist: guessit>=3.8.0
36
- Requires-Dist: requests>=2.32.0
37
- Requires-Dist: requests-cache~=0.9.8
38
- Requires-Dist: setuptools-scm>=8.0.0
39
- Requires-Dist: teletype>=1.3.4
40
- Requires-Dist: typing-extensions>=4.7.0
33
+ Requires-Dist: appdirs~=1.4.4
34
+ Requires-Dist: babelfish~=0.6.1
35
+ Requires-Dist: guessit~=3.8.0
36
+ Requires-Dist: requests~=2.33.1
37
+ Requires-Dist: requests-cache~=1.3.1
38
+ Requires-Dist: setuptools-scm>=10.0.0
39
+ Requires-Dist: teletype~=1.3.4
41
40
  Dynamic: license-file
42
41
 
43
42
  [![PyPI](https://img.shields.io/pypi/v/mnamer.svg?style=for-the-badge)](https://pypi.python.org/pypi/mnamer)
@@ -0,0 +1,7 @@
1
+ appdirs~=1.4.4
2
+ babelfish~=0.6.1
3
+ guessit~=3.8.0
4
+ requests~=2.33.1
5
+ requests-cache~=1.3.1
6
+ setuptools-scm>=10.0.0
7
+ teletype~=1.3.4
@@ -10,14 +10,13 @@ scripts = { mnamer = "mnamer.__main__:main" }
10
10
  urls = { repository = "https://github.com/jkwill87/mnamer" }
11
11
  readme = "README.md"
12
12
  dependencies = [
13
- "appdirs>=1.4.4",
14
- "babelfish>=0.6.0",
15
- "guessit>=3.8.0",
16
- "requests>=2.32.0",
17
- "requests-cache~=0.9.8",
18
- "setuptools-scm>=8.0.0",
19
- "teletype>=1.3.4",
20
- "typing-extensions>=4.7.0",
13
+ "appdirs~=1.4.4",
14
+ "babelfish~=0.6.1",
15
+ "guessit~=3.8.0",
16
+ "requests~=2.33.1",
17
+ "requests-cache~=1.3.1",
18
+ "setuptools-scm>=10.0.0",
19
+ "teletype~=1.3.4",
21
20
  ]
22
21
 
23
22
 
@@ -33,17 +32,18 @@ build-backend = "setuptools.build_meta"
33
32
 
34
33
  [dependency-groups]
35
34
  dev = [
35
+ "appdirs-stubs~=0.2.0",
36
36
  "build>=1.2.0",
37
- "codecov>=2.1.13",
38
- "mypy>=1.17.0",
39
- "pylint>=3.3.0",
40
- "pytest>=8.4.1",
41
- "pytest-cov>=6.2.1",
42
- "pytest-rerunfailures>=15.1",
43
- "ruff>=0.12.5",
37
+ "codecov~=2.1.13",
38
+ "mypy>=2.0",
39
+ "pylint>=4.0",
40
+ "pytest-cov>=7.0",
41
+ "pytest-rerunfailures>=16.0",
42
+ "pytest>=9.0",
43
+ "ruff~=0.15.12",
44
44
  "setuptools>=80.0.0",
45
45
  "twine>=6.0.0",
46
- "types-requests>=2.32.0",
46
+ "types-requests~=2.33.0",
47
47
  "wheel>=0.45.0",
48
48
  ]
49
49
 
@@ -80,6 +80,7 @@ venv = "venv"
80
80
  reportAny = false
81
81
  reportExplicitAny = false
82
82
  reportGeneralTypeIssues = "information"
83
+ reportIgnoreCommentWithoutRule = false
83
84
  reportMissingTypeStubs = false
84
85
 
85
86
  [tool.ruff.lint.isort]