oleksiisaiun_lab6_monaco 4.1__tar.gz → 5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/PKG-INFO +1 -1
  2. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/pyproject.toml +1 -1
  3. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco/race_report.py +13 -1
  4. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco.egg-info/PKG-INFO +1 -1
  5. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco.egg-info/SOURCES.txt +0 -2
  6. oleksiisaiun_lab6_monaco-4.1/src/oleksiisaiun_lab6_monaco/constants.py +0 -16
  7. oleksiisaiun_lab6_monaco-4.1/src/oleksiisaiun_lab6_monaco/utilities.py +0 -43
  8. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/LICENSE +0 -0
  9. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/MANIFEST.in +0 -0
  10. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/README.md +0 -0
  11. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/setup.cfg +0 -0
  12. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco/__init__.py +0 -0
  13. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco/data/abbreviations.txt +0 -0
  14. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco/data/end.log +0 -0
  15. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco/data/start.log +0 -0
  16. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco.egg-info/dependency_links.txt +0 -0
  17. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco.egg-info/requires.txt +0 -0
  18. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/src/oleksiisaiun_lab6_monaco.egg-info/top_level.txt +0 -0
  19. {oleksiisaiun_lab6_monaco-4.1 → oleksiisaiun_lab6_monaco-5.1}/tests/test_race_report.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oleksiisaiun_lab6_monaco
3
- Version: 4.1
3
+ Version: 5.1
4
4
  Summary: The Python application that implements Monaco Racing Report in OOP format
5
5
  Author-email: Oleksii Saiun <oleksiisaiun@example.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "oleksiisaiun_lab6_monaco"
3
- version = "4.1"
3
+ version = "5.1"
4
4
  description = "The Python application that implements Monaco Racing Report in OOP format"
5
5
  authors = [
6
6
  { name = "Oleksii Saiun", email = "oleksiisaiun@example.com" }
@@ -1,8 +1,20 @@
1
1
  import os
2
2
  from dataclasses import dataclass
3
3
  from datetime import datetime
4
- from constants import *
5
4
 
5
+ import re
6
+ ABBR_ROW_PATTERN = re.compile(
7
+ r"^(?P<abbr>[A-Z]{3})_(?P<driver>[A-Za-z .'-]+)_(?P<team>[A-Z0-9 &'()-]+)$"
8
+ )
9
+
10
+ START_STOP_ROW_PATTERN = re.compile(
11
+ r'^(?P<abbr>[A-Z]{3})(?P<time_event>\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\.\d{3})$'
12
+ )
13
+
14
+ ERR_MSG__LAP_TIME_ZERO_OR_NEGATIVE="LAP_TIME_CAN_NOT_BE_ZERO_OR_NEGATIVE"
15
+ ERR_MSG__EMPTY_START_OR_STOP_TIME="EMPTY_START_OR_STOP_TIME"
16
+ ERR_MSG__INVALID_FORMAT_OF_TIME_EVENT_ROW ='INVALID_FORMAT_OF_TIME_EVENT_ROW'
17
+ ERR_PREFIX='INVALID_ABBREVIATION_ROW_'
6
18
 
7
19
  @dataclass
8
20
  class RecordData:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oleksiisaiun_lab6_monaco
3
- Version: 4.1
3
+ Version: 5.1
4
4
  Summary: The Python application that implements Monaco Racing Report in OOP format
5
5
  Author-email: Oleksii Saiun <oleksiisaiun@example.com>
6
6
  License: MIT
@@ -3,9 +3,7 @@ MANIFEST.in
3
3
  README.md
4
4
  pyproject.toml
5
5
  src/oleksiisaiun_lab6_monaco/__init__.py
6
- src/oleksiisaiun_lab6_monaco/constants.py
7
6
  src/oleksiisaiun_lab6_monaco/race_report.py
8
- src/oleksiisaiun_lab6_monaco/utilities.py
9
7
  src/oleksiisaiun_lab6_monaco.egg-info/PKG-INFO
10
8
  src/oleksiisaiun_lab6_monaco.egg-info/SOURCES.txt
11
9
  src/oleksiisaiun_lab6_monaco.egg-info/dependency_links.txt
@@ -1,16 +0,0 @@
1
- import re
2
-
3
-
4
- ABBR_ROW_PATTERN = re.compile(
5
- r"^(?P<abbr>[A-Z]{3})_(?P<driver>[A-Za-z .'-]+)_(?P<team>[A-Z0-9 &'()-]+)$"
6
- )
7
-
8
-
9
- START_STOP_ROW_PATTERN = re.compile(
10
- r'^(?P<abbr>[A-Z]{3})(?P<time_event>\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\.\d{3})$'
11
- )
12
-
13
- ERR_MSG__LAP_TIME_ZERO_OR_NEGATIVE="LAP_TIME_CAN_NOT_BE_ZERO_OR_NEGATIVE"
14
- ERR_MSG__EMPTY_START_OR_STOP_TIME="EMPTY_START_OR_STOP_TIME"
15
- ERR_MSG__INVALID_FORMAT_OF_TIME_EVENT_ROW ='INVALID_FORMAT_OF_TIME_EVENT_ROW'
16
- ERR_PREFIX='INVALID_ABBREVIATION_ROW_'
@@ -1,43 +0,0 @@
1
- import os
2
- from datetime import datetime
3
- from race_report import RecordData
4
- from constants import ABBR_ROW_PATTERN,START_STOP_ROW_PATTERN,ERR_MSG__INVALID_FORMAT_OF_TIME_EVENT_ROW
5
-
6
- def is_valid_datetime(value: str, datetime_format: str = "%Y-%m-%d_%H:%M:%S.%f") -> bool:
7
- try:
8
- datetime.strptime(value, datetime_format)
9
- return True
10
- except ValueError:
11
- return False
12
-
13
- def validate_if_file_exists(filepath) -> bool:
14
- """Check if the folder and file exist, raise error if not."""
15
- if not os.path.isfile(filepath):
16
- raise FileNotFoundError(f"File not found: {filepath}")
17
-
18
- folder = os.path.dirname(filepath)
19
- if folder and not os.path.exists(folder):
20
- raise FileNotFoundError(f"Folder does not exist: {folder}")
21
- return True
22
-
23
-
24
- def validate_abbreviation_row(row: str) -> RecordData:
25
- match = ABBR_ROW_PATTERN.match(row)
26
- if match:
27
- driver_entry = RecordData(abbr=match.group('abbr'), driver=match.group('driver'), team=match.group('team'))
28
- return driver_entry
29
-
30
- return None
31
-
32
- def validate_start_stop_row(row: str) -> (str, datetime):
33
- match = START_STOP_ROW_PATTERN.match(row)
34
- if match:
35
- abbr = match.group('abbr')
36
- time_event_raw=match.group('time_event')
37
- if is_valid_datetime(time_event_raw):
38
- time_event = datetime.strptime(time_event_raw, "%Y-%m-%d_%H:%M:%S.%f")
39
- event_time_out = (abbr, time_event)
40
- return event_time_out
41
-
42
- print(f"discard row: [{row}], because {ERR_MSG__INVALID_FORMAT_OF_TIME_EVENT_ROW}")
43
- return None # if start or stop row has invalid then a row is discarded