Skip to content

feat: raw mode preserve original formats#49

Merged
realfishsam merged 13 commits intopmxt-dev:mainfrom
alexandretrotel:feat/raw-mode-preserve-original-formats
Mar 13, 2026
Merged

feat: raw mode preserve original formats#49
realfishsam merged 13 commits intopmxt-dev:mainfrom
alexandretrotel:feat/raw-mode-preserve-original-formats

Conversation

@alexandretrotel
Copy link
Contributor

The goal if this PR is to add a raw mode that allows to skip price normalization if user wants the raw data from the original exchange.

For this, I've made the following changes.

Changes

  • Added mode request option support (normalized by default, and raw as an opt-in).
  • Implemented raw mode behavior across exchanges where price normalization was happening:
    • Kalshi
    • Myriad
    • Baozi
  • Also, I've added exchange-specific price helper modules and reused them to reduce duplicated conversion logic. (it's a bit out of the scope but felt it was necessary).
  • Updated TypeScript & Python SDK.
  • Added tests for new helpers.
  • Slightly, updated docs and migration material to explain raw mode usage.

Refactor

I've also refactored some code as noted above. Here are the main changes. Of course, not everything here is really needed specifically for this issue but helps making the codebase better over the long term.

  • Centralized raw/normalized conversion rules in helper files instead of repeated inline math.
  • Standardized optional-argument handling when appending request options.
  • Improved Python typing in new raw-mode code paths (reduced Any, explicit datetime handling, etc).

Test

I've updated tests too but I need API keys for proper testing, I guess the CI will ensure proper testing and I might fix some code if it doesn't pass.

  • Kalshi/Myriad/Baozi price helpers
  • TypeScript SDK args helper
  • Python SDK raw-mode args

@realfishsam
Copy link
Contributor

I'll review asap.

Reverts all raw-price-mode commits from the PR. The mode option,
RequestOptions threading, and all raw/normalized branching have been
removed from core, TypeScript SDK, Python SDK, tests, and docs.

Reverted commits (newest → oldest):
- 4f66c4a docs(python-sdk): document raw mode usage
- e316eb2 test(python-sdk): add raw mode args coverage
- 495032e feat(python-sdk): add raw price mode support
- 102529d docs: document raw mode in README/api docs
- 1d8b834 test(sdk-typescript): add unit tests for args helper
- 19ccfc4 feat(sdk-typescript): support raw mode in optional request args
- bc5369a test(core): cover raw-mode price helpers
- 5d492a4 refactor(core): extract reusable price conversion helpers
- 5ab0ca4 feat(core): add raw mode request option to exchange API
- Add kalshi/price.ts: fromKalshiCents, invertKalshiCents, invertKalshiUnified
- Add baozi/price.ts: clampBaoziPrice, normalizeBaoziOutcomes
- Add myriad/price.ts: resolveMyriadPrice
- Update utils/exchange files to use the helpers instead of inline math
- Add args.ts to TypeScript SDK: buildArgsWithOptionalOptions helper
- Update client.ts to use the args helper consistently
- Improve Python SDK typing for since/until params
  (Optional[Union[datetime, int, float, str]] instead of Optional[Any])
- Add unit tests for all price helpers and args helper
@alexandretrotel
Copy link
Contributor Author

Should I resolve conflicts?

@realfishsam realfishsam merged commit da69a99 into pmxt-dev:main Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants