transdesk-importer-python-sdk 1.3.0__tar.gz → 1.3.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 (38) hide show
  1. {transdesk_importer_python_sdk-1.3.0/src/transdesk_importer_python_sdk.egg-info → transdesk_importer_python_sdk-1.3.1}/PKG-INFO +1 -1
  2. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/pyproject.toml +1 -1
  3. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/shared/data_normalizer.py +24 -0
  4. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/internal/internal_mapper.py +6 -3
  5. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1/src/transdesk_importer_python_sdk.egg-info}/PKG-INFO +1 -1
  6. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/tests/test_data_normalizer.py +17 -0
  7. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/tests/test_vehicle_details.py +11 -0
  8. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/LICENSE +0 -0
  9. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/README.md +0 -0
  10. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/setup.cfg +0 -0
  11. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/__init__.py +0 -0
  12. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/client.py +0 -0
  13. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/exporters/__init__.py +0 -0
  14. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/exporters/json_exporter.py +0 -0
  15. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/models/__init__.py +0 -0
  16. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/models/canonical.py +0 -0
  17. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/models/internal.py +0 -0
  18. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/readers/__init__.py +0 -0
  19. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/readers/excel_reader.py +0 -0
  20. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/shared/__init__.py +0 -0
  21. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/__init__.py +0 -0
  22. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/canonical/__init__.py +0 -0
  23. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/canonical/apolice_builder.py +0 -0
  24. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/canonical/cobertura_builder.py +0 -0
  25. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/canonical/item_classifier.py +0 -0
  26. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/internal/__init__.py +0 -0
  27. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/internal/coverage_mapper.py +0 -0
  28. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/internal/rcf_parser.py +0 -0
  29. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/transformers/internal/towing_parser.py +0 -0
  30. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/validators/__init__.py +0 -0
  31. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk/importer/validators/internal_policy_validator.py +0 -0
  32. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk_importer_python_sdk.egg-info/SOURCES.txt +0 -0
  33. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk_importer_python_sdk.egg-info/dependency_links.txt +0 -0
  34. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk_importer_python_sdk.egg-info/requires.txt +0 -0
  35. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/src/transdesk_importer_python_sdk.egg-info/top_level.txt +0 -0
  36. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/tests/test_excel_reader.py +0 -0
  37. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/tests/test_importer.py +0 -0
  38. {transdesk_importer_python_sdk-1.3.0 → transdesk_importer_python_sdk-1.3.1}/tests/test_validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: transdesk-importer-python-sdk
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg
5
5
  Author-email: FMConsult <contato@fmconsult.com.br>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "transdesk-importer-python-sdk"
7
- version = "1.3.0"
7
+ version = "1.3.1"
8
8
  description = "SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -49,6 +49,30 @@ class DataNormalizer:
49
49
  except Exception:
50
50
  return None
51
51
 
52
+ @staticmethod
53
+ def parse_vehicle_years(value):
54
+ """Converte ANO da planilha em (ano_fabricacao, ano_modelo).
55
+
56
+ Aceita:
57
+ - ``2022`` → (2022, 2022)
58
+ - ``2014/2014`` ou ``2022/2023`` → (fab, mod)
59
+ """
60
+ if value in (None, ""):
61
+ return None, None
62
+
63
+ text = str(value).strip()
64
+ if not text:
65
+ return None, None
66
+
67
+ if "/" in text:
68
+ left, _, right = text.partition("/")
69
+ fab = DataNormalizer.to_int(left)
70
+ mod = DataNormalizer.to_int(right)
71
+ return fab, mod
72
+
73
+ year = DataNormalizer.to_int(text)
74
+ return year, year
75
+
52
76
  @staticmethod
53
77
  def to_str(value):
54
78
  if value in (None, ""):
@@ -245,9 +245,12 @@ class InternalMapper:
245
245
  getattr(risco, "renavam", None)
246
246
  )
247
247
  internal_item.color = getattr(risco, "cor", None) or None
248
- year = DataNormalizer.to_int(getattr(risco, "ano", None))
249
- internal_item.model_year = year
250
- internal_item.manufacture_year = year
248
+ # Planilha TransDesk: ANO como "2022" ou "2014/2015" (fab/mod).
249
+ fab_year, mod_year = DataNormalizer.parse_vehicle_years(
250
+ getattr(risco, "ano", None)
251
+ )
252
+ internal_item.manufacture_year = fab_year
253
+ internal_item.model_year = mod_year
251
254
  internal_item.axles = DataNormalizer.to_int(getattr(risco, "eixos", None))
252
255
  internal_item.transmission = getattr(risco, "cambio", None) or None
253
256
  internal_item.is_alienated = DataNormalizer.to_bool(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: transdesk-importer-python-sdk
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg
5
5
  Author-email: FMConsult <contato@fmconsult.com.br>
6
6
  License: MIT License
@@ -24,3 +24,20 @@ from transdesk.importer.shared.data_normalizer import DataNormalizer
24
24
  )
25
25
  def test_to_bool(value, expected):
26
26
  assert DataNormalizer.to_bool(value) is expected
27
+
28
+
29
+ @pytest.mark.parametrize(
30
+ "value,expected",
31
+ [
32
+ (None, (None, None)),
33
+ ("", (None, None)),
34
+ ("2022", (2022, 2022)),
35
+ ("2014/2014", (2014, 2014)),
36
+ ("2022/2023", (2022, 2023)),
37
+ (" 2011 / 2012 ", (2011, 2012)),
38
+ ("abc", (None, None)),
39
+ ("2022/abc", (2022, None)),
40
+ ],
41
+ )
42
+ def test_parse_vehicle_years(value, expected):
43
+ assert DataNormalizer.parse_vehicle_years(value) == expected
@@ -63,6 +63,17 @@ def test_vehicle_details_mapped_from_spreadsheet_columns():
63
63
  assert item.vehicle_tracker_company is None
64
64
 
65
65
 
66
+ def test_vehicle_years_from_fab_mod_slash_format():
67
+ """Carga TransDesk real usa ANO como ``fab/mod`` (ex.: 2014/2014)."""
68
+ item = _build_item([_base_row(ANO="2014/2014")])
69
+ assert item.manufacture_year == 2014
70
+ assert item.model_year == 2014
71
+
72
+ item2 = _build_item([_base_row(ANO="2022/2023")])
73
+ assert item2.manufacture_year == 2022
74
+ assert item2.model_year == 2023
75
+
76
+
66
77
  def test_vehicle_tracker_company_only_when_has_tracker():
67
78
  with_tracker = _build_item([
68
79
  _base_row(NME_BENEFICIO="Casco PT (VEÍCULO)", VALOR_MENSALIDADE="100.00"),