• Łukasz Nowak's avatar
    Do not reprocess already extended files · e37aa992
    Łukasz Nowak authored
    extends can be interpreted as inheritance in OOP, but the original
    behaviour was against what is commonly (always?) seen everywhere.
    
    It is however good practice a file extends all files it needs directly
    (and only them). Then if two files A & B (possibly unrelated) extends
    the same third C, A was unable to overrides C values. It was even
    error-prone because someone who don't use B yet could override C values
    in A and later extending B would break A.
    
    For some of our common use cases, this new algorithm is also 9x faster
    (time to annotate: ~2.3s with -> ~.29s).
    
    Other changes:
    - ~/ is now expanded for non-url extends.
    - An absolute (non-url) path is not longer treated like a local path
      if the base is a url.
    - Better path/url normalization.
    
    Rebase instructions:
    - squash with "Chomp ../ from beginging of filenames"
    - split and apply "Support ${:_profile_base_location_}." after
    
    Sqaushed with
    
    Chomp ../ from beginging of filenames.
    
    In order to have as canonical as possible paths, chomp ../ from filenames and
    recalculate base.
    e37aa992
buildout.py 74.5 KB