Tags: VynFi/VynFi-python
Tags
feat: v1.4.0 — DataSynth 3.0 + VynFi API adoption
API additions:
- Scenarios.packs() — list 11 built-in scenario packs (fraud, control
failure, macro, operational): vendor_collusion_ring, management_override,
ghost_employee, procurement_kickback, channel_stuffing, sox_material_weakness,
it_control_breakdown, recession_2008_replay, supply_chain_disruption_q3,
interest_rate_shock_300bp, erp_migration_cutover.
- Fingerprint resource (client.fingerprint.synthesize) — privacy-preserving
synthesis from .dsf files via multipart upload. Team+ / Scale+ tier gates.
- Adversarial resource (client.adversarial.probe, .results) — ONNX model
probing for fraud detector robustness. Enterprise tier.
- Jobs.tune() — LLM-powered config suggestion based on a completed job's
quality scores. Scale+.
- AI resource (client.ai.chat) — dashboard co-pilot free-text chat. Scale+.
Contract changes:
- Scenarios.create() now takes {name, generation_config} (DS 3.0 API). Legacy
template_id/interventions kwargs are accepted and auto-folded into
generation_config.scenarios.* for backward compatibility.
- Default client timeout bumped 30s -> 60s.
Models: ScenarioPack, ScenarioPackList, FingerprintSynthesisResponse,
AdversarialProbeResponse, AdversarialProbeResults, ProbeSample, AiTuneResponse,
AiChatResponse, QualitySummary.
Upstream (DataSynth) status:
- OCPM fields now populated on JE headers (209/300 in sample retail job).
- exportLayout: flat still hangs the binary — pending upstream.
- numericMode: native confirmed working (from 2.3.1 cycle).
Four new examples: scenario_packs.py, ai_tune.py, fingerprint_synthesis.py,
neural_diffusion.py.
Verified live: scenarios.packs() returns 11 packs, jobs.tune() returns LLM
suggestions, ai.chat() replies, OCPM on JEs populated. 62/62 unit tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
docs: v1.3.0 verified live — 10/11 server fixes confirmed After API team's commit 8f0fc4a deploy, end-to-end verification shows: FIXED (verified live): - #1 SAS firewall — blob downloads return correct bytes - #3 exportLayout=flat — journal entries layout=flat - #4 analytics — endpoint returns Benford(MAD=0.0066), amount(skew=37.66) - #5 submit_raw — no more sqlx error, correct YAML validation - #6 banking display_name — "Jennifer Thompson" returned - #7 fraud propagation — is_fraud=true on PO headers - #8 OCPM data — 19,974 events + 7,381 objects in process_mining/ (richer than per-JE refs would have been) - #9 list_files for blob jobs — 84 files indexed - #11 tier reporting — now reports "Scale" correctly UPSTREAM (DataSynth CLI): - #2 numericMode=native still emits strings (filed upstream) NEW archive categories in v2.3: - analytics/ — Benford + amount distribution - labels/ — anomaly + fraud red flags - process_mining/ — full OCEL 2.0 event log Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
feat: v1.2.0 — file listing, output estimates, per-file download
Add Jobs.list_files() for the new GET /v1/jobs/{id}/files endpoint
that returns file paths, sizes, content types, and per-file column
schemas extracted from the first JSON record.
Add OutputEstimate model and output field on EstimateCostResponse
showing estimated file count and archive size before running a job.
Per-file download (GET /v1/jobs/{id}/download/{file}) now works
after the API-side fix deployed today.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
fix: use typing.List/Optional in resources with list() methods for mypy Resources that define a list() method shadow the builtin, causing mypy to interpret list[X] annotations as calling the method. Switch to typing.List/Optional in catalog, configs, scenarios, and notifications (matching the existing workaround in api_keys and webhooks). Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
fix: add eval_type_backport for Python 3.9 Pydantic compatibility Pydantic evaluates type annotations at runtime, so `int | None` syntax fails on Python 3.9. The eval_type_backport package provides runtime support for PEP 604 union syntax on older Python versions. Co-Authored-By: Claude Opus 4.6 <[email protected]>