-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: faiscadev/fila-python
base: main
head repository: faiscadev/fila-python
compare: feat/21.2-binary-protocol
- 19 commits
- 32 files changed
- 1 contributor
Commits on Mar 21, 2026
-
Configuration menu - View commit details
-
Copy full SHA for f8e343d - Browse repository at this point
Copy the full SHA f8e343dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8d65552 - Browse repository at this point
Copy the full SHA 8d65552View commit details
Commits on Mar 24, 2026
-
Configuration menu - View commit details
-
Copy full SHA for f7a4ed9 - Browse repository at this point
Copy the full SHA f7a4ed9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1f5753e - Browse repository at this point
Copy the full SHA 1f5753eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 273746e - Browse repository at this point
Copy the full SHA 273746eView commit details -
Merge pull request #2 from faiscadev/feat/leader-hint-reconnect
feat: transparent leader hint reconnect on consume
Configuration menu - View commit details
-
Copy full SHA for fd28ba0 - Browse repository at this point
Copy the full SHA fd28ba0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 872b592 - Browse repository at this point
Copy the full SHA 872b592View commit details -
feat: add batch enqueue, smart batching, and delivery batching (#3)
add batch_enqueue() for explicit multi-message RPCs, smart batching via BatchMode (AUTO/DISABLED/Linger) that routes enqueue() through a background batcher thread, and delivery batching that unpacks ConsumeResponse.messages repeated field. update proto to include BatchEnqueue RPC and ConsumeResponse batched messages field. single-item optimization uses singular Enqueue RPC to preserve error types. close() drains pending messages before disconnecting.
Configuration menu - View commit details
-
Copy full SHA for c9a83fc - Browse repository at this point
Copy the full SHA c9a83fcView commit details
Commits on Mar 25, 2026
-
feat: unified api surface for story 30.2
Update Python SDK for the unified proto API: - Enqueue RPC now uses repeated EnqueueMessage/EnqueueResult - BatchEnqueue RPC removed; enqueue_many() replaces batch_enqueue() - Ack/Nack use repeated AckMessage/NackMessage with per-message results - ConsumeResponse only has repeated messages field - BatchMode renamed to AccumulatorMode, BatchEnqueueResult to EnqueueResult - BatchEnqueueError renamed to EnqueueError - Linger.batch_size renamed to Linger.max_messages - Per-message error codes mapped to typed SDK exceptions (e.g. ENQUEUE_ERROR_CODE_QUEUE_NOT_FOUND -> QueueNotFoundError) - All 31 tests pass (16 unit, 15 integration)
Configuration menu - View commit details
-
Copy full SHA for 39a2e2e - Browse repository at this point
Copy the full SHA 39a2e2eView commit details -
Merge pull request #4 from faiscadev/feat/30.2-unified-api
feat: 30.2 — unified api surface
Configuration menu - View commit details
-
Copy full SHA for 3451bb6 - Browse repository at this point
Copy the full SHA 3451bb6View commit details -
fix: resolve lint failures and cubic review findings
- remove unused imports (EnqueueError in client/async_client, Any in batcher, threading in test_batcher) — fixes ruff F401 - move MessageNotFoundError/RPCError to top-level imports, eliminating inline imports that triggered ruff I001 (unsorted import blocks) - move ConsumeMessage/EnqueueResult into TYPE_CHECKING block in async_client — fixes ruff TC001 - fix EnqueueError docstring to reflect that it is also raised as fallback for per-message errors via _map_enqueue_result_error - strengthen test_flush_single to assert actual request content sent to Enqueue, not just call count - downgrade GRPC_GENERATED_VERSION from 1.78.1 to 1.78.0 in all generated grpc stubs (grpcio 1.78.1 was yanked from PyPI)
Configuration menu - View commit details
-
Copy full SHA for fb9c873 - Browse repository at this point
Copy the full SHA fb9c873View commit details
Commits on Apr 4, 2026
-
feat: migrate python sdk from grpc to fibp binary protocol
replace the entire grpc transport layer with a native fibp implementation. the sdk now communicates directly over tcp using the fila binary protocol, removing the grpcio and protobuf dependencies entirely. - add fila/fibp/ module: primitives (Reader/Writer), opcodes, codec - add fila/conn.py: sync Connection and async AsyncConnection classes - rewrite client.py and async_client.py to use fibp connections - rewrite batcher.py to use Connection instead of grpc stubs - rewrite errors.py with fibp error code mapping (18 error codes) - add admin methods: create/delete queue, stats, config, redrive - add auth methods: create/revoke api key, acl management - add new error types: UnauthorizedError, ForbiddenError, NotLeaderError, etc. - add ConsumeMessage fields: weight, throttle_keys, enqueued_at, leased_at - delete fila/v1/ (generated protobuf) and proto/ directories - remove grpcio/protobuf from dependencies, bump version to 0.3.0 - add test_fibp.py with 34 codec/primitives unit tests - rewrite test_batcher.py for fibp mock connections - update integration tests and conftest.py for fibp
Configuration menu - View commit details
-
Copy full SHA for 75d7246 - Browse repository at this point
Copy the full SHA 75d7246View commit details -
fix: align admin/auth codec with actual fibp wire format
the initial codec used generic string maps for admin frames, but the protocol spec uses typed fields. this aligns all encode/decode functions with the actual wire format from docs/protocol.md: - create_queue: [string name][optional on_enqueue][optional on_failure][u64 timeout] - get_stats_result: typed fields (depth, in_flight, etc.) not a string map - list_queues_result: [u8 error][u32 nodes][u16 count][per: name, depth, ...] - set_config: [string key][string value] (not queue + map) - redrive: [string dlq][u64 count] (not source + dest + u32) - create_api_key: [string name][u64 expires][bool superadmin] - set_acl: [key_id][u16 count][per: kind, pattern] (not patterns list) - all result frames now decode their error_code prefix also updates types.py with properly structured StatsResult, QueueInfo, AclEntry, ApiKeyInfo to match the wire format fields.
Configuration menu - View commit details
-
Copy full SHA for 635f0d3 - Browse repository at this point
Copy the full SHA 635f0d3View commit details -
fix: handle consume without consume_ok, fix mypy type errors
- add pushback buffer to Connection/AsyncConnection for subscribe() to handle servers that send Delivery directly without ConsumeOk - fix mypy errors: annotate struct.unpack_from return values, fix _request_with_leader_retry return type to FrameHeader, move ssl import to TYPE_CHECKING block, remove unused make_ssl_context function
Configuration menu - View commit details
-
Copy full SHA for cafc46a - Browse repository at this point
Copy the full SHA cafc46aView commit details -
Configuration menu - View commit details
-
Copy full SHA for c86be41 - Browse repository at this point
Copy the full SHA c86be41View commit details -
fix: correct hot-path opcode assignments to match server implementation
the hot-path opcodes were out of order. the server uses sequential assignment starting from 0x10: Enqueue(0x10), EnqueueResult(0x11), Consume(0x12), ConsumeOk(0x13), Delivery(0x14), CancelConsume(0x15), Ack(0x16), AckResult(0x17), Nack(0x18), NackResult(0x19).
Configuration menu - View commit details
-
Copy full SHA for 9492cc8 - Browse repository at this point
Copy the full SHA 9492cc8View commit details -
fix: address cubic review findings
- add bounds checks in Reader.read_string() and read_bytes() to detect truncated frames instead of silently parsing corrupt data - add fallback in batcher _flush_many() to fail unresolved futures when server returns fewer results than items sent - remove diagnostic ConnectionError wrapper in _consume_iter that would silently swallow decode failures - tighten subscribe() pushback to only accept Delivery frames, raise ConnectionError for unexpected opcodes
Configuration menu - View commit details
-
Copy full SHA for 2ca5c4b - Browse repository at this point
Copy the full SHA 2ca5c4bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b65b872 - Browse repository at this point
Copy the full SHA b65b872View commit details -
Configuration menu - View commit details
-
Copy full SHA for 17a36b0 - Browse repository at this point
Copy the full SHA 17a36b0View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...feat/21.2-binary-protocol