go_httpx #2

Merged
goodboy merged 9 commits from go_httpx into gitea_feats 2025-02-12 13:01:19 +00:00

Drop asks and port to httpx since the former is basically abandoned and doesn’t work alongside other up to date libs on py 3.12

This patch set includes ports for almost all backends that are actively used (except explicitly deribit which is coming in a follow up PR from @ntorres 😎):

  • kraken
  • kucoin
  • port binance
  • update various types

Also included are some minor binance fixes:

  • adjust ohclv-history loader logic to correctly raise NoData on null-history conditions.
  • update some SpotPair fields (since they’re like always breaking) and add an explicit Exception.add_note() to indicate to the user how such schema-breaks can be repaired when the binance data-engs change things the next time XD
Drop `asks` and port to `httpx` since the former is basically abandoned and doesn't work alongside other up to date libs on py 3.12 This patch set includes ports for almost all backends that are actively used (except explicitly `deribit` which is coming in a follow up PR from @ntorres :sunglasses:): - [x] kraken - [x] kucoin - [x] port binance - [x] update various types Also included are some minor binance fixes: - adjust ohclv-history loader logic to correctly raise `NoData` on null-history conditions. - update some `SpotPair` fields (since they're like always breaking) and add an explicit `Exception.add_note()` to indicate to the user how such schema-breaks can be repaired when the `binance` data-engs change things the next time XD
goodboy added 4 commits 2024-05-20 17:23:22 +00:00
129cf58d41 Bump deps for Py3.12, go PyQt6, tweak ruff rules
Code base is already ported for `Qt6` so this removes the pyqt5 dep,
adds latest pyqt6 as well as buncha other updates:

- add `xonsh` and ptk as dev deps for those of us using wacky shells ;P
- bump compiled deps as needed for python 3.12 (`numpy`, `numba`)
- add `httpx` and drop `asks` since the latter is zombied and not compat
  with other libs on 3.12.
- add `ruff` linting ignore rules for the new `.ui.qt` shim mod layer.
- few other deps updates to latest versions.
- add in the `keywords` and `classifiers` sections from the old
  `setup.py`.
goodboy added 2 commits 2024-05-28 20:19:42 +00:00
goodboy added 4 commits 2024-06-12 14:57:24 +00:00
19c343e8b2 binance: raise `NoData` on null hist arrays
Like we do with other history backends to indicate lack of a data set.
This avoids any raise that will will bring down the backloader task with
some downstream error.

Raise a `ValueError` on no time index for now.
ab1463d942 Port binance to `httpx`
Like other backends use the `AsyncClient` for all venue specific
client-sessions but change to allocating them inside `get_client()`
using an `AsyncExitStack` and inserting directly in the
`Client.venue_sesh: dict` table during init.

Supporting impl tweaks:
- remove most of the API client session building logic and instead make
  `Client.__init__()` take in a `venue_sessions: dict` (set it to
  `.venue_sesh`) and `conf: dict`, instead opting to do the http client
  configuration inside `get_client()` since all that code only needs to
  be run once.
 |_load config inside `get_client()` once.
 |_move session token creation into a new util func `init_api_keys()` and
  also call it from `get_client()` factory; toss in an ex. toml section
  config to the doc string.
- define `_venue_urls: dict[str, str]` (content taken from old static
  `.venue_sesh` dict) at module level and feed them as `base_url: str`
  inputs to the client create loop.
- adjust all call sigs in httpx-sesh-using methods, namely just
  `._api()`.
- do a `.exch_info()` call in `get_client()` to cache the symbology
  set.

Unrelated changes for various other outstanding buggers:
- to get futures feeds correctly loading when selected
  from search (like 'XMRUSDT.USDTM.PERP'), expect a `MktPair` input to
  `Client.bars()` such that the exact venue-key can be looked up (via
  a new `.pair2venuekey()` meth) and then passed to `._api()`.
- adjust `.broker.open_trade_dialog()` to failover to paper engine when
  there's no `api_key` key set for the `subconf` venue-key.
Poster
Owner

@ntorres Ok so i merged in your fixes to the symbology spec and got everything up and working with httpx.AsyncClient for the binance client B)

Just pinging you so you can see my approach to the port.

@ntorres Ok so i merged in your fixes to the symbology spec and got everything up and working with `httpx.AsyncClient` for the binance client B) Just pinging you so you can see my approach to the port.
goodboy added 4 commits 2024-06-24 21:58:48 +00:00
97dd7e766a ib: more trade record edge case handling
- timestamps came as `'date'`-keyed from 2022 and before but now are
  `'datetime'`..
- some symbols seem to have no commission field, so handle that..
- when no `'price'` field found return `None` from `norm_trade()`.
- add a warn log on mid-fill commission updates.
b577180773 ib: `.api` mod and log-fmt cleaning
About time we tidy'd a buncha status logging in this backend..
particularly for boot-up where there's lots of client-try-connect poll
looping with account detection from the user config.

`.api.Client` pprint and logging fmt improvements:
- add `Client.__repr__()` which shows the minimally useful set of info
  from the underlying `.ib: IB` as well as a new `.acnts: list[str]`
  of the account aliases defined in the user's `brokers.toml`.
- mk `.bars()` define a comprehensive `query_info: str` with all the
  request deats but only display if there's a problem with the response
  data.
- mk `.get_config()` report both the config file path and the acnt
  aliases (NOT the actual account #s).
- move all `.load_aio_clients()` client poll loop requests do
  `log.runtime()` statuses, only falling through to a `.warning()` when
  the loop fails to connect the client to the spec-ed API-gw addr, and
 |_ don't allow loading accounts for which the user has not defined an
    alias in `brokers.toml::[ib]`; raise a value-error in such cases
    with a message indicating how to mod the config.
 |_ only `log.info()` about acnts if some were loaded..

Other mod logging de-noising:
- better status fmting in `.symbols.open_symbol_search()` with
  `repr(Client)`.
- for `.feed.stream_quotes()` first quote reporting use `.runtime()`.
goodboy changed title from go_httpx to go_httpx 2025-02-11 17:27:01 +00:00
goodboy changed target branch from pyqt6 to gitea_feats 2025-02-11 17:27:01 +00:00
goodboy force-pushed go_httpx from b577180773 to 4025fd244a 2025-02-11 18:46:02 +00:00 Compare
goodboy force-pushed go_httpx from 4025fd244a to b064ded813 2025-02-11 19:57:25 +00:00 Compare
goodboy force-pushed go_httpx from b064ded813 to 844544ed8e 2025-02-11 21:27:40 +00:00 Compare
goodboy merged commit 014bd58db4 into gitea_feats 2025-02-12 13:01:19 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: pikers/piker#2
There is no content yet.