Skip to content

chameleon 4.4.44

Choose a tag to compare

@github-actions github-actions released this 20 Jul 01:36

Fixed

  • Python src-layout packages collapsed every layer into one archetype, the same
    defect v4.4.39 fixed for RubyGems. PyPA's src/<pkg>/<layer>/ is the Python
    twin of lib/<gem>/<layer>/: src/ is the source root, <pkg> is the
    distribution package, and its subdirectories are the layers. At the default
    bucket depth the layer fell into sub_bucket, so handlers, clients,
    repositories and workers all bucketed to a single src/<pkg> cluster and
    no per-role convention could clear its dominance floor -- inheritance derived
    to {} on a repo where 7/7 files in a layer share a base class, which in turn
    left inheritance-convention-violation unable to fire there at all.

    The package-root rule is now keyed by (root, extension) -- lib/ + .rb and
    src/ + .py -- rather than hardcoding Ruby. Still scoped by extension
    deliberately: src/ in a JS/TS repo is a feature-layout root, and bucketing
    those at depth 3 would re-fragment their cohorts.

    Measured on the fixture: 4 archetypes -> 9, inheritance from {} to four
    derived bases (BaseRepository, Handler, BaseClient, BaseWorker) and
    class_contract from 1 archetype to 5. Regression-isolated by re-bootstrapping
    all TEN fixture repos with the change stashed: only py-plain moves; the other
    nine (py-django, py-flask, py-fastapi, py-drf, rb-plain, rb-rails, ts-plain,
    ts-nestjs, ts-nextjs) are byte-identical.