mnamer 2.6.1.dev5__tar.gz → 2.6.1.dev13__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 (77) hide show
  1. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/PKG-INFO +1 -1
  2. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/__version__.py +1 -1
  3. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/argument.py +7 -3
  4. mnamer-2.6.1.dev13/mnamer/const.py +110 -0
  5. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/endpoints.py +185 -59
  6. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/frontends.py +5 -0
  7. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/language.py +4 -3
  8. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/metadata.py +20 -11
  9. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/providers.py +112 -63
  10. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/setting_spec.py +0 -2
  11. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/setting_store.py +5 -6
  12. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/target.py +9 -11
  13. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/tty.py +4 -8
  14. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/types.py +2 -1
  15. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/utils.py +61 -43
  16. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/PKG-INFO +1 -1
  17. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/pyproject.toml +5 -2
  18. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_utils.py +1 -1
  19. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_endpoints__omdb.py +59 -59
  20. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_endpoints__tvdb.py +49 -49
  21. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_endpoints__tvmaze.py +5 -5
  22. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_providers__tmdb.py +3 -1
  23. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_providers__tvdb.py +5 -3
  24. mnamer-2.6.1.dev5/mnamer/const.py +0 -77
  25. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/actions/init/action.yml +0 -0
  26. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/actions/lint/action.yml +0 -0
  27. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/actions/test/action.yml +0 -0
  28. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/dependabot.yml +0 -0
  29. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/workflows/publish.yml +0 -0
  30. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/workflows/pull_request.yml +0 -0
  31. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.github/workflows/push.yml +0 -0
  32. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.gitignore +0 -0
  33. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.python-version +0 -0
  34. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/.vscode/settings.json +0 -0
  35. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/Dockerfile +0 -0
  36. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/LICENSE.txt +0 -0
  37. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/MANIFEST.in +0 -0
  38. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/README.md +0 -0
  39. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/design.eps +0 -0
  40. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/logo-2.png +0 -0
  41. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/logo-3.png +0 -0
  42. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/logo.png +0 -0
  43. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/recording.mov +0 -0
  44. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/screenshot.eps +0 -0
  45. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/assets/screenshot.png +0 -0
  46. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/makefile +0 -0
  47. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/__init__.py +0 -0
  48. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/__main__.py +0 -0
  49. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/exceptions.py +0 -0
  50. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer/py.typed +0 -0
  51. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/SOURCES.txt +0 -0
  52. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/dependency_links.txt +0 -0
  53. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/entry_points.txt +0 -0
  54. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/requires.txt +0 -0
  55. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/mnamer.egg-info/top_level.txt +0 -0
  56. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/pytest.ini +0 -0
  57. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/setup.cfg +0 -0
  58. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/__init__.py +0 -0
  59. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/conftest.py +0 -0
  60. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/e2e/__init__.py +0 -0
  61. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/e2e/conftest.py +0 -0
  62. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/e2e/test_directives.py +0 -0
  63. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/e2e/test_errors.py +0 -0
  64. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/e2e/test_moving.py +0 -0
  65. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/__init__.py +0 -0
  66. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_argument.py +0 -0
  67. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_language.py +0 -0
  68. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_metadata.py +0 -0
  69. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_setting_spec.py +0 -0
  70. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_setting_store.py +0 -0
  71. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_target.py +0 -0
  72. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/local/test_tty.py +0 -0
  73. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/__init__.py +0 -0
  74. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_endpoints__tmdb.py +0 -0
  75. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_providers__omdb.py +0 -0
  76. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/tests/network/test_providers__tvmaze.py +0 -0
  77. {mnamer-2.6.1.dev5 → mnamer-2.6.1.dev13}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mnamer
3
- Version: 2.6.1.dev5
3
+ Version: 2.6.1.dev13
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>
@@ -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.dev5"
4
+ __version__ = "2.6.1.dev13"
@@ -1,5 +1,5 @@
1
1
  import argparse
2
- from typing import Any
2
+ from typing import Any, final, override
3
3
 
4
4
  from mnamer.const import USAGE
5
5
  from mnamer.setting_spec import SettingSpec
@@ -28,6 +28,7 @@ DIRECTIVES:
28
28
  """
29
29
 
30
30
 
31
+ @final
31
32
  class ArgLoader(argparse.ArgumentParser):
32
33
  """
33
34
  An overridden ArgumentParser class which is build to accommodate mnamer's setting
@@ -49,7 +50,9 @@ class ArgLoader(argparse.ArgumentParser):
49
50
  SettingType.PARAMETER,
50
51
  SettingType.POSITIONAL,
51
52
  }
52
- [self._add_spec(spec) for spec in specs if spec.group in groups]
53
+ for spec in specs:
54
+ if spec.group in groups:
55
+ self._add_spec(spec)
53
56
 
54
57
  def _add_spec(self, spec: SettingSpec):
55
58
  if spec.group is SettingType.PARAMETER:
@@ -63,7 +66,7 @@ class ArgLoader(argparse.ArgumentParser):
63
66
  args, kwargs = spec.registration
64
67
  if not args or not kwargs.get("help"):
65
68
  raise RuntimeError("Cannot register ArgumentSpec")
66
- group.add_argument(*args, **kwargs)
69
+ _action = group.add_argument(*args, **kwargs)
67
70
 
68
71
  __iadd__ = _add_spec
69
72
 
@@ -73,6 +76,7 @@ class ArgLoader(argparse.ArgumentParser):
73
76
  raise RuntimeError(f"invalid arguments: {','.join(unknowns)}")
74
77
  return vars(load_arguments)
75
78
 
79
+ @override
76
80
  def format_help(self) -> str:
77
81
  """
78
82
  Overrides ArgumentParser's format_help to dynamically generate a help message
@@ -0,0 +1,110 @@
1
+ """Shared constant definitions."""
2
+
3
+ import datetime as dt
4
+ from pathlib import Path
5
+ from platform import platform, python_version
6
+ from sys import argv, gettrace, version_info
7
+
8
+
9
+ def _resolve_version() -> str:
10
+ try:
11
+ from mnamer.__version__ import __version__
12
+
13
+ return __version__
14
+ except ModuleNotFoundError:
15
+ from setuptools_scm import get_version # type: ignore[import-untyped]
16
+
17
+ return get_version(root="..", relative_to=__file__, local_scheme="dirty-tag")
18
+
19
+
20
+ def _resolve_appdirs_version() -> str:
21
+ try:
22
+ from appdirs import __version__ # type: ignore[import-untyped]
23
+
24
+ return __version__
25
+ except ModuleNotFoundError:
26
+ return "N/A"
27
+
28
+
29
+ def _resolve_cache_dir() -> str:
30
+ try:
31
+ from appdirs import user_cache_dir # type: ignore[import-untyped]
32
+
33
+ return user_cache_dir()
34
+ except ModuleNotFoundError:
35
+ return "N/A"
36
+
37
+
38
+ def _resolve_guessit_version() -> str:
39
+ try:
40
+ from guessit import __version__ # type: ignore[import-untyped]
41
+
42
+ return __version__
43
+ except ModuleNotFoundError:
44
+ return "N/A"
45
+
46
+
47
+ def _resolve_requests_version() -> str:
48
+ try:
49
+ from requests import __version__
50
+
51
+ return __version__
52
+ except ModuleNotFoundError:
53
+ return "N/A"
54
+
55
+
56
+ def _resolve_requests_cache_version() -> str:
57
+ try:
58
+ from requests_cache import __version__
59
+
60
+ return __version__
61
+ except ModuleNotFoundError:
62
+ return "N/A"
63
+
64
+
65
+ def _resolve_teletype_version() -> str:
66
+ try:
67
+ from teletype import VERSION
68
+
69
+ return VERSION
70
+ except ModuleNotFoundError:
71
+ return "N/A"
72
+
73
+
74
+ VERSION: str = _resolve_version()
75
+ appdirs_version: str = _resolve_appdirs_version()
76
+ cache_dir: str = _resolve_cache_dir()
77
+ guessit_version: str = _resolve_guessit_version()
78
+ requests_version: str = _resolve_requests_version()
79
+ requests_cache_version: str = _resolve_requests_cache_version()
80
+ teletype_version: str = _resolve_teletype_version()
81
+
82
+
83
+ CACHE_PATH = Path(
84
+ cache_dir, f"mnamer-py{version_info.major}.{version_info.minor}"
85
+ ).absolute()
86
+
87
+ CURRENT_YEAR = dt.datetime.now().year
88
+
89
+ DEPRECATED = {"no_replace", "replacements"}
90
+
91
+ IS_DEBUG = gettrace() is not None
92
+
93
+ SUBTITLE_CONTAINERS = [".srt", ".idx", ".sub"]
94
+
95
+
96
+ SYSTEM = {
97
+ "date": dt.date.today(),
98
+ "platform": platform(),
99
+ "arguments": argv[1:],
100
+ "cache location": f"{CACHE_PATH}.sqlite",
101
+ "python version": python_version(),
102
+ "mnamer version": VERSION,
103
+ "appdirs version": appdirs_version,
104
+ "guessit version": guessit_version,
105
+ "requests version": requests_version,
106
+ "requests cache version": requests_cache_version,
107
+ "teletype version": teletype_version,
108
+ }
109
+
110
+ USAGE = "USAGE: mnamer [preferences] [directives] target [targets ...]"