luxorasap 0.1.27__tar.gz → 0.1.29__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 (34) hide show
  1. {luxorasap-0.1.27 → luxorasap-0.1.29}/PKG-INFO +1 -1
  2. {luxorasap-0.1.27 → luxorasap-0.1.29}/pyproject.toml +2 -2
  3. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/__init__.py +1 -1
  4. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/ingest/cloud/__init__.py +18 -3
  5. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/PKG-INFO +1 -1
  6. {luxorasap-0.1.27 → luxorasap-0.1.29}/README.md +0 -0
  7. {luxorasap-0.1.27 → luxorasap-0.1.29}/setup.cfg +0 -0
  8. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/btgapi/__init__.py +0 -0
  9. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/btgapi/auth.py +0 -0
  10. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/btgapi/reports.py +0 -0
  11. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/btgapi/trades.py +0 -0
  12. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/datareader/__init__.py +0 -0
  13. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/datareader/core.py +0 -0
  14. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/ingest/__init__.py +0 -0
  15. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/ingest/legacy_local/dataloader.py +0 -0
  16. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/__init__.py +0 -0
  17. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/dataframe/__init__.py +0 -0
  18. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/dataframe/reader.py +0 -0
  19. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/dataframe/transforms.py +0 -0
  20. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/storage/__init__.py +0 -0
  21. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap/utils/storage/blob.py +0 -0
  22. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/SOURCES.txt +0 -0
  23. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/dependency_links.txt +0 -0
  24. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/entry_points.txt +0 -0
  25. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/requires.txt +0 -0
  26. {luxorasap-0.1.27 → luxorasap-0.1.29}/src/luxorasap.egg-info/top_level.txt +0 -0
  27. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_btgapi_auth.py +0 -0
  28. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_btgapi_reports.py +0 -0
  29. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_btgapi_trades.py +0 -0
  30. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_datareader.py +0 -0
  31. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_ingest_cloud.py +0 -0
  32. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_ingest_legacy_local.py +0 -0
  33. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_utils_dataframe.py +0 -0
  34. {luxorasap-0.1.27 → luxorasap-0.1.29}/tests/test_utils_storage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: luxorasap
3
- Version: 0.1.27
3
+ Version: 0.1.29
4
4
  Summary: Toolbox da Luxor para ingestão, análise e automação de dados financeiros.
5
5
  Author-email: Luxor Group <backoffice@luxor.com.br>
6
6
  License: Proprietary – All rights reserved
@@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
10
10
  #############################
11
11
  [project]
12
12
  name = "luxorasap"
13
- version = "0.1.27"
13
+ version = "0.1.29"
14
14
  description = "Toolbox da Luxor para ingestão, análise e automação de dados financeiros."
15
15
  readme = "README.md"
16
16
  requires-python = ">=3.9"
@@ -78,7 +78,7 @@ exclude = ["tests*"]
78
78
  # bumpver (sem-ver)
79
79
  #############################
80
80
  [tool.bumpver]
81
- current_version = "0.1.27"
81
+ current_version = "0.1.29"
82
82
  version_pattern = "MAJOR.MINOR.PATCH"
83
83
 
84
84
  # regex explícito – obrigatório no bumpver 2024+
@@ -13,7 +13,7 @@ from types import ModuleType
13
13
  try:
14
14
  __version__: str = metadata.version(__name__)
15
15
  except metadata.PackageNotFoundError: # editable install
16
- __version__ = "0.1.27"
16
+ __version__ = "0.1.29"
17
17
 
18
18
  # ─── Lazy loader ─────────────────────────────────────────────────
19
19
  def __getattr__(name: str) -> ModuleType:
@@ -2,6 +2,7 @@
2
2
 
3
3
  import pandas as pd
4
4
  import datetime as dt
5
+ import numpy as np
5
6
 
6
7
  from luxorasap.utils.storage import BlobParquetClient
7
8
  from luxorasap.utils.dataframe import prep_for_save, astype_str_inplace
@@ -28,6 +29,12 @@ def save_table(
28
29
 
29
30
  if 'Last_Updated' not in df.columns:
30
31
  df['Last_Updated'] = dt.datetime.now()
32
+ else:
33
+ # usando numpy, vamos substituir NaN ou 'nan' pela data e hora de agora
34
+ df["Last_Updated"] = np.where(((df["Last_Updated"].isna()) | (df["Last_Updated"] == 'nan')),
35
+ dt.datetime.now(),
36
+ df["Last_Updated"]
37
+ )
31
38
 
32
39
  if override == False:
33
40
  lq = LuxorQuery()
@@ -51,16 +58,24 @@ def incremental_load(
51
58
  index: bool = False,
52
59
  index_name: str = "index",
53
60
  normalize_columns: bool = True,
54
- directory: str = "enriched/parquet"
61
+ directory: str = "enriched/parquet",
62
+ unique_columns: list = None
55
63
  ):
56
64
  """Concatena novos dados aos existentes, cortando duplicados pela data."""
57
65
  df["Last_Updated"] = dt.datetime.now()
58
66
 
59
67
  if lq.table_exists(table_name):
60
68
  prev = lq.get_table(table_name)
61
- cutoff = df[increment_column].max()
62
- prev = prev.query(f"{increment_column} < @cutoff")
69
+ if increment_column is not None:
70
+ if increment_column not in df.columns:
71
+ raise ValueError(f"Coluna de incremento '{increment_column}' não existe no DataFrame.")
72
+ cutoff = df[increment_column].max()
73
+ prev = prev.query(f"{increment_column} < @cutoff")
63
74
  df = pd.concat([prev, df], ignore_index=True)
75
+ # remover duplicados
76
+
77
+ if unique_columns is not None:
78
+ df = df.drop_duplicates(subset=unique_columns, keep='last')
64
79
 
65
80
  save_table(
66
81
  table_name,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: luxorasap
3
- Version: 0.1.27
3
+ Version: 0.1.29
4
4
  Summary: Toolbox da Luxor para ingestão, análise e automação de dados financeiros.
5
5
  Author-email: Luxor Group <backoffice@luxor.com.br>
6
6
  License: Proprietary – All rights reserved
File without changes
File without changes