Skip to content
Merged

Dev #23

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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ jobs:
run: |
poetry run alembic upgrade head

- name: Run Ruff linter check
run: |
poetry run ruff check .

- name: Run Mypy check
run: |
poetry run mypy .
Expand Down
2 changes: 1 addition & 1 deletion audiostats/application/dto_mappers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from audiostats.db.models import Album, Track

from audiostats.handlers import AlbumDTO, TrackDTO, StatusDTO
from audiostats.handlers.models import AlbumDTO, TrackDTO, StatusDTO

def update_track_orm_f_dto(old : Track, new : TrackDTO) -> None:
old.title = new.title
Expand Down
2 changes: 0 additions & 2 deletions audiostats/db/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
from .models import Album, Track
from .api import DBApi
2 changes: 1 addition & 1 deletion audiostats/db/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from .uow import UnitOfWork

from audiostats.handlers import AlbumDTO
from audiostats.handlers.models import AlbumDTO
from audiostats.db.session import SessionFactory


Expand Down
2 changes: 1 addition & 1 deletion audiostats/db/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from sqlalchemy import String, Integer, UniqueConstraint, ForeignKey, Float, Enum, DateTime, func
from sqlalchemy.orm import Mapped, mapped_column, relationship, DeclarativeBase

from audiostats.domain import Status, Success
from audiostats.domain.enums import Status, Success

MAX_PATH_FIELD_LEN = 200
MAX_STR_FIELD_LEN = 50
Expand Down
4 changes: 2 additions & 2 deletions audiostats/db/repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload

from audiostats.domain import Status, Success
from audiostats.domain.enums import Status, Success
from .models import Album, AlbumStatus
from audiostats.handlers import AlbumDTO
from audiostats.handlers.models import AlbumDTO

from audiostats.application.dto_mappers import create_album_dto_f_orm, update_album_orm_meta_f_dto, update_track_orm_f_dto, create_track_orm_f_dto, diff_track, diff_album_meta

Expand Down
17 changes: 1 addition & 16 deletions audiostats/db/uow.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from contextlib import asynccontextmanager

from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
from sqlalchemy.ext.asyncio import AsyncSession
import logging

from .repositories import AlbumRepository
Expand Down Expand Up @@ -28,18 +28,3 @@ async def __call__(self):
await self._session.rollback()
raise

# async def __aenter__(self):
# async with self._session_factory as sf:
# await self._session = sf.get_session()
# self.albums = AlbumRepository(self._session)
# logger.debug(f'AlbumRepo initialised: {self.albums}, Current Session: {self._session}')
# return self
#
# async def __aexit__(self, exc_type, exc_val, exc_tb):
# if exc_type is not None:
# await self._session.rollback()
# else:
# await self._session.commit()
# await self._session.close()
# logger.debug(f'Session closed')

1 change: 0 additions & 1 deletion audiostats/domain/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
from .enums import Status, Success
2 changes: 0 additions & 2 deletions audiostats/handlers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
from .plst_handler import PlayListHandler
from .models import AlbumDTO, TrackDTO, StatusDTO
2 changes: 1 addition & 1 deletion audiostats/handlers/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from collections import Counter
from dataclasses import dataclass, field

from audiostats.domain import Status, Success
from audiostats.domain.enums import Status, Success

@dataclass(slots=True, frozen=True)
class StatusDTO:
Expand Down
2 changes: 1 addition & 1 deletion audiostats/handlers/plst_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import subprocess
import logging

from typing import Any, TYPE_CHECKING
from typing import Any
from collections.abc import Iterator
from cuetools import TrackData
from types import ModuleType
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ dotenv = "^0.9.9"
mypy = "^1.18.2"
ruff = "^0.14.1"

[tool.ruff]
target-version = "py312"

[tool.mypy]
python_version = "3.12"
ignore_missing_imports = true
Expand Down
14 changes: 7 additions & 7 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

from cuetools import TrackData

from audiostats.handlers import PlayListHandler,AlbumDTO, TrackDTO, StatusDTO
from audiostats.handlers.plst_handler import LIBROSA_AVAILABLE
from audiostats.domain import Status, Success
from audiostats.handlers.plst_handler import PlayListHandler, LIBROSA_AVAILABLE
from audiostats.handlers.models import AlbumDTO, TrackDTO, StatusDTO
from audiostats.domain.enums import Status, Success

@pytest.fixture
def plst_handler_instance():
Expand Down Expand Up @@ -42,15 +42,15 @@ def read(self):
if filename == '/music/Album1/Album1.cue':
return ''
if filename == '/music/Album2/Album2.cue':
tracks = [TrackData(index={f'01' : f'{i//2}{(i%2)*5}:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link='Album.flac') for i in range(5)]
tracks = [TrackData(index={'01' : f'{i//2}{(i%2)*5}:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link='Album.flac') for i in range(5)]
cue_sheet = cuetools.AlbumData(performer='The Performer',title='The Title Of Album2', rem=cuetools.RemData(genre='Rock', date='1969'), tracks=tracks)
return cuetools.dumps(cue_sheet)
if filename == '/music/Album3/Album3.cue':
tracks = [TrackData(index={f'01' : f'00:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link=f'Track0{i+1}.flac') for i in range(5)]
tracks = [TrackData(index={'01' : '00:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link=f'Track0{i+1}.flac') for i in range(5)]
cue_sheet = cuetools.AlbumData(performer='The Performer',title='The Title Of Album3', rem=cuetools.RemData(genre='Rock', date='1969'), tracks=tracks)
return cuetools.dumps(cue_sheet)
if filename == '/music/Album4/Album4.cue':
tracks = [TrackData(index={f'01' : f'{(i%3)//2}{((i%3)%2)*5}:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link=f'Side{'A' if i < 3 else 'B'}.flac') for i in range(6)]
tracks = [TrackData(index={'01' : f'{(i%3)//2}{((i%3)%2)*5}:00:00'}, track=f'0{i+1}', title=f'Track 0{i+1}', link=f'Side{'A' if i < 3 else 'B'}.flac') for i in range(6)]
cue_sheet = cuetools.AlbumData(performer='The Performer',title='The Title Of Album4', rem=cuetools.RemData(genre='Rock', date='1970'), tracks=tracks)
return cuetools.dumps(cue_sheet)
else:
Expand Down Expand Up @@ -96,7 +96,7 @@ def mock_get_duration(monkeypatch):
def mock_duration(self, path_to_file: str) -> float:
return duration_map.get(path_to_file)

from audiostats.handlers import PlayListHandler
from audiostats.handlers.plst_handler import PlayListHandler
monkeypatch.setattr(PlayListHandler, '_get_audiofile_duration', mock_duration)

@pytest.fixture()
Expand Down
51 changes: 0 additions & 51 deletions tests/db_fixture.py

This file was deleted.

4 changes: 2 additions & 2 deletions tests/test_db_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import copy

from audiostats.db.api import DBApi
from audiostats.handlers import TrackDTO, StatusDTO
from audiostats.domain import Status, Success
from audiostats.handlers.models import TrackDTO, StatusDTO
from audiostats.domain.enums import Status, Success

logger = logging.getLogger(__name__)

Expand Down