upgradinatorr 0.1.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.
- upgradinatorr-0.1.0/PKG-INFO +149 -0
- upgradinatorr-0.1.0/README.md +132 -0
- upgradinatorr-0.1.0/pyproject.toml +112 -0
- upgradinatorr-0.1.0/pyproject.toml.orig +89 -0
- upgradinatorr-0.1.0/src/upgradinatorr/__init__.py +10 -0
- upgradinatorr-0.1.0/src/upgradinatorr/__main__.py +6 -0
- upgradinatorr-0.1.0/src/upgradinatorr/cli.py +692 -0
- upgradinatorr-0.1.0/src/upgradinatorr/config.py +238 -0
- upgradinatorr-0.1.0/src/upgradinatorr/constants.py +48 -0
- upgradinatorr-0.1.0/src/upgradinatorr/notifications/__init__.py +6 -0
- upgradinatorr-0.1.0/src/upgradinatorr/notifications/discord.py +62 -0
- upgradinatorr-0.1.0/src/upgradinatorr/notifications/notifiarr.py +90 -0
- upgradinatorr-0.1.0/src/upgradinatorr/py.typed +0 -0
- upgradinatorr-0.1.0/src/upgradinatorr/starr/__init__.py +6 -0
- upgradinatorr-0.1.0/src/upgradinatorr/starr/client.py +301 -0
- upgradinatorr-0.1.0/src/upgradinatorr/starr/media.py +99 -0
- upgradinatorr-0.1.0/src/upgradinatorr/tui.py +434 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: upgradinatorr
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Automated media upgrade search for Starr applications
|
|
5
|
+
Author: MountainGod2
|
|
6
|
+
Author-email: MountainGod2 <admin@reid.ca>
|
|
7
|
+
Requires-Dist: aiohttp==3.14.3
|
|
8
|
+
Requires-Dist: pydantic==2.13.5
|
|
9
|
+
Requires-Dist: pydantic-settings==2.13.1
|
|
10
|
+
Requires-Dist: rich==14.3.4
|
|
11
|
+
Requires-Dist: rich-click==1.9.8
|
|
12
|
+
Requires-Dist: stamina==25.2.0
|
|
13
|
+
Requires-Dist: textual==8.1.1
|
|
14
|
+
Requires-Dist: textual-dev==1.8.0
|
|
15
|
+
Requires-Python: >=3.12
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# Upgradinatorr
|
|
19
|
+
|
|
20
|
+
Automated media upgrade search for Starr applications (Radarr, Sonarr, Lidarr, Readarr).
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
uv tool install upgradinatorr
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Or install from source:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
git clone https://github.com/yourusername/upgradinatorr
|
|
32
|
+
cd upgradinatorr
|
|
33
|
+
uv sync
|
|
34
|
+
source .venv/bin/activate # or prefix the commands below with `uv run`
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Process single application
|
|
41
|
+
upgradinatorr -a radarr
|
|
42
|
+
|
|
43
|
+
# Process multiple applications
|
|
44
|
+
upgradinatorr -a radarr,sonarr
|
|
45
|
+
|
|
46
|
+
# Process multiple instances
|
|
47
|
+
upgradinatorr -a radarr,radarr4k
|
|
48
|
+
|
|
49
|
+
# Use custom config file
|
|
50
|
+
upgradinatorr -a radarr -c /path/to/config.conf
|
|
51
|
+
|
|
52
|
+
# Enable verbose output
|
|
53
|
+
upgradinatorr -a radarr --verbose
|
|
54
|
+
|
|
55
|
+
# Preview processing
|
|
56
|
+
upgradinatorr -a radarr --dry-run
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Docker Usage
|
|
60
|
+
|
|
61
|
+
Run with docker:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
docker run --rm \
|
|
65
|
+
-e PUID=99 \
|
|
66
|
+
-e PGID=100 \
|
|
67
|
+
-v /mnt/user/appdata/upgradinatorr/config:/config \
|
|
68
|
+
mountaingod2/upgradinatorr:latest \
|
|
69
|
+
-a radarr,sonarr --verbose
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Or use docker-compose:
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
name: upgradinatorr
|
|
76
|
+
|
|
77
|
+
services:
|
|
78
|
+
upgradinatorr:
|
|
79
|
+
image: mountaingod2/upgradinatorr:latest
|
|
80
|
+
container_name: upgradinatorr
|
|
81
|
+
volumes:
|
|
82
|
+
- /path/to/config:/config
|
|
83
|
+
environment:
|
|
84
|
+
- PUID=99
|
|
85
|
+
- PGID=100
|
|
86
|
+
command: ["-a", "radarr,sonarr", "--verbose"]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Environment Variables:**
|
|
90
|
+
|
|
91
|
+
> [!TIP]
|
|
92
|
+
> Run `id` to display values for the current user.
|
|
93
|
+
|
|
94
|
+
- `PUID` - User ID to run as (default: 999)
|
|
95
|
+
- `PGID` - Group ID to run as (default: 999)
|
|
96
|
+
|
|
97
|
+
**Volumes:**
|
|
98
|
+
- `/config` - Directory containing your `upgradinatorr.conf` file
|
|
99
|
+
|
|
100
|
+
The container will automatically create a default config file from the example if one doesn't exist.
|
|
101
|
+
|
|
102
|
+
## Configuration
|
|
103
|
+
|
|
104
|
+
App arguments passed to `-a/--apps` should match your config section names (case-insensitive).
|
|
105
|
+
For example, if your config has `[Radarr]` and `[Radarr4K]`, use `-a radarr,radarr4k`.
|
|
106
|
+
|
|
107
|
+
Create a `upgradinatorr.conf` file (see example from [original repo](https://github.com/angrycuban13/Just-A-Bunch-Of-Starr-Scripts/blob/main/Upgradinatorr/upgradinatorr-example.conf)):
|
|
108
|
+
|
|
109
|
+
```ini
|
|
110
|
+
[Notifications]
|
|
111
|
+
DiscordWebhook=https://discord.com/api/webhooks/...
|
|
112
|
+
NotifiarrPassthroughWebhook=https://notifiarr.com/api/v1/notification/passthrough/...
|
|
113
|
+
NotifiarrPassthroughDiscordChannelId=123456789
|
|
114
|
+
|
|
115
|
+
[Radarr]
|
|
116
|
+
ApiKey=your_api_key_here
|
|
117
|
+
Count=10
|
|
118
|
+
Monitored=true
|
|
119
|
+
MovieStatus=released
|
|
120
|
+
TagName=upgrade
|
|
121
|
+
Unattended=false
|
|
122
|
+
Url=http://localhost:7878
|
|
123
|
+
|
|
124
|
+
[Sonarr]
|
|
125
|
+
ApiKey=your_api_key_here
|
|
126
|
+
Count=5
|
|
127
|
+
Monitored=true
|
|
128
|
+
SeriesStatus=continuing
|
|
129
|
+
TagName=upgrade
|
|
130
|
+
Unattended=false
|
|
131
|
+
Url=http://localhost:8989
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Requirements
|
|
135
|
+
|
|
136
|
+
- Python 3.12+
|
|
137
|
+
- aiohttp
|
|
138
|
+
- stamina
|
|
139
|
+
- rich
|
|
140
|
+
- rich-click
|
|
141
|
+
- pydantic
|
|
142
|
+
|
|
143
|
+
## License
|
|
144
|
+
|
|
145
|
+
MIT
|
|
146
|
+
|
|
147
|
+
## Credits
|
|
148
|
+
|
|
149
|
+
Original PowerShell version by [angrycuban13](https://github.com/angrycuban13/Just-A-Bunch-Of-Starr-Scripts/blob/main/Upgradinatorr/)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Upgradinatorr
|
|
2
|
+
|
|
3
|
+
Automated media upgrade search for Starr applications (Radarr, Sonarr, Lidarr, Readarr).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uv tool install upgradinatorr
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or install from source:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
git clone https://github.com/yourusername/upgradinatorr
|
|
15
|
+
cd upgradinatorr
|
|
16
|
+
uv sync
|
|
17
|
+
source .venv/bin/activate # or prefix the commands below with `uv run`
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Process single application
|
|
24
|
+
upgradinatorr -a radarr
|
|
25
|
+
|
|
26
|
+
# Process multiple applications
|
|
27
|
+
upgradinatorr -a radarr,sonarr
|
|
28
|
+
|
|
29
|
+
# Process multiple instances
|
|
30
|
+
upgradinatorr -a radarr,radarr4k
|
|
31
|
+
|
|
32
|
+
# Use custom config file
|
|
33
|
+
upgradinatorr -a radarr -c /path/to/config.conf
|
|
34
|
+
|
|
35
|
+
# Enable verbose output
|
|
36
|
+
upgradinatorr -a radarr --verbose
|
|
37
|
+
|
|
38
|
+
# Preview processing
|
|
39
|
+
upgradinatorr -a radarr --dry-run
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Docker Usage
|
|
43
|
+
|
|
44
|
+
Run with docker:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
docker run --rm \
|
|
48
|
+
-e PUID=99 \
|
|
49
|
+
-e PGID=100 \
|
|
50
|
+
-v /mnt/user/appdata/upgradinatorr/config:/config \
|
|
51
|
+
mountaingod2/upgradinatorr:latest \
|
|
52
|
+
-a radarr,sonarr --verbose
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Or use docker-compose:
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
name: upgradinatorr
|
|
59
|
+
|
|
60
|
+
services:
|
|
61
|
+
upgradinatorr:
|
|
62
|
+
image: mountaingod2/upgradinatorr:latest
|
|
63
|
+
container_name: upgradinatorr
|
|
64
|
+
volumes:
|
|
65
|
+
- /path/to/config:/config
|
|
66
|
+
environment:
|
|
67
|
+
- PUID=99
|
|
68
|
+
- PGID=100
|
|
69
|
+
command: ["-a", "radarr,sonarr", "--verbose"]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Environment Variables:**
|
|
73
|
+
|
|
74
|
+
> [!TIP]
|
|
75
|
+
> Run `id` to display values for the current user.
|
|
76
|
+
|
|
77
|
+
- `PUID` - User ID to run as (default: 999)
|
|
78
|
+
- `PGID` - Group ID to run as (default: 999)
|
|
79
|
+
|
|
80
|
+
**Volumes:**
|
|
81
|
+
- `/config` - Directory containing your `upgradinatorr.conf` file
|
|
82
|
+
|
|
83
|
+
The container will automatically create a default config file from the example if one doesn't exist.
|
|
84
|
+
|
|
85
|
+
## Configuration
|
|
86
|
+
|
|
87
|
+
App arguments passed to `-a/--apps` should match your config section names (case-insensitive).
|
|
88
|
+
For example, if your config has `[Radarr]` and `[Radarr4K]`, use `-a radarr,radarr4k`.
|
|
89
|
+
|
|
90
|
+
Create a `upgradinatorr.conf` file (see example from [original repo](https://github.com/angrycuban13/Just-A-Bunch-Of-Starr-Scripts/blob/main/Upgradinatorr/upgradinatorr-example.conf)):
|
|
91
|
+
|
|
92
|
+
```ini
|
|
93
|
+
[Notifications]
|
|
94
|
+
DiscordWebhook=https://discord.com/api/webhooks/...
|
|
95
|
+
NotifiarrPassthroughWebhook=https://notifiarr.com/api/v1/notification/passthrough/...
|
|
96
|
+
NotifiarrPassthroughDiscordChannelId=123456789
|
|
97
|
+
|
|
98
|
+
[Radarr]
|
|
99
|
+
ApiKey=your_api_key_here
|
|
100
|
+
Count=10
|
|
101
|
+
Monitored=true
|
|
102
|
+
MovieStatus=released
|
|
103
|
+
TagName=upgrade
|
|
104
|
+
Unattended=false
|
|
105
|
+
Url=http://localhost:7878
|
|
106
|
+
|
|
107
|
+
[Sonarr]
|
|
108
|
+
ApiKey=your_api_key_here
|
|
109
|
+
Count=5
|
|
110
|
+
Monitored=true
|
|
111
|
+
SeriesStatus=continuing
|
|
112
|
+
TagName=upgrade
|
|
113
|
+
Unattended=false
|
|
114
|
+
Url=http://localhost:8989
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Requirements
|
|
118
|
+
|
|
119
|
+
- Python 3.12+
|
|
120
|
+
- aiohttp
|
|
121
|
+
- stamina
|
|
122
|
+
- rich
|
|
123
|
+
- rich-click
|
|
124
|
+
- pydantic
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT
|
|
129
|
+
|
|
130
|
+
## Credits
|
|
131
|
+
|
|
132
|
+
Original PowerShell version by [angrycuban13](https://github.com/angrycuban13/Just-A-Bunch-Of-Starr-Scripts/blob/main/Upgradinatorr/)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "upgradinatorr"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Automated media upgrade search for Starr applications"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"aiohttp==3.14.3",
|
|
9
|
+
"pydantic==2.13.5",
|
|
10
|
+
"pydantic-settings==2.13.1",
|
|
11
|
+
"rich==14.3.4",
|
|
12
|
+
"rich-click==1.9.8",
|
|
13
|
+
"stamina==25.2.0",
|
|
14
|
+
"textual==8.1.1",
|
|
15
|
+
"textual-dev==1.8.0",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[[project.authors]]
|
|
19
|
+
name = "MountainGod2"
|
|
20
|
+
email = "admin@reid.ca"
|
|
21
|
+
|
|
22
|
+
[project.scripts]
|
|
23
|
+
upgradinatorr = "upgradinatorr.cli:main"
|
|
24
|
+
upgradinatorr-tui = "upgradinatorr.tui:run_tui"
|
|
25
|
+
|
|
26
|
+
[dependency-groups]
|
|
27
|
+
dev = [
|
|
28
|
+
"aioresponses==0.7.9",
|
|
29
|
+
"mypy==1.20.2",
|
|
30
|
+
"pre-commit==4.6.2",
|
|
31
|
+
"pytest==9.1.1",
|
|
32
|
+
"pytest-asyncio==1.4.0",
|
|
33
|
+
"pytest-cov==7.0.0",
|
|
34
|
+
"ruff==0.15.2",
|
|
35
|
+
]
|
|
36
|
+
build = [
|
|
37
|
+
"python-semantic-release==10.5.3",
|
|
38
|
+
"uv==0.12.7",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[build-system]
|
|
42
|
+
requires = ["uv_build==0.12.7"]
|
|
43
|
+
build-backend = "uv_build"
|
|
44
|
+
|
|
45
|
+
[tool.uv]
|
|
46
|
+
constraint-dependencies = ["gitpython<=3.1.59"]
|
|
47
|
+
|
|
48
|
+
[tool.semantic_release]
|
|
49
|
+
build_command = """
|
|
50
|
+
uv lock --upgrade-package "$PACKAGE_NAME"
|
|
51
|
+
uv build
|
|
52
|
+
"""
|
|
53
|
+
allow_zero_version = true
|
|
54
|
+
major_on_zero = false
|
|
55
|
+
|
|
56
|
+
[tool.semantic_release.changelog]
|
|
57
|
+
exclude_commit_patterns = [
|
|
58
|
+
'refactor(?:\([^)]*?\))?(?!!): .+',
|
|
59
|
+
'chore(?:\([^)]*?\))?(?!!): .+',
|
|
60
|
+
'ci(?:\([^)]*?\))?(?!!): .+',
|
|
61
|
+
'docs(?:\([^)]*?\))?(?!!): .+',
|
|
62
|
+
'style(?:\([^)]*?\))?(?!!): .+',
|
|
63
|
+
'test(?:\([^)]*?\))?(?!!): .+',
|
|
64
|
+
'build\((?!deps\): .+)',
|
|
65
|
+
"Initial [Cc]ommit.*",
|
|
66
|
+
]
|
|
67
|
+
mode = "init"
|
|
68
|
+
|
|
69
|
+
[tool.ruff]
|
|
70
|
+
line-length = 100
|
|
71
|
+
target-version = "py312"
|
|
72
|
+
preview = true
|
|
73
|
+
|
|
74
|
+
[tool.ruff.lint]
|
|
75
|
+
select = ["ALL"]
|
|
76
|
+
ignore = ["COM812"]
|
|
77
|
+
explicit-preview-rules = true
|
|
78
|
+
|
|
79
|
+
[tool.ruff.lint.pydocstyle]
|
|
80
|
+
convention = "google"
|
|
81
|
+
|
|
82
|
+
[tool.ruff.lint.mccabe]
|
|
83
|
+
max-complexity = 35
|
|
84
|
+
|
|
85
|
+
[tool.ruff.lint.pylint]
|
|
86
|
+
max-branches = 50
|
|
87
|
+
max-statements = 120
|
|
88
|
+
max-args = 10
|
|
89
|
+
|
|
90
|
+
[tool.ruff.lint.per-file-ignores]
|
|
91
|
+
"tests/*" = [
|
|
92
|
+
"ANN401",
|
|
93
|
+
"INP001",
|
|
94
|
+
"S101",
|
|
95
|
+
"SLF001",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[tool.ruff.format]
|
|
99
|
+
quote-style = "double"
|
|
100
|
+
indent-style = "space"
|
|
101
|
+
skip-magic-trailing-comma = false
|
|
102
|
+
line-ending = "lf"
|
|
103
|
+
docstring-code-format = true
|
|
104
|
+
docstring-code-line-length = "dynamic"
|
|
105
|
+
|
|
106
|
+
[tool.mypy]
|
|
107
|
+
packages = "upgradinatorr"
|
|
108
|
+
python_version = "3.12"
|
|
109
|
+
warn_return_any = true
|
|
110
|
+
warn_unused_configs = true
|
|
111
|
+
disallow_untyped_defs = true
|
|
112
|
+
strict = true
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "upgradinatorr"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Automated media upgrade search for Starr applications"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
authors = [{ name = "MountainGod2", email = "admin@reid.ca" }]
|
|
7
|
+
requires-python = ">=3.12"
|
|
8
|
+
dependencies = [
|
|
9
|
+
"aiohttp==3.14.3",
|
|
10
|
+
"pydantic==2.13.5",
|
|
11
|
+
"pydantic-settings==2.13.1",
|
|
12
|
+
"rich==14.3.4",
|
|
13
|
+
"rich-click==1.9.8",
|
|
14
|
+
"stamina==25.2.0",
|
|
15
|
+
"textual==8.1.1",
|
|
16
|
+
"textual-dev==1.8.0",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
[dependency-groups]
|
|
20
|
+
dev = [
|
|
21
|
+
"aioresponses==0.7.9",
|
|
22
|
+
"mypy==1.20.2",
|
|
23
|
+
"pre-commit==4.6.2",
|
|
24
|
+
"pytest==9.1.1",
|
|
25
|
+
"pytest-asyncio==1.4.0",
|
|
26
|
+
"pytest-cov==7.0.0",
|
|
27
|
+
"ruff==0.15.2",
|
|
28
|
+
]
|
|
29
|
+
build = ["python-semantic-release==10.5.3", "uv==0.12.7"]
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
upgradinatorr = "upgradinatorr.cli:main"
|
|
33
|
+
upgradinatorr-tui = "upgradinatorr.tui:run_tui"
|
|
34
|
+
|
|
35
|
+
[build-system]
|
|
36
|
+
requires = ["uv_build==0.12.7"]
|
|
37
|
+
build-backend = "uv_build"
|
|
38
|
+
|
|
39
|
+
[tool.uv]
|
|
40
|
+
constraint-dependencies = [
|
|
41
|
+
"gitpython<=3.1.59"
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[tool.semantic_release]
|
|
45
|
+
build_command = """
|
|
46
|
+
uv lock --upgrade-package "$PACKAGE_NAME"
|
|
47
|
+
uv build
|
|
48
|
+
"""
|
|
49
|
+
allow_zero_version = true
|
|
50
|
+
major_on_zero = false
|
|
51
|
+
changelog.exclude_commit_patterns = [
|
|
52
|
+
'''refactor(?:\([^)]*?\))?(?!!): .+''',
|
|
53
|
+
'''chore(?:\([^)]*?\))?(?!!): .+''',
|
|
54
|
+
'''ci(?:\([^)]*?\))?(?!!): .+''',
|
|
55
|
+
'''docs(?:\([^)]*?\))?(?!!): .+''',
|
|
56
|
+
'''style(?:\([^)]*?\))?(?!!): .+''',
|
|
57
|
+
'''test(?:\([^)]*?\))?(?!!): .+''',
|
|
58
|
+
'''build\((?!deps\): .+)''',
|
|
59
|
+
'''Initial [Cc]ommit.*''',
|
|
60
|
+
]
|
|
61
|
+
changelog.mode = "init"
|
|
62
|
+
|
|
63
|
+
[tool.ruff]
|
|
64
|
+
line-length = 100
|
|
65
|
+
target-version = "py312"
|
|
66
|
+
preview = true
|
|
67
|
+
lint.select = ["ALL"]
|
|
68
|
+
lint.ignore = ["COM812"]
|
|
69
|
+
lint.pydocstyle.convention = "google"
|
|
70
|
+
lint.explicit-preview-rules = true
|
|
71
|
+
lint.mccabe.max-complexity = 35
|
|
72
|
+
lint.pylint.max-branches = 50
|
|
73
|
+
lint.pylint.max-statements = 120
|
|
74
|
+
lint.pylint.max-args = 10
|
|
75
|
+
lint.per-file-ignores = { "tests/*" = ["ANN401", "INP001", "S101", "SLF001"] }
|
|
76
|
+
format.quote-style = "double"
|
|
77
|
+
format.indent-style = "space"
|
|
78
|
+
format.skip-magic-trailing-comma = false
|
|
79
|
+
format.line-ending = "lf"
|
|
80
|
+
format.docstring-code-format = true
|
|
81
|
+
format.docstring-code-line-length = "dynamic"
|
|
82
|
+
|
|
83
|
+
[tool.mypy]
|
|
84
|
+
packages = "upgradinatorr"
|
|
85
|
+
python_version = "3.12"
|
|
86
|
+
warn_return_any = true
|
|
87
|
+
warn_unused_configs = true
|
|
88
|
+
disallow_untyped_defs = true
|
|
89
|
+
strict = true
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""Upgradinatorr - Media upgrade automation for Starr applications."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import version
|
|
4
|
+
|
|
5
|
+
__version__ = version("upgradinatorr")
|
|
6
|
+
__author__ = "MountainGod2"
|
|
7
|
+
|
|
8
|
+
from upgradinatorr.config import ApplicationConfig, NotificationConfig, validate_application_name
|
|
9
|
+
|
|
10
|
+
__all__ = ["ApplicationConfig", "NotificationConfig", "validate_application_name"]
|