Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .github/workflows/test_bazarr_execution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14' ]
python-version: [ '3.12', '3.13', '3.14' ]
name: Python ${{ matrix.python-version }} test

steps:
Expand Down
6 changes: 3 additions & 3 deletions bazarr/api/subtitles/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
'remove_tags': 'Removing Style Tags',
'fix_uppercase': 'Fixing Uppercase',
'reverse_rtl': 'Reversing RTL',
'emoji': 'Removing Emoji',
'scan-disk': 'Scanning Disk',
'search-missing': 'Searching Missing Subtitles',
'upgrade': 'Upgrading Subtitles',
Expand Down Expand Up @@ -60,7 +61,6 @@ class BatchOperation(Resource):
})

@authenticate
@api_ns_batch.doc(body=post_request_model)
@api_ns_batch.response(200, 'Success', post_response_model)
@api_ns_batch.response(400, 'Bad Request')
@api_ns_batch.response(401, 'Not Authenticated')
Expand Down Expand Up @@ -159,7 +159,7 @@ def get_upgradable_media_ids():
TableHistoryMovie.timestamp > minimum_timestamp,
or_(
and_(TableHistoryMovie.score.is_(None), TableHistoryMovie.action == 6),
TableHistoryMovie.score < 117
TableHistoryMovie.score < TableHistoryMovie.score_out_of - 3
)
))
).all()
Expand Down Expand Up @@ -188,7 +188,7 @@ def get_upgradable_media_ids():
TableHistory.timestamp > minimum_timestamp,
or_(
and_(TableHistory.score.is_(None), TableHistory.action == 6),
TableHistory.score < 357
TableHistory.score < TableHistory.score_out_of - 3
)
))
).all()
Expand Down
2 changes: 1 addition & 1 deletion bazarr/app/check_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

def deprecated_python_version():
# return True if Python version is deprecated
return sys.version_info.major == 2 or (sys.version_info.major == 3 and sys.version_info.minor < 8)
return sys.version_info.major == 2 or (sys.version_info.major == 3 and sys.version_info.minor < 10)


def _fetch_repo_releases(repo, label=None):
Expand Down
6 changes: 3 additions & 3 deletions bazarr/app/get_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import os
import json
import datetime
import pytz
import logging
import subliminal_patch
import pretty
Expand All @@ -13,6 +12,7 @@
import traceback
import re

from zoneinfo import ZoneInfo
from requests import ConnectionError
from subzero.language import Language
from subliminal_patch.exceptions import (TooManyRequests, APIThrottled, ParseResponseError, IPAddressBlocked,
Expand Down Expand Up @@ -45,13 +45,13 @@ def time_until_midnight(timezone) -> datetime.timedelta:
# Titulky resets its download limits at the start of a new day from its perspective - the Europe/Prague timezone
# Needs to convert to offset-naive dt
def titulky_limit_reset_timedelta():
return time_until_midnight(timezone=pytz.timezone('Europe/Prague'))
return time_until_midnight(timezone=datetime.datetime.now(ZoneInfo('Europe/Prague')))


# LegendasDivx reset its searches limit at approximately midnight, Lisbon time, every day. We wait 1 more hours just
# to be sure.
def legendasdivx_limit_reset_timedelta():
return time_until_midnight(timezone=pytz.timezone('Europe/Lisbon')) + datetime.timedelta(minutes=60)
return time_until_midnight(timezone=datetime.datetime.now(ZoneInfo('Europe/Lisbon'))) + datetime.timedelta(minutes=60)


VALID_THROTTLE_EXCEPTIONS = (TooManyRequests, DownloadLimitExceeded, ServiceUnavailable, APIThrottled,
Expand Down
3 changes: 0 additions & 3 deletions bazarr/app/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

from logging.handlers import TimedRotatingFileHandler
from utilities.central import get_log_file_path
from pytz_deprecation_shim import PytzUsageWarning

from .config import settings

Expand Down Expand Up @@ -129,8 +128,6 @@ def filter(self, record):

def configure_logging(debug=False):
warnings.simplefilter('ignore', category=ResourceWarning)
warnings.simplefilter('ignore', category=PytzUsageWarning)
# warnings.simplefilter('ignore', category=SAWarning)

if debug:
log_level = logging.DEBUG
Expand Down
5 changes: 3 additions & 2 deletions bazarr/subtitles/mass_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@

VALID_ACTIONS = {
'sync', 'translate', 'OCR_fixes', 'common', 'remove_HI',
'remove_tags', 'fix_uppercase', 'reverse_rtl', 'scan-disk', 'search-missing', 'upgrade',
'remove_tags', 'fix_uppercase', 'reverse_rtl', 'emoji',
'scan-disk', 'search-missing', 'upgrade',
}

MEDIA_ACTIONS = {'scan-disk', 'search-missing', 'upgrade'}

MOD_ACTIONS = {'OCR_fixes', 'common', 'remove_HI', 'remove_tags', 'fix_uppercase', 'reverse_rtl'}
MOD_ACTIONS = {'OCR_fixes', 'common', 'remove_HI', 'remove_tags', 'fix_uppercase', 'reverse_rtl', 'emoji'}


def _parse_subtitles_column(subtitles_raw):
Expand Down
2 changes: 1 addition & 1 deletion custom_libs/subliminal/extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def register(self, entry_point):
if ep.name in self.names():
raise ValueError('An extension with the same name already exist')

ext = self._load_one_plugin(ep, False, (), {}, False)
ext = self._load_one_plugin(ep, False, (), {})
self.extensions.append(ext)
if self._extensions_by_name is not None:
self._extensions_by_name[ext.name] = ext
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/assets/_bazarr.scss
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ body::after {
inset: 0;
z-index: 9999;
pointer-events: none;
background: radial-gradient(
background:
radial-gradient(
ellipse at 15% 10%,
rgba(230, 138, 0, 0.12) 0%,
transparent 50%
Expand Down
6 changes: 4 additions & 2 deletions frontend/src/components/bazarr/LanguageSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import { useLanguages } from "@/apis/hooks";
import { Selector, SelectorProps } from "@/components/inputs";
import { useSelectorOptions } from "@/utilities";

interface LanguageSelectorProps
extends Omit<SelectorProps<Language.Server>, "options" | "getkey"> {
interface LanguageSelectorProps extends Omit<
SelectorProps<Language.Server>,
"options" | "getkey"
> {
enabled?: boolean;
}

Expand Down
32 changes: 23 additions & 9 deletions frontend/src/types/react-table.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,13 @@ declare module "react-table" {
}

// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface CustomTableProps<D extends Record<string, unknown>>
extends useSelectionProps<D> {}
interface CustomTableProps<
D extends Record<string, unknown>,
> extends useSelectionProps<D> {}

export interface TableOptions<D extends Record<string, unknown>>
extends UseExpandedOptions<D>,
extends
UseExpandedOptions<D>,
// UseFiltersOptions<D>,
// UseGlobalFiltersOptions<D>,
UseGroupByOptions<D>,
Expand All @@ -61,14 +63,18 @@ declare module "react-table" {

export interface Hooks<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseExpandedHooks<D>,
>
extends
UseExpandedHooks<D>,
UseGroupByHooks<D>,
UseRowSelectHooks<D>,
UseSortByHooks<D> {}

export interface TableInstance<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseColumnOrderInstanceProps<D>,
>
extends
UseColumnOrderInstanceProps<D>,
UseExpandedInstanceProps<D>,
// UseFiltersInstanceProps<D>,
// UseGlobalFiltersInstanceProps<D>,
Expand All @@ -81,7 +87,9 @@ declare module "react-table" {

export interface TableState<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseColumnOrderState<D>,
>
extends
UseColumnOrderState<D>,
UseExpandedState<D>,
// UseFiltersState<D>,
// UseGlobalFiltersState<D>,
Expand All @@ -94,15 +102,19 @@ declare module "react-table" {

export interface ColumnInterface<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseFiltersColumnOptions<D>,
>
extends
UseFiltersColumnOptions<D>,
// UseGlobalFiltersColumnOptions<D>,
UseGroupByColumnOptions<D>,
// UseResizeColumnsColumnOptions<D>,
UseSortByColumnOptions<D> {}

export interface ColumnInstance<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseFiltersColumnProps<D>,
>
extends
UseFiltersColumnProps<D>,
UseGroupByColumnProps<D>,
// UseResizeColumnsColumnProps<D>,
UseSortByColumnProps<D> {}
Expand All @@ -114,7 +126,9 @@ declare module "react-table" {

export interface Row<
D extends Record<string, unknown> = Record<string, unknown>,
> extends UseExpandedRowProps<D>,
>
extends
UseExpandedRowProps<D>,
UseGroupByRowProps<D>,
UseRowSelectRowProps<D> {}
}
12 changes: 9 additions & 3 deletions frontend/src/utilities/routers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,27 @@ export function usePrompt(

const handleStay = useCallback(() => {
modals.closeAll();
blocker.reset?.();
if (blocker.state === "blocked") {
blocker.reset?.();
}
requestAnimationFrame(() => previousFocus.current?.focus());
}, [blocker]);

const handleDiscard = useCallback(() => {
modals.closeAll();
blocker.proceed?.();
if (blocker.state === "blocked") {
blocker.proceed?.();
}
}, [blocker]);

const handleSaveAndLeave = useCallback(async () => {
if (onSaveAndLeave) {
await onSaveAndLeave();
}
modals.closeAll();
blocker.proceed?.();
if (blocker.state === "blocked") {
blocker.proceed?.();
}
}, [blocker, onSaveAndLeave]);

useEffect(() => {
Expand Down
2 changes: 2 additions & 0 deletions frontend/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ export default defineConfig(({ mode, command }) => {
globals: true,
environment: "jsdom",
setupFiles: "./src/tests/setup.tsx",
testTimeout: 20000,
pool: "forks",
},
server: {
proxy: {
Expand Down
Loading
Loading