petermcd / petermcd/monzo-api

v2 P1: Sync/async parity on httpx

Open
#156 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
36
Forks
7
Avg merge
4m
Merged PRs (30d)
2

Description

Part of the v2 roadmap (pillar P1 — foundation).

Replace the hand-rolled urllib-based client in monzo/httpio.py with an httpx-backed implementation, exposing both the existing Authentication (sync) and a new AsyncAuthentication (async) with matching method surfaces across every endpoint class.

Scope

  • Single dependency (httpx) covers connection pooling, HTTP/2, and one shared code path for sync/async instead of two hand-maintained transports.
  • Every endpoint gets an *_async counterpart mirroring its sync method.
  • This is the package's first-ever runtime dependency — pin conservatively rather than an open range.
  • Foundation for P3 (retry hooks live at the transport level).

Breaking: yes (import surface, dependency footprint)
Effort: L
Phase: alpha

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with monzo/httpio.py and inspect the existing Authentication implementation and its urllib-based transport. Then trace each endpoint class to map its current sync methods and determine the matching async surface; the work is done when all endpoints share the httpx-backed sync/async behavior and the breaking import and dependency changes are documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.