luxorasap 0.1.28__tar.gz → 0.1.30__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.
- {luxorasap-0.1.28 → luxorasap-0.1.30}/PKG-INFO +1 -1
- {luxorasap-0.1.28 → luxorasap-0.1.30}/pyproject.toml +2 -2
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/__init__.py +1 -1
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/datareader/core.py +2 -2
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/ingest/cloud/__init__.py +8 -4
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/PKG-INFO +1 -1
- {luxorasap-0.1.28 → luxorasap-0.1.30}/README.md +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/setup.cfg +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/btgapi/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/btgapi/auth.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/btgapi/reports.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/btgapi/trades.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/datareader/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/ingest/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/ingest/legacy_local/dataloader.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/dataframe/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/dataframe/reader.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/dataframe/transforms.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/storage/__init__.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap/utils/storage/blob.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/SOURCES.txt +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/dependency_links.txt +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/entry_points.txt +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/requires.txt +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/src/luxorasap.egg-info/top_level.txt +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_btgapi_auth.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_btgapi_reports.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_btgapi_trades.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_datareader.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_ingest_cloud.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_ingest_legacy_local.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_utils_dataframe.py +0 -0
- {luxorasap-0.1.28 → luxorasap-0.1.30}/tests/test_utils_storage.py +0 -0
|
@@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
|
|
|
10
10
|
#############################
|
|
11
11
|
[project]
|
|
12
12
|
name = "luxorasap"
|
|
13
|
-
version = "0.1.
|
|
13
|
+
version = "0.1.30"
|
|
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.
|
|
81
|
+
current_version = "0.1.30"
|
|
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.
|
|
16
|
+
__version__ = "0.1.30"
|
|
17
17
|
|
|
18
18
|
# ─── Lazy loader ─────────────────────────────────────────────────
|
|
19
19
|
def __getattr__(name: str) -> ModuleType:
|
|
@@ -1351,8 +1351,8 @@ class LuxorQuery:
|
|
|
1351
1351
|
assets = self.get_table("assets")[["Key", "Asset", "Ticker", "Ticker_BBG",]].rename(columns={"Key":"Asset_ID"})
|
|
1352
1352
|
|
|
1353
1353
|
assets["Price_Key"] = assets["Asset_ID"].apply(lambda x: self.get_price_key(x))
|
|
1354
|
-
asset_price_key_map = {"etf s&p" : 'voo us equity', "spx hawker": "spx hawker
|
|
1355
|
-
"localiza" : "rent3 bz equity", "suzano":"suzb3 bz equity"}
|
|
1354
|
+
asset_price_key_map = {"etf s&p" : 'voo us equity', "spx hawker": "spx fund spc - hawker portfolio class a shares september 2018 series",
|
|
1355
|
+
"berkshire" : "brk/b us equity", "localiza" : "rent3 bz equity", "suzano":"suzb3 bz equity", 'tci': 'the childrens investment fund class h apr 2025'}
|
|
1356
1356
|
assets["Price_Key"] = assets.apply(lambda row: asset_price_key_map[row["Asset"]] if row["Asset"] in asset_price_key_map else row["Price_Key"], axis=1)
|
|
1357
1357
|
|
|
1358
1358
|
df = df.rename(columns={"Price_Key": "Price_Old_key"})
|
|
@@ -66,12 +66,16 @@ def incremental_load(
|
|
|
66
66
|
|
|
67
67
|
if lq.table_exists(table_name):
|
|
68
68
|
prev = lq.get_table(table_name)
|
|
69
|
-
|
|
70
|
-
|
|
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")
|
|
71
74
|
df = pd.concat([prev, df], ignore_index=True)
|
|
72
75
|
# remover duplicados
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
|
|
77
|
+
if unique_columns is not None:
|
|
78
|
+
df = df.drop_duplicates(subset=unique_columns, keep='last')
|
|
75
79
|
|
|
76
80
|
save_table(
|
|
77
81
|
table_name,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|