PyneCore v6.6.1 released — float na is now a native IEEE-754 NaN instead of a wrapper…

Features

  • Global config/symbol_map.toml translates TradingView-canonical symbols to your provider’s native ones, so request.security() resolves without a --security mapping on every run
  • New pyne data map <tv-symbol> <provider-symbol> command writes the map entry for you; per-timeframe overrides supported
  • pyne run --list-data shows per cross-symbol requirement what the map resolves to, whether the file exists, and a ready-to-run download command when it does not
  • pyne plugin list / pyne plugin info detect and report plugin name conflicts; loading an ambiguous name now fails explicitly instead of picking a package arbitrarily
  • pyne plugin info shows the plugin’s complete PyneCore requirement, not just the lower bound

Fixes

  • nz(inf, -5) now returns -5nz() applies na() semantics to floats (TV-verified)
  • na != x stays falsy: a load-time transformer guards !=, so already-compiled scripts get the correct semantics without recompilation
  • map keeps na keys storable and retrievable; fixnan passes inf through as a regular value
  • Float series return nan for out-of-range history reads; CSV writes NaN and reads lowercase nan
  • nan handling fixed in safe_int, cast_bool/cast_int/cast_float, math.floor/math.ceil, number formatting and drawing coordinates

Performance

  • Evaluating a bare na drops from 112 ns to 4.3 ns — interned constant plus a constant attribute load instead of a function call
  • Per-bar float arithmetic no longer dispatches through NA dunders

Full release notes: https://github.com/PyneSys/pynecore/releases/tag/v6.6.1