Skip to content

Commit

Permalink
apply pre-commit to all files
Browse files Browse the repository at this point in the history
  • Loading branch information
pgorecki committed Nov 18, 2022
1 parent fca2cd3 commit d05566a
Show file tree
Hide file tree
Showing 67 changed files with 253 additions and 230 deletions.
26 changes: 23 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,31 @@
default_language_version:
python: python3.10

repos:
- repo: https://github.com/ambv/black
rev: 22.3.0
# native hints instead of `from typing` | List -> list
- repo: https://github.com/sondrelg/pep585-upgrade
rev: 'v1.0' # Version to check
hooks:
- id: black
- id: upgrade-type-hints

# Only for removing unused imports > Other staff done by Black
- repo: https://github.com/myint/autoflake
rev: "v1.4" # Version to check
hooks:
- id: autoflake
args:
- --in-place
- --remove-all-unused-imports
- --ignore-init-module-imports

- repo: https://github.com/pycqa/isort
rev: 5.10.1
hooks:
- id: isort
name: isort (python)
args: ["--profile", "black"]

- repo: https://github.com/ambv/black
rev: 22.3.0
hooks:
- id: black
3 changes: 1 addition & 2 deletions migrations/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@

from logging.config import fileConfig

from sqlalchemy import engine_from_config
from sqlalchemy import pool
from sqlalchemy import engine_from_config, pool

from alembic import context

Expand Down
4 changes: 1 addition & 3 deletions src/alembic/env.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from logging.config import fileConfig

from sqlalchemy import engine_from_config
from sqlalchemy import pool
from sqlalchemy import engine_from_config, pool

from alembic import context

Expand All @@ -16,7 +15,6 @@
# add your model's MetaData object here
# for 'autogenerate' support
from modules.catalog.infrastructure.listing_repository import CatalogListingModel
from seedwork.infrastructure.database import Base

# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
Expand Down
3 changes: 2 additions & 1 deletion src/alembic/versions/d6c2334f4816_initial_listing_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
Create Date: 2021-09-27 17:33:02.166128
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

from alembic import op

# revision identifiers, used by Alembic.
revision = "d6c2334f4816"
down_revision = None
Expand Down
2 changes: 1 addition & 1 deletion src/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from pathlib import Path
import sys
from pathlib import Path

# add base project path to PYTHONPATH
BASE_DIR = Path(__file__).resolve().parent.parent
Expand Down
1 change: 1 addition & 0 deletions src/api/__main__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import uvicorn

from api.main import app

uvicorn.run(app, host="0.0.0.0", port=8000)
3 changes: 1 addition & 2 deletions src/api/dependencies.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from fastapi import Header, HTTPException
from pydantic import BaseModel
from dataclasses import dataclass

from seedwork.domain.value_objects import UUID


Expand Down
11 changes: 5 additions & 6 deletions src/api/main.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import time
from fastapi import FastAPI, Request, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm

from seedwork.infrastructure.request_context import request_context
from seedwork.infrastructure.logging import logger, LoggerFactory
from fastapi import FastAPI, Request

from api.routers import catalog, iam
import api.routers.catalog
from api.models import CurrentUser
from api.routers import catalog, iam
from config.api_config import ApiConfig
from config.container import Container
import api.routers.catalog
from seedwork.infrastructure.logging import LoggerFactory, logger
from seedwork.infrastructure.request_context import request_context

# configure logger prior to first usage
LoggerFactory.configure(logger_name="cli")
Expand Down
4 changes: 2 additions & 2 deletions src/api/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import List
from uuid import UUID, uuid4

from pydantic import BaseModel


Expand All @@ -22,4 +22,4 @@ class ListingReadModel(BaseModel):


class ListingIndexModel(BaseModel):
data: List[ListingReadModel]
data: list[ListingReadModel]
10 changes: 5 additions & 5 deletions src/api/routers/catalog.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
from fastapi import APIRouter
from seedwork.infrastructure.request_context import request_context

from modules.catalog.module import CatalogModule
from api.models import ListingIndexModel, ListingReadModel, ListingWriteModel
from api.shared import dependency
from config.container import Container, inject
from modules.catalog.application.command.create_listing_draft import (
CreateListingDraftCommand,
)
from modules.catalog.application.query.get_all_listings import GetAllListings
from modules.catalog.application.query.get_listing_details import GetListingDetails
from config.container import Container, inject
from api.models import ListingReadModel, ListingWriteModel, ListingIndexModel
from api.shared import dependency
from modules.catalog.module import CatalogModule
from seedwork.infrastructure.request_context import request_context

router = APIRouter()

Expand Down
10 changes: 5 additions & 5 deletions src/api/routers/iam.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from fastapi import APIRouter, Depends
from fastapi import FastAPI, Request, Depends, HTTPException, status
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm

from api.shared import dependency
from config.container import Container, inject
from modules.iam.module import IdentityAndAccessModule
from modules.iam.application.exceptions import (
UserNotFoundException,
UsernamePasswordMismatchException,
UserNotFoundException,
)
from modules.iam.domain.entities import User
from api.shared import dependency
from modules.iam.module import IdentityAndAccessModule

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
router = APIRouter()
Expand Down
2 changes: 1 addition & 1 deletion src/api/shared.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from fastapi import Depends
from dependency_injector.wiring import Provide
from fastapi import Depends


def dependency(provider):
Expand Down
2 changes: 1 addition & 1 deletion src/cli/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from pathlib import Path
import sys
from pathlib import Path

# add base project path to PYTHONPATH
BASE_DIR = Path(__file__).resolve().parent.parent
Expand Down
24 changes: 8 additions & 16 deletions src/cli/__main__.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,20 @@
from seedwork.infrastructure.request_context import request_context
from seedwork.infrastructure.logging import logger, LoggerFactory
from config.container import Container
from modules.catalog.domain.repositories import SellerRepository
from modules.catalog.application.query.get_all_listings import GetAllListings
from modules.catalog.application.query.get_listings_of_seller import GetListingsOfSeller
from modules.catalog.application.command.create_listing_draft import (
CreateListingDraftCommand,
)


# a sample command line script to print all listings
# run with "cd src && python -m cli"

# configure logger prior to first usage
import uuid

from sqlalchemy.orm import Session

from config.container import Container
from modules.catalog.domain.entities import Listing, Money
from modules.catalog.infrastructure.listing_repository import (
PostgresJsonListingRepository,
Base,
PostgresJsonListingRepository,
)
from seedwork.infrastructure.logging import LoggerFactory, logger
from seedwork.infrastructure.request_context import request_context

# a sample command line script to print all listings
# run with "cd src && python -m cli"

from modules.catalog.domain.entities import Listing, Money

LoggerFactory.configure(logger_name="cli")

Expand Down
2 changes: 0 additions & 2 deletions src/config/api_config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from typing import cast
import os
from pydantic import BaseSettings, Field

# env_filename = os.getenv("ENV_FILENAME", ".env")
Expand Down
9 changes: 3 additions & 6 deletions src/config/container.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import uuid
import logging
from sqlalchemy import create_engine
from dependency_injector import containers, providers
from dependency_injector.wiring import inject # noqa
from sqlalchemy import create_engine

from modules.catalog.module import CatalogModule
from modules.catalog.infrastructure.listing_repository import (
PostgresJsonListingRepository,
)
from modules.iam.module import IdentityAndAccessModule
from modules.catalog.module import CatalogModule
from modules.iam.application.services import AuthenticationService
from modules.iam.infrastructure.user_repository import PostgresJsonUserRepository

from modules.iam.module import IdentityAndAccessModule
from seedwork.infrastructure.request_context import RequestContext


Expand Down
2 changes: 1 addition & 1 deletion src/conftest.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from seedwork.infrastructure.database import Base

from config.api_config import ApiConfig
from seedwork.infrastructure.database import Base


@pytest.fixture
Expand Down
3 changes: 2 additions & 1 deletion src/modules/bidding/application/command/place_bid.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from decimal import Decimal

from seedwork.application.command_handlers import CommandResult
from seedwork.application.decorators import command_handler
from src.modules.bidding.domain.entities import Listing
from src.modules.bidding.domain.value_objects import Bid, Bidder, Money
from src.modules.bidding.domain.repositories import ListingRepository
from src.modules.bidding.domain.value_objects import Bid, Bidder, Money


class PlaceBidCommand:
Expand Down
3 changes: 2 additions & 1 deletion src/modules/bidding/application/command/retract_bid.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from decimal import Decimal

from seedwork.application.command_handlers import CommandResult
from seedwork.application.decorators import command_handler
from src.modules.bidding.domain.entities import Listing
from src.modules.bidding.domain.value_objects import Bidder
from src.modules.bidding.domain.repositories import ListingRepository
from src.modules.bidding.domain.value_objects import Bidder


class RetractBidCommand:
Expand Down
7 changes: 4 additions & 3 deletions src/modules/bidding/application/query/get_pastdue_listings.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from datetime import datetime
from seedwork.application.queries import Query, Field
from seedwork.application.query_handlers import QueryResult
from seedwork.application.decorators import query_handler

from modules.bidding.domain.repositories import ListingRepository
from seedwork.application.decorators import query_handler
from seedwork.application.queries import Field, Query
from seedwork.application.query_handlers import QueryResult


class GetPastdueListingsQuery(Query):
Expand Down
19 changes: 10 additions & 9 deletions src/modules/bidding/domain/entities.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from typing import List, Optional
from modules.bidding.domain.value_objects import Bid, Bidder, Seller
from typing import Optional

from modules.bidding.domain.rules import (
PlacedBidMustBeGreaterThanCurrentWinningBid,
BidCanBeRetracted,
ListingCanBeCancelled,
PlacedBidMustBeGreaterThanCurrentWinningBid,
)
from modules.bidding.domain.value_objects import Bid, Bidder, Seller
from seedwork.domain.entities import AggregateRoot
from seedwork.domain.exceptions import DomainException
from seedwork.domain.events import DomainEvent
from seedwork.domain.exceptions import DomainException
from seedwork.domain.value_objects import Money


Expand Down Expand Up @@ -42,14 +43,14 @@ class Listing(AggregateRoot):
seller: Seller
initial_price: Money
ends_at: datetime
bids: List[Bid] = field(default_factory=list)
bids: list[Bid] = field(default_factory=list)
current_price: Money = field(init=False)

def __post_init__(self) -> None:
self.current_price = self.initial_price

# public commands
def place_bid(self, bid: Bid) -> List[DomainEvent]:
def place_bid(self, bid: Bid) -> list[DomainEvent]:
"""Public method"""
self.check_rule(
PlacedBidMustBeGreaterThanCurrentWinningBid(
Expand All @@ -64,7 +65,7 @@ def place_bid(self, bid: Bid) -> List[DomainEvent]:

return [BidPlacedEvent(listing_id=self.id, bidder=bid.bidder, price=bid.price)]

def retract_bid_of(self, bidder: Bidder) -> List[DomainEvent]:
def retract_bid_of(self, bidder: Bidder) -> list[DomainEvent]:
"""Public method"""
bid = self.get_bid_of(bidder)
self.check_rule(
Expand All @@ -74,7 +75,7 @@ def retract_bid_of(self, bidder: Bidder) -> List[DomainEvent]:
self._remove_bid_of(bidder=bidder)
return [BidRetractedEvent(listing_id=self.id, bidder_id=bidder.uuid)]

def cancel_listing(self) -> List[DomainEvent]:
def cancel_listing(self) -> list[DomainEvent]:
self.check_rule(
ListingCanBeCancelled(
time_left_in_listing=self.time_left_in_listing,
Expand All @@ -84,7 +85,7 @@ def cancel_listing(self) -> List[DomainEvent]:
self.ends_at = datetime.utcnow()
return [ListingCancelledEvent(listing_id=self.id)]

def end_bidding(self) -> List[DomainEvent]:
def end_bidding(self) -> list[DomainEvent]:
raise NotImplementedError()
return []

Expand Down
7 changes: 4 additions & 3 deletions src/modules/bidding/domain/rules.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from datetime import datetime, timedelta

from pydantic import Field
from typing import Optional
from datetime import date, datetime, timedelta
from seedwork.domain.rules import BusinessRule

from modules.bidding.domain.value_objects import Bid
from seedwork.domain.rules import BusinessRule
from seedwork.domain.value_objects import Money


Expand Down
11 changes: 6 additions & 5 deletions src/modules/bidding/domain/test_listing.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from freezegun import freeze_time
import pytest
from datetime import datetime, timedelta
from modules.bidding.domain.entities import Seller, Listing, Money
from modules.bidding.domain.value_objects import Bidder, Bid
from seedwork.domain.value_objects import UUID

import pytest

from modules.bidding.domain.entities import Listing, Money, Seller
from modules.bidding.domain.value_objects import Bid, Bidder
from seedwork.domain.exceptions import BusinessRuleValidationException
from seedwork.domain.value_objects import UUID


def test_listing_initial_price():
Expand Down
Loading

0 comments on commit d05566a

Please sign in to comment.