Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: faiscadev/fila-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: faiscadev/fila-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/21.2-binary-protocol
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 19 commits
  • 32 files changed
  • 1 contributor

Commits on Mar 21, 2026

  1. Configuration menu
    Copy the full SHA
    f8e343d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8d65552 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2026

  1. Configuration menu
    Copy the full SHA
    f7a4ed9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1f5753e View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    273746e View commit details
    Browse the repository at this point in the history
  4. Merge pull request #2 from faiscadev/feat/leader-hint-reconnect

    feat: transparent leader hint reconnect on consume
    vieiralucas authored Mar 24, 2026
    Configuration menu
    Copy the full SHA
    fd28ba0 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    872b592 View commit details
    Browse the repository at this point in the history
  6. 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.
    vieiralucas authored Mar 24, 2026
    Configuration menu
    Copy the full SHA
    c9a83fc View commit details
    Browse the repository at this point in the history

Commits on Mar 25, 2026

  1. 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)
    vieiralucas committed Mar 25, 2026
    Configuration menu
    Copy the full SHA
    39a2e2e View commit details
    Browse the repository at this point in the history
  2. Merge pull request #4 from faiscadev/feat/30.2-unified-api

    feat: 30.2 — unified api surface
    vieiralucas authored Mar 25, 2026
    Configuration menu
    Copy the full SHA
    3451bb6 View commit details
    Browse the repository at this point in the history
  3. 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)
    vieiralucas committed Mar 25, 2026
    Configuration menu
    Copy the full SHA
    fb9c873 View commit details
    Browse the repository at this point in the history

Commits on Apr 4, 2026

  1. 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
    vieiralucas committed Apr 4, 2026
    Configuration menu
    Copy the full SHA
    75d7246 View commit details
    Browse the repository at this point in the history
  2. 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.
    vieiralucas committed Apr 4, 2026
    Configuration menu
    Copy the full SHA
    635f0d3 View commit details
    Browse the repository at this point in the history
  3. 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
    vieiralucas committed Apr 4, 2026
    Configuration menu
    Copy the full SHA
    cafc46a View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    c86be41 View commit details
    Browse the repository at this point in the history
  5. 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).
    vieiralucas committed Apr 4, 2026
    Configuration menu
    Copy the full SHA
    9492cc8 View commit details
    Browse the repository at this point in the history
  6. 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
    vieiralucas committed Apr 4, 2026
    Configuration menu
    Copy the full SHA
    2ca5c4b View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    b65b872 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    17a36b0 View commit details
    Browse the repository at this point in the history
Loading