Skip to content

Relax wcmatch<11 constraint in Python SDK — blocks coexistence with packages requiring wcmatch 11+ #1637

Description

@sharoneyal

Is your feature request related to a problem? Please describe.
The e2b Python SDK pins wcmatch>=10.1,<11 (see pyproject.toml/Requires-Dist in the published wheel, e.g. e2b==2.37.0). This makes e2b impossible to install alongside any package that requires wcmatch>=11.0 — for example, deepagents>=0.7.0 requires wcmatch>=11.0, so pip install e2b deepagents fails with a dependency resolution conflict (<11 vs >=11.0, no overlapping version satisfies both).

Describe the solution you'd like
Could the constraint be relaxed to something like wcmatch>=10.1,<12 ? This would let e2b coexist with newer packages (e.g. deepagents>=0.7.0) that have already moved to wcmatch>=11.0, without any code changes needed on the SDK side as far as I can tell.

Describe alternatives you've considered
None. Blocks our needed upgrade to deepagents>=0.7.0 (see here)

Additional context
wcmatch is used in exactly one place in the SDK, e2b/template/utils.py:

from wcmatch import glob
...
files_glob = glob.glob(
    src,
    flags=glob.GLOBSTAR | glob.DOTMATCH,
    root_dir=abs_context_path,
    exclude=ignore_patterns,
)

This is used for the Template build system's file-copying/.dockerignore matching logic (get_all_files_in_path, calculate_files_hash, tar_file_stream).

Why <11 looks unnecessary

I checked wcmatch's changelog between 10.1 and 11.0 (https://github.com/facelessuser/wcmatch/releases):

10.2: required bracex>=3.0, dropped Python 3.9
10.2.1: fixed the bracex requirement declaration
11.0: added EXTGLOB/EXTMATCH regex-nesting reduction and a new NUMRANGE flag; the only breaking change is that translate() no longer emits a capture group per extended-glob pattern by default (opt back in via the CAPTURE flag)

That break only affects callers using wcmatch's translate() function with EXTGLOB/EXTMATCH enabled. The SDK's usage — glob.glob() with GLOBSTAR | DOTMATCH — doesn't touch translate() or extended-glob capture groups at all, so wcmatch 11.0 should be a functional no-op for this codebase.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions