generated from felixm/defaultpy
Update project structure and move to beancount
This commit is contained in:
76
src/toldg/models.py
Normal file
76
src/toldg/models.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
UNKNOWN_CATEGORY = "account2"
|
||||
|
||||
|
||||
class CsvConfig(BaseModel):
|
||||
"""
|
||||
Class to define how to parse a certain CSV file. We use the
|
||||
file_match_regex attribute to decide whether to apply a config for a file.
|
||||
If multiple configs match a single file we raise an exception.
|
||||
"""
|
||||
|
||||
class Config:
|
||||
extra = "forbid"
|
||||
|
||||
account1: str
|
||||
file_match_regex: str
|
||||
fields: List[str]
|
||||
input_date_format: str = "%m/%d/%Y"
|
||||
output_date_format: str = "%Y/%m/%d"
|
||||
skip: int = 1
|
||||
delimiter: str = ","
|
||||
quotechar: str = '"'
|
||||
currency: str = "USD"
|
||||
|
||||
|
||||
class Config(BaseModel):
|
||||
"""
|
||||
Configuration class for managing file search and data processing settings.
|
||||
|
||||
Attributes:
|
||||
input_directory (Path): Where to search for 'ldg' and 'csv' files.
|
||||
mappings_file (Path): The path to a 'json' file that contains account2 mappings.
|
||||
output_file (Path): Location to which to write the output 'ldg' file.
|
||||
csv_configs: List of CsvConfig which explains how to handle specific
|
||||
CSV files.
|
||||
categories (List[str]): A list of account2s. An account has to be defined here
|
||||
before it can be used in a mapping. Otherwise, ledger will complain.
|
||||
commodities (List[str]): A list of commodities relevant to the data processing.
|
||||
find_duplicates (bool): Flag to check and abort on duplicated transactions. Not
|
||||
really useful.
|
||||
"""
|
||||
|
||||
class Config:
|
||||
extra = "forbid"
|
||||
|
||||
input_directory: Path
|
||||
mappings_file: Path
|
||||
descriptions_file: Optional[Path] = None
|
||||
output_file: Path = Path("output.ldg")
|
||||
csv_configs: List[CsvConfig]
|
||||
categories: List[str]
|
||||
commodities: List[str]
|
||||
find_duplicates: bool = False
|
||||
|
||||
|
||||
class Transaction(BaseModel):
|
||||
"""
|
||||
Class for ledger transaction to render into ldg file.
|
||||
"""
|
||||
|
||||
class Config:
|
||||
extra = "forbid"
|
||||
|
||||
currency: str
|
||||
debit: str
|
||||
credit: str
|
||||
date: str
|
||||
account1: str
|
||||
account2: str
|
||||
description: str
|
||||
csv_file: str
|
||||
row: str
|
||||
Reference in New Issue
Block a user