vizflow 0.5.5__py3-none-any.whl → 0.5.7__py3-none-any.whl
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.
vizflow/io.py
CHANGED
|
@@ -167,6 +167,8 @@ def scan_trade(date: str, config: Config | None = None) -> pl.LazyFrame:
|
|
|
167
167
|
if schema:
|
|
168
168
|
df = _apply_schema_evolution(df, schema)
|
|
169
169
|
|
|
170
|
+
df = df.with_columns(pl.lit(date).str.to_date("%Y%m%d").cast(pl.Date).alias("data_date"))
|
|
171
|
+
|
|
170
172
|
return df
|
|
171
173
|
|
|
172
174
|
|
|
@@ -213,7 +215,7 @@ def scan_trades(config: Config | None = None) -> pl.LazyFrame:
|
|
|
213
215
|
df = _apply_schema_evolution(df, schema)
|
|
214
216
|
date = _extract_date_from_path(f, config.trade_pattern)
|
|
215
217
|
if date:
|
|
216
|
-
df = df.with_columns(pl.lit(date).alias("data_date"))
|
|
218
|
+
df = df.with_columns(pl.lit(date).str.to_date("%Y%m%d").cast(pl.Date).alias("data_date"))
|
|
217
219
|
dfs.append(df)
|
|
218
220
|
|
|
219
221
|
return pl.concat(dfs)
|
|
@@ -246,6 +248,8 @@ def scan_alpha(date: str, config: Config | None = None) -> pl.LazyFrame:
|
|
|
246
248
|
if schema:
|
|
247
249
|
df = _apply_schema_evolution(df, schema)
|
|
248
250
|
|
|
251
|
+
df = df.with_columns(pl.lit(date).str.to_date("%Y%m%d").cast(pl.Date).alias("data_date"))
|
|
252
|
+
|
|
249
253
|
return df
|
|
250
254
|
|
|
251
255
|
|
|
@@ -273,12 +277,16 @@ def scan_alphas(config: Config | None = None) -> pl.LazyFrame:
|
|
|
273
277
|
schema = _resolve_schema(config.alpha_schema)
|
|
274
278
|
|
|
275
279
|
# Apply schema evolution per-file BEFORE concat to ensure matching schemas
|
|
276
|
-
# Note: Alpha files already have data_date column,
|
|
280
|
+
# Note: Alpha files already have data_date column, convert to Date type for consistency
|
|
277
281
|
dfs = []
|
|
278
282
|
for f in files:
|
|
279
283
|
df = _scan_file(f, schema=schema)
|
|
280
284
|
if schema:
|
|
281
285
|
df = _apply_schema_evolution(df, schema)
|
|
286
|
+
# Convert data_date to Date type (may be Int64 from feather or String from CSV)
|
|
287
|
+
df = df.with_columns(
|
|
288
|
+
pl.col("data_date").cast(pl.String).str.to_date("%Y%m%d").cast(pl.Date)
|
|
289
|
+
)
|
|
282
290
|
dfs.append(df)
|
|
283
291
|
|
|
284
292
|
return pl.concat(dfs)
|
|
@@ -310,6 +318,8 @@ def scan_univ(date: str, config: Config | None = None) -> pl.LazyFrame:
|
|
|
310
318
|
if schema:
|
|
311
319
|
df = _apply_schema_evolution(df, schema)
|
|
312
320
|
|
|
321
|
+
df = df.with_columns(pl.lit(date).str.to_date("%Y%m%d").cast(pl.Date).alias("data_date"))
|
|
322
|
+
|
|
313
323
|
return df
|
|
314
324
|
|
|
315
325
|
|
|
@@ -347,7 +357,7 @@ def scan_univs(config: Config | None = None) -> pl.LazyFrame:
|
|
|
347
357
|
df = _apply_schema_evolution(df, schema)
|
|
348
358
|
date = _extract_date_from_path(f, config.univ_pattern)
|
|
349
359
|
if date:
|
|
350
|
-
df = df.with_columns(pl.lit(date).alias("data_date"))
|
|
360
|
+
df = df.with_columns(pl.lit(date).str.to_date("%Y%m%d").cast(pl.Date).alias("data_date"))
|
|
351
361
|
dfs.append(df)
|
|
352
362
|
|
|
353
363
|
return pl.concat(dfs)
|
vizflow/schema_evolution.py
CHANGED
|
@@ -353,7 +353,7 @@ JYAO_V20251114 = SchemaEvolution(
|
|
|
353
353
|
# Time columns
|
|
354
354
|
"TimeStamp": ColumnSpec(rename_to="timestamp", parse_dtype=pl.Int64),
|
|
355
355
|
"GlobalExTime": ColumnSpec(rename_to="global_exchange_ts", parse_dtype=pl.Int64),
|
|
356
|
-
"DataDate": ColumnSpec(rename_to="data_date", parse_dtype=pl.String),
|
|
356
|
+
"DataDate": ColumnSpec(rename_to="data_date", parse_dtype=pl.String, cast_dtype=pl.Date),
|
|
357
357
|
# Volume
|
|
358
358
|
"Volume": ColumnSpec(
|
|
359
359
|
rename_to="volume",
|
|
@@ -371,6 +371,52 @@ JYAO_V20251114 = SchemaEvolution(
|
|
|
371
371
|
)
|
|
372
372
|
|
|
373
373
|
|
|
374
|
+
# =============================================================================
|
|
375
|
+
# JYAO Univ Format (v2025-12-30)
|
|
376
|
+
# =============================================================================
|
|
377
|
+
|
|
378
|
+
JYAO_UNIV_V20251230 = SchemaEvolution(
|
|
379
|
+
columns={
|
|
380
|
+
# ID
|
|
381
|
+
"ukey": ColumnSpec(parse_dtype=pl.Int64),
|
|
382
|
+
# Price columns (Float64)
|
|
383
|
+
"ydclose": ColumnSpec(parse_dtype=pl.Float64),
|
|
384
|
+
"preclose": ColumnSpec(parse_dtype=pl.Float64),
|
|
385
|
+
"open": ColumnSpec(parse_dtype=pl.Float64),
|
|
386
|
+
"close": ColumnSpec(parse_dtype=pl.Float64),
|
|
387
|
+
"upper_limit_price": ColumnSpec(parse_dtype=pl.Float64),
|
|
388
|
+
"lower_limit_price": ColumnSpec(parse_dtype=pl.Float64),
|
|
389
|
+
"tick_size": ColumnSpec(parse_dtype=pl.Float64),
|
|
390
|
+
# Lot size columns (parse Float64 → cast Int64)
|
|
391
|
+
"trade_min_size": ColumnSpec(parse_dtype=pl.Float64, cast_dtype=pl.Int64),
|
|
392
|
+
"trade_unit_size": ColumnSpec(parse_dtype=pl.Float64, cast_dtype=pl.Int64),
|
|
393
|
+
"qty_unit": ColumnSpec(parse_dtype=pl.Float64, cast_dtype=pl.Int64),
|
|
394
|
+
# Average/aggregated columns (Float64)
|
|
395
|
+
"trade_max_size": ColumnSpec(parse_dtype=pl.Float64),
|
|
396
|
+
"adv": ColumnSpec(parse_dtype=pl.Float64),
|
|
397
|
+
"roll_spread": ColumnSpec(parse_dtype=pl.Float64),
|
|
398
|
+
"buy_avg_volume": ColumnSpec(parse_dtype=pl.Float64),
|
|
399
|
+
"sell_avg_volume": ColumnSpec(parse_dtype=pl.Float64),
|
|
400
|
+
"avg_touch_size_mean": ColumnSpec(parse_dtype=pl.Float64),
|
|
401
|
+
"avg_touch_order_size": ColumnSpec(parse_dtype=pl.Float64),
|
|
402
|
+
# Risk columns (Float64)
|
|
403
|
+
"TotalRisk": ColumnSpec(parse_dtype=pl.Float64),
|
|
404
|
+
"SpecRisk": ColumnSpec(parse_dtype=pl.Float64),
|
|
405
|
+
# Boolean columns (TRUE/FALSE strings)
|
|
406
|
+
"is_price_limited": ColumnSpec(parse_dtype=pl.Boolean),
|
|
407
|
+
"is_t0": ColumnSpec(parse_dtype=pl.Boolean),
|
|
408
|
+
# Integer columns
|
|
409
|
+
"category": ColumnSpec(parse_dtype=pl.Float64, cast_dtype=pl.Int64),
|
|
410
|
+
"is_ST": ColumnSpec(parse_dtype=pl.Float64, cast_dtype=pl.Int64), # 0/1 numeric
|
|
411
|
+
# String columns
|
|
412
|
+
"UNIVERSE": ColumnSpec(parse_dtype=pl.String),
|
|
413
|
+
"INDUSTRY": ColumnSpec(parse_dtype=pl.String),
|
|
414
|
+
"INDEX": ColumnSpec(parse_dtype=pl.String),
|
|
415
|
+
},
|
|
416
|
+
null_values=["", "NA"],
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
|
|
374
420
|
# =============================================================================
|
|
375
421
|
# Schema Registry
|
|
376
422
|
# =============================================================================
|
|
@@ -378,6 +424,7 @@ JYAO_V20251114 = SchemaEvolution(
|
|
|
378
424
|
SCHEMAS: dict[str, SchemaEvolution] = {
|
|
379
425
|
"ylin_v20251204": YLIN_V20251204,
|
|
380
426
|
"jyao_v20251114": JYAO_V20251114,
|
|
427
|
+
"jyao_univ_v20251230": JYAO_UNIV_V20251230,
|
|
381
428
|
}
|
|
382
429
|
|
|
383
430
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
vizflow/__init__.py,sha256=_jP6bp5U2iBFkPGTSLNwvOQay9XU_opNdrylF22iR9s,589
|
|
2
2
|
vizflow/config.py,sha256=nPZPXlqQbaY8u_FAdtPShvb0mdx3e2TRaQ2CILzliAU,7192
|
|
3
|
-
vizflow/io.py,sha256=
|
|
3
|
+
vizflow/io.py,sha256=1T7t-L1ijrfEkE-gr4f45yiupJKA4-DxbJhsyN_tLnI,11939
|
|
4
4
|
vizflow/market.py,sha256=MtNz_nnZxC66Aq-i2PXEwaFCTknijFWYZUUv6798k2s,2493
|
|
5
5
|
vizflow/ops.py,sha256=oR44HYKrfaXLh0SmbfXefl714UESSIC5lTNJBrR1kto,10858
|
|
6
6
|
vizflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
vizflow/schema_evolution.py,sha256=
|
|
8
|
-
vizflow-0.5.
|
|
9
|
-
vizflow-0.5.
|
|
10
|
-
vizflow-0.5.
|
|
7
|
+
vizflow/schema_evolution.py,sha256=3_qFIQJAgXUK0vQzanb355YVjytmfOACkelZlykIO8w,16349
|
|
8
|
+
vizflow-0.5.7.dist-info/METADATA,sha256=nkd-hejnIVFMaJzYnQP6EIHRkrJfBDsohONlj4zFVu4,388
|
|
9
|
+
vizflow-0.5.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
10
|
+
vizflow-0.5.7.dist-info/RECORD,,
|
|
File without changes
|