-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add function to get EdifactFormat and Version of files, with tests #124
Conversation
Die alten Tests failen, weil die |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ist schon schön test-driven :) Ein paar Sachen - v.a. die Testparametrisierung können wir noch ein bisschen besser machen
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Passt für mich im großen und ganzen.
Allerdings fände ich es schöner, wenn wir leere listen statt [None]
zurückgeben.
Dann würdest du dir sogar das Typing vereinfachen, weil der type dann nur noch list[EdifactFormat]
ist statt list[Optional[EdifactFormat]]
und man downstream nur noch prüfen muss, ob die liste einträge hat anstatt zu checken: hat die liste Einträage und sind diese Einträge nicht None.
Ich glaube das ist so gewachsen, weil wir erst dachten, es gäbe eines oder kein EdifactFormat (also nicht-None oder None). Dann hast du entdeckt, dass die CONTRL/APERAK AHBs mehrere Formaten zuzuordnen sind und wir sind auf eine Liste gewechselt. Mit der liste ist die Unterscheidung "keines/eines/mehrere" aber nicht mehr eine Entscheidung zwischen nicht-None und None, sondern wird einfch durch die länge der liste repräsentiert.
@hf-krechan was meinst du?
src/edi_energy_scraper/__init__.py
Outdated
edifactformat: List[Optional[EdifactFormat]] = [] | ||
for entry in EdifactFormat: | ||
if str(entry) in filename: | ||
edifactformat.append(entry) | ||
if not edifactformat: | ||
edifactformat = [None] | ||
return version, edifactformat |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
edifactformat: List[Optional[EdifactFormat]] = [] | |
for entry in EdifactFormat: | |
if str(entry) in filename: | |
edifactformat.append(entry) | |
if not edifactformat: | |
edifactformat = [None] | |
return version, edifactformat | |
edifactformats: List[Optional[EdifactFormat]] = [] | |
for entry in EdifactFormat: | |
if str(entry) in filename: | |
edifactformats.append(entry) | |
if not any(edifactformats): | |
edifactformats = [None] | |
return version, edifactformats |
plural dinge (wie listen) sollen plural namen haben
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ahja, oder so. Wie gesagt, nur plural S überlese ich leicht
src/edi_energy_scraper/__init__.py
Outdated
@@ -301,6 +303,27 @@ async def _download( | |||
raise | |||
return file_path | |||
|
|||
@staticmethod |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wenn es eine static-method ist, dann kannst du auch gleich eine function draus machen (die anders als methods) keiner klasse angehört.
src/edi_energy_scraper/__init__.py
Outdated
@@ -301,6 +303,27 @@ async def _download( | |||
raise | |||
return file_path | |||
|
|||
@staticmethod | |||
def get_edifact_format(path: Path) -> Tuple[EdifactFormatVersion, List[Optional[EdifactFormat]]]: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vllt edifact_formats (plural) and version? wobei der return-ype hint ja schon viel verrät.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tjaja good old naming
vielleicht so get_edifact_version_and_formats
src/edi_energy_scraper/__init__.py
Outdated
if not edifactformat: | ||
edifactformat = [None] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das versteh ich nicht: warum adden wir None zur liste anstatt sie leer zu lassen?
Nach außen würde doch genügen, wenn wir eine leere liste haben anstatt eine liste mit None als einzigem Eintrag.
Für mich drückt eine leere liste genau das aus, was es ist: die datei kann len(formats)==0 formaten zugeordnet werden.
das None als einziger Eintrag scheint mir doppelt gemoppelt/nur zum selbstzweck.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ja würde ich auch rausnehmen. Spart auch zwei Zeilen Code :)
src/edi_energy_scraper/__init__.py
Outdated
berlin = pytz.timezone("Europe/Berlin") | ||
berlin_local_time = datetime.datetime.strptime(date_string, date_format).astimezone(berlin) | ||
version = get_edifact_format_version(berlin_local_time) | ||
edifactformat: List[Optional[EdifactFormat]] = [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ich finde es angenehm wenn ich der variable ansehe, ob es sich um eine Liste/Array oder etwas Einzelnes handelt.
list_of_edifactformats
. Reines Plural-S übersieht man leicht.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sehr schöne Tests. Das mit dem None
in der Liste würde ich noch rausmachen und das Plural bei der Liste.
Sonst passt das für mich.
Vielen lieben Dank 👍
In order to sort files into format version specific folders, a function determining EdifactFormatVersion and EdifactFormat with tests is added.