• Julien Muchembled's avatar
    Do not reprocess already extended files · ec8f60fa
    Julien Muchembled 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
    ec8f60fa
buildout.py 84.1 KB