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, no need to add it
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)
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vizflow
3
- Version: 0.5.5
3
+ Version: 0.5.7
4
4
  Requires-Python: >=3.9
5
5
  Requires-Dist: polars>=0.20.0
6
6
  Provides-Extra: dev
@@ -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=qaILo7JYHRILZv7RgPdwltOkCew5ac3nmwOTn1p2ha4,11351
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=puwuuJ8LAzelHq1JTwQD968J7GYLvgAsCaHJnDHzu4U,14025
8
- vizflow-0.5.5.dist-info/METADATA,sha256=m6Zj_2AjsyBr1Tvq7uf20dzH9X9fNrFwpgM6wrDpcVg,388
9
- vizflow-0.5.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
10
- vizflow-0.5.5.dist-info/RECORD,,
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,,