From b1b8cd3a3b5d47bfd31922cdca9118bd88c9e748 Mon Sep 17 00:00:00 2001
From: lambdaclan <47409392+lambdaclan@users.noreply.github.com>
Date: Mon, 1 Apr 2019 16:20:31 +0900
Subject: [PATCH] Initial commit (fork)
---
.gitignore | 13 +
.travis.yml | 14 +
CHANGELOG.md | 266 ++
CONTRIBUTING.md | 23 +
COPYING.LESSER | 166 +
INSTALL.md | 3 +
MANIFEST.in | 5 +
README.md | 192 +
RELEASE.md | 44 +
bin/_rez-complete | 3 +
bin/_rez_fwd | 3 +
bin/bez | 3 +
bin/rez | 3 +
bin/rez-bind | 3 +
bin/rez-build | 3 +
bin/rez-config | 3 +
bin/rez-context | 3 +
bin/rez-cp | 3 +
bin/rez-depends | 3 +
bin/rez-diff | 3 +
bin/rez-env | 3 +
bin/rez-gui | 3 +
bin/rez-help | 3 +
bin/rez-interpret | 3 +
bin/rez-memcache | 3 +
bin/rez-pip | 3 +
bin/rez-plugins | 3 +
bin/rez-python | 3 +
bin/rez-release | 3 +
bin/rez-search | 3 +
bin/rez-selftest | 3 +
bin/rez-status | 3 +
bin/rez-suite | 3 +
bin/rez-test | 3 +
bin/rez-view | 3 +
bin/rez-yaml2py | 3 +
bin/rezolve | 3 +
docs/Makefile | 177 +
docs/api/modules.rst | 8 +
docs/api/rez._sys.rst | 22 +
docs/api/rez.bind.rst | 62 +
docs/api/rez.cli.rst | 134 +
docs/api/rez.rst | 256 ++
docs/api/rez.tests.rst | 78 +
docs/api/rezplugins.build_system.rst | 38 +
docs/api/rezplugins.release_hook.rst | 22 +
docs/api/rezplugins.release_vcs.rst | 38 +
docs/api/rezplugins.rst | 21 +
docs/api/rezplugins.shell.rst | 54 +
docs/api/rezplugins.source_retriever.rst | 38 +
docs/conf.py | 274 ++
docs/index.rst | 152 +
docs/make.bat | 242 ++
docs/one-liners.rst | 71 +
example_packages/hello_world/CMakeLists.txt | 17 +
example_packages/hello_world/README.md | 15 +
example_packages/hello_world/bin/hello | 4 +
example_packages/hello_world/package.py | 26 +
.../hello_world/python/hello_world.py | 4 +
.../hello_world/rezbuild.py.example | 46 +
install.py | 182 +
media/rez_banner.svg | 96 +
media/rez_banner_256.png | Bin 0 -> 21733 bytes
media/rez_logo.svg | 82 +
media/rez_logo.xcf | Bin 0 -> 335130 bytes
media/rez_logo_256.png | Bin 0 -> 15952 bytes
media/rez_logo_32.png | Bin 0 -> 1830 bytes
release_util.py | 144 +
setup.py | 116 +
src/build_utils/__init__.py | 0
src/build_utils/add_license.py | 115 +
src/build_utils/distlib/__init__.py | 23 +
src/build_utils/distlib/_backport/__init__.py | 6 +
src/build_utils/distlib/_backport/misc.py | 41 +
src/build_utils/distlib/_backport/shutil.py | 761 ++++
.../distlib/_backport/sysconfig.cfg | 84 +
.../distlib/_backport/sysconfig.py | 788 ++++
src/build_utils/distlib/_backport/tarfile.py | 2607 ++++++++++++
src/build_utils/distlib/compat.py | 1102 +++++
src/build_utils/distlib/database.py | 1301 ++++++
src/build_utils/distlib/index.py | 513 +++
src/build_utils/distlib/locators.py | 1195 ++++++
src/build_utils/distlib/manifest.py | 364 ++
src/build_utils/distlib/markers.py | 190 +
src/build_utils/distlib/metadata.py | 1058 +++++
src/build_utils/distlib/resources.py | 323 ++
src/build_utils/distlib/scripts.py | 335 ++
src/build_utils/distlib/t32.exe | Bin 0 -> 91648 bytes
src/build_utils/distlib/t64.exe | Bin 0 -> 95232 bytes
src/build_utils/distlib/util.py | 1575 +++++++
src/build_utils/distlib/version.py | 721 ++++
src/build_utils/distlib/w32.exe | Bin 0 -> 88576 bytes
src/build_utils/distlib/w64.exe | Bin 0 -> 92160 bytes
src/build_utils/distlib/wheel.py | 976 +++++
src/build_utils/make_README.py | 85 +
src/build_utils/virtualenv/LICENSE.txt | 22 +
src/build_utils/virtualenv/__init__.py | 0
src/build_utils/virtualenv/virtualenv.py | 2342 +++++++++++
.../pip-1.5.6-py2.py3-none-any.whl | Bin 0 -> 1002021 bytes
.../setuptools-3.6-py2.py3-none-any.whl | Bin 0 -> 547415 bytes
src/rez/SOLVER.md | 252 ++
src/rez/__init__.py | 51 +
src/rez/backport/__init__.py | 0
src/rez/backport/importlib.py | 37 +
src/rez/backport/lru_cache.py | 136 +
src/rez/backport/ordereddict.py | 127 +
src/rez/backport/shutilwhich.py | 62 +
src/rez/backport/zipfile.py | 1411 +++++++
src/rez/bind/PyQt.py | 28 +
src/rez/bind/PySide.py | 18 +
src/rez/bind/__init__.py | 16 +
src/rez/bind/_pymodule.py | 118 +
src/rez/bind/_utils.py | 139 +
src/rez/bind/arch.py | 34 +
src/rez/bind/cmake.py | 55 +
src/rez/bind/hello_world.py | 68 +
src/rez/bind/os.py | 36 +
src/rez/bind/pip.py | 18 +
src/rez/bind/platform.py | 34 +
src/rez/bind/python.py | 104 +
src/rez/bind/rez.py | 53 +
src/rez/bind/rezgui.py | 82 +
src/rez/bind/setuptools.py | 26 +
src/rez/bind/sip.py | 23 +
src/rez/build_process_.py | 442 ++
src/rez/build_system.py | 269 ++
src/rez/cli/__init__.py | 16 +
src/rez/cli/_bez.py | 96 +
src/rez/cli/_complete_util.py | 156 +
src/rez/cli/_main.py | 171 +
src/rez/cli/_util.py | 178 +
src/rez/cli/bind.py | 119 +
src/rez/cli/build.py | 183 +
src/rez/cli/complete.py | 113 +
src/rez/cli/config.py | 67 +
src/rez/cli/context.py | 191 +
src/rez/cli/cp.py | 212 +
src/rez/cli/depends.py | 95 +
src/rez/cli/diff.py | 47 +
src/rez/cli/env.py | 267 ++
src/rez/cli/forward.py | 78 +
src/rez/cli/gui.py | 37 +
src/rez/cli/help.py | 75 +
src/rez/cli/interpret.py | 91 +
src/rez/cli/memcache.py | 181 +
src/rez/cli/pip.py | 88 +
src/rez/cli/plugins.py | 54 +
src/rez/cli/python.py | 48 +
src/rez/cli/release.py | 161 +
src/rez/cli/search.py | 135 +
src/rez/cli/selftest.py | 85 +
src/rez/cli/status.py | 46 +
src/rez/cli/suite.py | 211 +
src/rez/cli/test.py | 68 +
src/rez/cli/view.py | 87 +
src/rez/cli/yaml2py.py | 51 +
src/rez/completion/complete.csh | 8 +
src/rez/completion/complete.sh | 21 +
src/rez/config.py | 878 ++++
src/rez/developer_package.py | 237 ++
src/rez/exceptions.py | 217 +
src/rez/package_bind.py | 188 +
src/rez/package_copy.py | 399 ++
src/rez/package_filter.py | 549 +++
src/rez/package_help.py | 138 +
src/rez/package_maker__.py | 232 ++
src/rez/package_order.py | 441 ++
src/rez/package_py_utils.py | 264 ++
src/rez/package_repository.py | 486 +++
src/rez/package_resources_.py | 482 +++
src/rez/package_search.py | 428 ++
src/rez/package_serialise.py | 219 +
src/rez/package_test.py | 254 ++
src/rez/packages_.py | 776 ++++
src/rez/pip.py | 384 ++
src/rez/plugin_managers.py | 393 ++
src/rez/release_hook.py | 153 +
src/rez/release_vcs.py | 240 ++
src/rez/resolved_context.py | 1745 ++++++++
src/rez/resolver.py | 457 ++
src/rez/rex.py | 1268 ++++++
src/rez/rex_bindings.py | 176 +
src/rez/rezconfig.py | 875 ++++
src/rez/serialise.py | 434 ++
src/rez/shells.py | 419 ++
src/rez/solver.py | 2300 ++++++++++
src/rez/status.py | 388 ++
src/rez/suite.py | 770 ++++
src/rez/system.py | 306 ++
src/rez/tests/README | 45 +
src/rez/tests/__init__.py | 16 +
.../builds/packages/anti/1.0.0/package.py | 28 +
.../builds/packages/anti/1.0.0/rezbuild.py | 33 +
.../builds/packages/bah/2.1/bah/__init__.py | 0
.../data/builds/packages/bah/2.1/package.py | 27 +
.../data/builds/packages/bah/2.1/rezbuild.py | 42 +
.../build_util/1/build_util/__init__.py | 50 +
.../builds/packages/build_util/1/package.py | 24 +
.../builds/packages/build_util/1/rezbuild.py | 40 +
.../builds/packages/floob/floob/__init__.py | 19 +
.../data/builds/packages/floob/package.py | 30 +
.../data/builds/packages/floob/rezbuild.py | 30 +
.../builds/packages/foo/1.0.0/foo/__init__.py | 22 +
.../data/builds/packages/foo/1.0.0/package.py | 28 +
.../builds/packages/foo/1.0.0/rezbuild.py | 36 +
.../builds/packages/foo/1.1.0/foo/__init__.py | 22 +
.../data/builds/packages/foo/1.1.0/package.py | 32 +
.../builds/packages/foo/1.1.0/rezbuild.py | 36 +
.../data/builds/packages/hello/1.0/Makefile | 8 +
.../builds/packages/hello/1.0/lib/main.cpp | 8 +
.../data/builds/packages/hello/1.0/package.py | 13 +
.../data/builds/packages/loco/3/package.py | 24 +
.../data/builds/packages/loco/3/rezbuild.py | 20 +
.../packages/sup_world/3.8/CMakeLists.txt | 6 +
.../packages/sup_world/3.8/lib/CMakeLists.txt | 19 +
.../sup_world/3.8/lib/ghetto_greet.cpp | 13 +
.../packages/sup_world/3.8/lib/ghetto_greet.h | 12 +
.../builds/packages/sup_world/3.8/package.py | 29 +
.../sup_world/3.8/util/CMakeLists.txt | 12 +
.../packages/sup_world/3.8/util/main.cpp | 11 +
.../translate_lib/2.2.0/CMakeLists.txt | 28 +
.../packages/translate_lib/2.2.0/package.py | 35 +
.../2.2.0/src/ghettoTranslator.cpp | 22 +
.../2.2.0/src/ghettoTranslator.h | 28 +
.../translate_lib/2.2.0/src/lolTranslator.cpp | 40 +
.../translate_lib/2.2.0/src/lolTranslator.h | 33 +
.../translate_lib/2.2.0/src/translator.cpp | 25 +
.../translate_lib/2.2.0/src/translator.h | 34 +
.../data/builds/packages/whack/package.py | 21 +
.../data/builds/packages/whack/rezbuild.py | 19 +
.../packages/rextest/1.1/package.yaml | 10 +
.../packages/rextest/1.2/package.yaml | 10 +
.../commands/packages/rextest/1.3/package.py | 26 +
.../commands/packages/rextest2/2/package.py | 26 +
src/rez/tests/data/config/package.py | 38 +
src/rez/tests/data/config/test1.yaml | 8 +
src/rez/tests/data/config/test2.py | 10 +
.../data/packages/developer/package.yaml | 17 +
.../packages/developer_changed/package.yaml | 17 +
.../packages/developer_dynamic/package.py | 20 +
.../packages/developer_novar/package.yaml | 13 +
.../developer_novar_changed/package.yaml | 13 +
.../py_packages/late_binding/1.0/package.py | 26 +
.../tests/data/packages/py_packages/multi.py | 27 +
.../py_packages/single_unversioned.py | 17 +
.../packages/py_packages/single_versioned.py | 18 +
.../py_packages/timestamped/1.0.5/package.py | 5 +
.../py_packages/timestamped/1.0.6/package.py | 5 +
.../py_packages/timestamped/1.1.0/package.py | 5 +
.../py_packages/timestamped/1.1.1/package.py | 5 +
.../py_packages/timestamped/1.2.0/package.py | 5 +
.../py_packages/timestamped/2.0.0/package.py | 5 +
.../py_packages/timestamped/2.1.0/package.py | 5 +
.../py_packages/timestamped/2.1.5/package.py | 5 +
.../py_packages/unversioned_py/package.py | 17 +
.../py_packages/variants_py/2.0/package.py | 31 +
.../py_packages/versioned/2.0/package.py | 19 +
.../py_packages/versioned/3.0/package.py | 21 +
.../data/packages/yaml_packages/multi.yaml | 15 +
.../yaml_packages/single_unversioned.yaml | 1 +
.../yaml_packages/single_versioned.yaml | 4 +
.../yaml_packages/unversioned/package.yaml | 1 +
.../yaml_packages/versioned/1.0/package.yaml | 17 +
.../yaml_packages/versioned/2.0/package.yaml | 5 +
.../tests/data/python/early_bind/__init__.py | 0
.../data/python/early_bind/early_utils.py | 6 +
.../tests/data/python/late_bind/late_utils.py | 4 +
src/rez/tests/data/release/data/data.txt | 3 +
src/rez/tests/data/release/package.yaml | 6 +
src/rez/tests/data/release/rezbuild.py | 40 +
.../tests/data/release/variants/package.yaml | 8 +
.../tests/data/release/variants/rezbuild.py | 6 +
.../release/variants/spangle/1.0/package.yaml | 5 +
.../release/variants/spangle/1.1/package.yaml | 5 +
.../release/variants/spangle/2.0/package.yaml | 5 +
src/rez/tests/data/solver/packages/README | 171 +
.../data/solver/packages/bahish/1/package.py | 20 +
.../data/solver/packages/bahish/2/package.py | 20 +
.../data/solver/packages/nada/package.py | 17 +
.../data/solver/packages/nopy/2.1/package.py | 20 +
.../data/solver/packages/pybah/4/package.py | 20 +
.../data/solver/packages/pybah/5/package.py | 20 +
.../data/solver/packages/pydad/1/package.py | 20 +
.../data/solver/packages/pydad/2/package.py | 20 +
.../data/solver/packages/pydad/3/package.py | 20 +
.../solver/packages/pyfoo/3.0.0/package.py | 20 +
.../solver/packages/pyfoo/3.1.0/package.py | 20 +
.../data/solver/packages/pymum/1/package.py | 20 +
.../data/solver/packages/pymum/2/package.py | 20 +
.../data/solver/packages/pymum/3/package.py | 20 +
.../data/solver/packages/pyodd/1/package.py | 20 +
.../data/solver/packages/pyodd/2/package.py | 20 +
.../data/solver/packages/pyson/1/package.py | 20 +
.../data/solver/packages/pyson/2/package.py | 20 +
.../data/solver/packages/pysplit/5/package.py | 18 +
.../data/solver/packages/pysplit/6/package.py | 20 +
.../data/solver/packages/pysplit/7/package.py | 20 +
.../solver/packages/python/2.5.2/package.py | 18 +
.../solver/packages/python/2.6.0/package.py | 18 +
.../solver/packages/python/2.6.8/package.py | 18 +
.../solver/packages/python/2.7.0/package.py | 18 +
.../solver/packages/pyvariants/2/package.py | 4 +
.../test_variant_split_end/1.0/package.py | 5 +
.../test_variant_split_end/2.0/package.py | 4 +
.../test_variant_split_end/3.0/package.py | 4 +
.../test_variant_split_end/4.0/package.py | 4 +
.../test_variant_split_mid1/1.0/package.py | 4 +
.../test_variant_split_mid1/2.0/package.py | 4 +
.../test_variant_split_mid2/1.0/package.py | 4 +
.../test_variant_split_mid2/2.0/package.py | 4 +
.../test_variant_split_start/1.0/package.py | 4 +
.../test_variant_split_start/2.0/package.py | 4 +
.../data/suites/packages/bah/package.yaml | 8 +
.../data/suites/packages/eek/package.yaml | 4 +
.../data/suites/packages/foo/package.yaml | 4 +
src/rez/tests/test_build.py | 193 +
src/rez/tests/test_commands.py | 168 +
src/rez/tests/test_completion.py | 79 +
src/rez/tests/test_config.py | 247 ++
src/rez/tests/test_context.py | 112 +
src/rez/tests/test_copy_package.py | 328 ++
src/rez/tests/test_formatter.py | 294 ++
src/rez/tests/test_imports.py | 71 +
src/rez/tests/test_logging.py | 25 +
src/rez/tests/test_packages.py | 405 ++
src/rez/tests/test_release.py | 252 ++
src/rez/tests/test_resources_.py | 317 ++
src/rez/tests/test_rex.py | 428 ++
src/rez/tests/test_schema.py | 25 +
src/rez/tests/test_shells.py | 347 ++
src/rez/tests/test_solver.py | 239 ++
src/rez/tests/test_suites.py | 156 +
src/rez/tests/test_version.py | 29 +
src/rez/tests/util.py | 329 ++
src/rez/util.py | 191 +
src/rez/utils/__init__.py | 33 +
src/rez/utils/_version.py | 27 +
src/rez/utils/amqp.py | 120 +
src/rez/utils/backcompat.py | 182 +
src/rez/utils/colorize.py | 322 ++
src/rez/utils/data_utils.py | 598 +++
src/rez/utils/diff_packages.py | 65 +
src/rez/utils/filesystem.py | 573 +++
src/rez/utils/formatting.py | 504 +++
src/rez/utils/graph_utils.py | 285 ++
src/rez/utils/json.py | 36 +
src/rez/utils/lint_helper.py | 38 +
src/rez/utils/logging.conf | 26 +
src/rez/utils/logging_.py | 86 +
src/rez/utils/memcached.py | 396 ++
src/rez/utils/patching.py | 94 +
src/rez/utils/platform_.py | 572 +++
src/rez/utils/platform_mapped.py | 42 +
src/rez/utils/py_dist.py | 261 ++
src/rez/utils/resources.py | 295 ++
src/rez/utils/schema.py | 88 +
src/rez/utils/scope.py | 276 ++
src/rez/utils/sourcecode.py | 346 ++
src/rez/utils/system.py | 38 +
src/rez/utils/yaml.py | 92 +
src/rez/vendor/__init__.py | 0
src/rez/vendor/amqp/LICENSE | 458 ++
src/rez/vendor/amqp/__init__.py | 70 +
src/rez/vendor/amqp/abstract_channel.py | 93 +
src/rez/vendor/amqp/basic_message.py | 124 +
src/rez/vendor/amqp/channel.py | 2550 ++++++++++++
src/rez/vendor/amqp/connection.py | 1008 +++++
src/rez/vendor/amqp/exceptions.py | 262 ++
src/rez/vendor/amqp/five.py | 191 +
src/rez/vendor/amqp/method_framing.py | 231 ++
src/rez/vendor/amqp/protocol.py | 13 +
src/rez/vendor/amqp/serialization.py | 509 +++
src/rez/vendor/amqp/transport.py | 299 ++
src/rez/vendor/amqp/utils.py | 102 +
src/rez/vendor/argcomplete/LICENSE.rst | 177 +
src/rez/vendor/argcomplete/__init__.py | 449 ++
src/rez/vendor/argcomplete/completers.py | 79 +
src/rez/vendor/argcomplete/my_argparse.py | 285 ++
src/rez/vendor/argcomplete/my_shlex.py | 300 ++
src/rez/vendor/argparse.py | 2362 +++++++++++
src/rez/vendor/atomicwrites/LICENSE | 19 +
src/rez/vendor/atomicwrites/__init__.py | 206 +
src/rez/vendor/colorama/__init__.py | 7 +
src/rez/vendor/colorama/ansi.py | 50 +
src/rez/vendor/colorama/ansitowin32.py | 190 +
src/rez/vendor/colorama/initialise.py | 63 +
src/rez/vendor/colorama/win32.py | 137 +
src/rez/vendor/colorama/winterm.py | 120 +
src/rez/vendor/distlib/__init__.py | 23 +
src/rez/vendor/distlib/_backport/__init__.py | 6 +
src/rez/vendor/distlib/_backport/misc.py | 41 +
src/rez/vendor/distlib/_backport/shutil.py | 761 ++++
.../vendor/distlib/_backport/sysconfig.cfg | 84 +
src/rez/vendor/distlib/_backport/sysconfig.py | 788 ++++
src/rez/vendor/distlib/_backport/tarfile.py | 2607 ++++++++++++
src/rez/vendor/distlib/compat.py | 1111 +++++
src/rez/vendor/distlib/database.py | 1312 ++++++
src/rez/vendor/distlib/index.py | 513 +++
src/rez/vendor/distlib/locators.py | 1257 ++++++
src/rez/vendor/distlib/manifest.py | 367 ++
src/rez/vendor/distlib/markers.py | 190 +
src/rez/vendor/distlib/metadata.py | 1066 +++++
src/rez/vendor/distlib/resources.py | 350 ++
src/rez/vendor/distlib/scripts.py | 384 ++
src/rez/vendor/distlib/t32.exe | Bin 0 -> 89088 bytes
src/rez/vendor/distlib/t64.exe | Bin 0 -> 97792 bytes
src/rez/vendor/distlib/util.py | 1609 +++++++
src/rez/vendor/distlib/version.py | 742 ++++
src/rez/vendor/distlib/w32.exe | Bin 0 -> 85504 bytes
src/rez/vendor/distlib/w64.exe | Bin 0 -> 94208 bytes
src/rez/vendor/distlib/wheel.py | 978 +++++
src/rez/vendor/enum/LICENSE | 32 +
src/rez/vendor/enum/__init__.py | 767 ++++
src/rez/vendor/enum/doc/enum.rst | 725 ++++
src/rez/vendor/enum/enum.py | 767 ++++
src/rez/vendor/lockfile/LICENSE | 21 +
src/rez/vendor/lockfile/RELEASE-NOTES | 50 +
src/rez/vendor/lockfile/__init__.py | 335 ++
src/rez/vendor/lockfile/linklockfile.py | 73 +
src/rez/vendor/lockfile/mkdirlockfile.py | 85 +
src/rez/vendor/lockfile/pidlockfile.py | 193 +
src/rez/vendor/lockfile/sqlitelockfile.py | 155 +
src/rez/vendor/lockfile/symlinklockfile.py | 69 +
src/rez/vendor/memcache/__init__.py | 0
src/rez/vendor/memcache/memcache.py | 1418 +++++++
src/rez/vendor/progress/LICENSE | 13 +
src/rez/vendor/progress/__init__.py | 123 +
src/rez/vendor/progress/bar.py | 83 +
src/rez/vendor/progress/counter.py | 47 +
src/rez/vendor/progress/helpers.py | 91 +
src/rez/vendor/progress/spinner.py | 40 +
src/rez/vendor/pydot/LICENSE | 16 +
src/rez/vendor/pydot/__init__.py | 0
src/rez/vendor/pydot/dot_parser.py | 533 +++
src/rez/vendor/pydot/pydot.py | 2035 +++++++++
src/rez/vendor/pygraph/COPYING | 32 +
src/rez/vendor/pygraph/__init__.py | 63 +
src/rez/vendor/pygraph/algorithms/__init__.py | 31 +
.../pygraph/algorithms/accessibility.py | 347 ++
src/rez/vendor/pygraph/algorithms/critical.py | 163 +
src/rez/vendor/pygraph/algorithms/cycles.py | 108 +
.../pygraph/algorithms/filters/__init__.py | 29 +
.../vendor/pygraph/algorithms/filters/find.py | 78 +
.../vendor/pygraph/algorithms/filters/null.py | 68 +
.../pygraph/algorithms/filters/radius.py | 96 +
.../vendor/pygraph/algorithms/generators.py | 132 +
.../pygraph/algorithms/heuristics/__init__.py | 32 +
.../pygraph/algorithms/heuristics/chow.py | 77 +
.../algorithms/heuristics/euclidean.py | 97 +
src/rez/vendor/pygraph/algorithms/minmax.py | 516 +++
src/rez/vendor/pygraph/algorithms/pagerank.py | 76 +
.../vendor/pygraph/algorithms/searching.py | 153 +
src/rez/vendor/pygraph/algorithms/sorting.py | 51 +
.../vendor/pygraph/algorithms/traversal.py | 84 +
src/rez/vendor/pygraph/algorithms/utils.py | 89 +
src/rez/vendor/pygraph/classes/__init__.py | 27 +
src/rez/vendor/pygraph/classes/digraph.py | 259 ++
src/rez/vendor/pygraph/classes/exceptions.py | 76 +
src/rez/vendor/pygraph/classes/graph.py | 230 +
src/rez/vendor/pygraph/classes/hypergraph.py | 363 ++
src/rez/vendor/pygraph/mixins/__init__.py | 33 +
src/rez/vendor/pygraph/mixins/basegraph.py | 32 +
src/rez/vendor/pygraph/mixins/common.py | 215 +
src/rez/vendor/pygraph/mixins/labeling.py | 227 +
src/rez/vendor/pygraph/readwrite/__init__.py | 31 +
src/rez/vendor/pygraph/readwrite/dot.py | 263 ++
src/rez/vendor/pygraph/readwrite/markup.py | 195 +
src/rez/vendor/pyparsing/LICENSE | 18 +
src/rez/vendor/pyparsing/__init__.py | 0
src/rez/vendor/pyparsing/pyparsing.py | 3688 +++++++++++++++++
src/rez/vendor/schema/LICENSE-MIT | 19 +
src/rez/vendor/schema/__init__.py | 0
src/rez/vendor/schema/schema.py | 274 ++
src/rez/vendor/schema/test_schema.py | 376 ++
src/rez/vendor/six/CHANGES | 231 ++
src/rez/vendor/six/LICENSE | 18 +
src/rez/vendor/six/README | 16 +
src/rez/vendor/six/__init__.py | 0
src/rez/vendor/six/six.py | 762 ++++
src/rez/vendor/sortedcontainers/LICENSE | 13 +
src/rez/vendor/sortedcontainers/__init__.py | 52 +
src/rez/vendor/sortedcontainers/sorteddict.py | 741 ++++
src/rez/vendor/sortedcontainers/sortedlist.py | 2492 +++++++++++
src/rez/vendor/sortedcontainers/sortedset.py | 327 ++
src/rez/vendor/unittest2/__init__.py | 68 +
src/rez/vendor/unittest2/__main__.py | 10 +
src/rez/vendor/unittest2/case.py | 1084 +++++
src/rez/vendor/unittest2/collector.py | 9 +
src/rez/vendor/unittest2/compatibility.py | 64 +
src/rez/vendor/unittest2/loader.py | 322 ++
src/rez/vendor/unittest2/main.py | 241 ++
src/rez/vendor/unittest2/result.py | 183 +
src/rez/vendor/unittest2/runner.py | 206 +
src/rez/vendor/unittest2/signals.py | 57 +
src/rez/vendor/unittest2/suite.py | 287 ++
src/rez/vendor/unittest2/util.py | 99 +
src/rez/vendor/version/__init__.py | 0
src/rez/vendor/version/requirement.py | 400 ++
src/rez/vendor/version/test.py | 492 +++
src/rez/vendor/version/util.py | 100 +
src/rez/vendor/version/version.py | 1393 +++++++
src/rez/vendor/yaml/LICENSE | 19 +
src/rez/vendor/yaml/__init__.py | 315 ++
src/rez/vendor/yaml/composer.py | 139 +
src/rez/vendor/yaml/constructor.py | 675 +++
src/rez/vendor/yaml/cyaml.py | 85 +
src/rez/vendor/yaml/dumper.py | 62 +
src/rez/vendor/yaml/emitter.py | 1140 +++++
src/rez/vendor/yaml/error.py | 75 +
src/rez/vendor/yaml/events.py | 86 +
src/rez/vendor/yaml/loader.py | 40 +
src/rez/vendor/yaml/nodes.py | 49 +
src/rez/vendor/yaml/parser.py | 589 +++
src/rez/vendor/yaml/reader.py | 190 +
src/rez/vendor/yaml/representer.py | 484 +++
src/rez/vendor/yaml/resolver.py | 224 +
src/rez/vendor/yaml/scanner.py | 1457 +++++++
src/rez/vendor/yaml/serializer.py | 111 +
src/rez/vendor/yaml/tokens.py | 104 +
src/rez/wrapper.py | 285 ++
src/rezgui/__init__.py | 18 +
src/rezgui/app.py | 61 +
src/rezgui/dialogs/AboutDialog.py | 53 +
src/rezgui/dialogs/BrowsePackageDialog.py | 75 +
src/rezgui/dialogs/ImageViewerDialog.py | 40 +
src/rezgui/dialogs/ProcessDialog.py | 103 +
src/rezgui/dialogs/ResolveDialog.py | 344 ++
src/rezgui/dialogs/VariantVersionsDialog.py | 38 +
src/rezgui/dialogs/WriteGraphDialog.py | 149 +
src/rezgui/dialogs/__init__.py | 16 +
src/rezgui/icons/advanced_resolve.png | Bin 0 -> 951 bytes
src/rezgui/icons/changelog.png | Bin 0 -> 777 bytes
src/rezgui/icons/clock.png | Bin 0 -> 763 bytes
src/rezgui/icons/clock_warning.png | Bin 0 -> 1094 bytes
src/rezgui/icons/cog.png | Bin 0 -> 431 bytes
src/rezgui/icons/context.png | Bin 0 -> 895 bytes
src/rezgui/icons/context_settings.png | Bin 0 -> 997 bytes
src/rezgui/icons/depends.png | Bin 0 -> 248 bytes
src/rezgui/icons/diff.png | Bin 0 -> 883 bytes
src/rezgui/icons/diff_to_disk.png | Bin 0 -> 822 bytes
src/rezgui/icons/diff_to_other.png | Bin 0 -> 850 bytes
src/rezgui/icons/equal_to.png | Bin 0 -> 929 bytes
src/rezgui/icons/equalish.png | Bin 0 -> 975 bytes
src/rezgui/icons/error.png | Bin 0 -> 888 bytes
src/rezgui/icons/excluded.png | Bin 0 -> 1028 bytes
src/rezgui/icons/find.png | Bin 0 -> 879 bytes
src/rezgui/icons/github_32.png | Bin 0 -> 938 bytes
src/rezgui/icons/graph.png | Bin 0 -> 839 bytes
src/rezgui/icons/greater_than.png | Bin 0 -> 1035 bytes
src/rezgui/icons/greater_than_1.png | Bin 0 -> 1036 bytes
src/rezgui/icons/greater_than_2.png | Bin 0 -> 1061 bytes
src/rezgui/icons/greater_than_3.png | Bin 0 -> 1061 bytes
src/rezgui/icons/green_tick.png | Bin 0 -> 615 bytes
src/rezgui/icons/green_white_tick.png | Bin 0 -> 767 bytes
src/rezgui/icons/help.png | Bin 0 -> 935 bytes
src/rezgui/icons/info.png | Bin 0 -> 905 bytes
src/rezgui/icons/less_than.png | Bin 0 -> 1001 bytes
src/rezgui/icons/less_than_1.png | Bin 0 -> 997 bytes
src/rezgui/icons/less_than_2.png | Bin 0 -> 1025 bytes
src/rezgui/icons/less_than_3.png | Bin 0 -> 1028 bytes
src/rezgui/icons/local.png | Bin 0 -> 929 bytes
src/rezgui/icons/lock.png | Bin 0 -> 342 bytes
src/rezgui/icons/lock_2.png | Bin 0 -> 438 bytes
src/rezgui/icons/lock_2_faint.png | Bin 0 -> 394 bytes
src/rezgui/icons/lock_3.png | Bin 0 -> 443 bytes
src/rezgui/icons/lock_3_faint.png | Bin 0 -> 401 bytes
src/rezgui/icons/lock_4.png | Bin 0 -> 445 bytes
src/rezgui/icons/lock_4_faint.png | Bin 0 -> 397 bytes
src/rezgui/icons/lock_faint.png | Bin 0 -> 321 bytes
src/rezgui/icons/missing.png | Bin 0 -> 944 bytes
src/rezgui/icons/new.png | Bin 0 -> 829 bytes
src/rezgui/icons/no_lock.png | Bin 0 -> 619 bytes
src/rezgui/icons/no_lock_faint.png | Bin 0 -> 554 bytes
src/rezgui/icons/old_man.png | Bin 0 -> 1174 bytes
src/rezgui/icons/package.png | Bin 0 -> 721 bytes
src/rezgui/icons/pink.png | Bin 0 -> 165 bytes
src/rezgui/icons/resolve.png | Bin 0 -> 869 bytes
src/rezgui/icons/revert.png | Bin 0 -> 865 bytes
src/rezgui/icons/revert_to_diff.png | Bin 0 -> 792 bytes
src/rezgui/icons/revert_to_disk.png | Bin 0 -> 900 bytes
src/rezgui/icons/spanner.png | Bin 0 -> 377 bytes
src/rezgui/icons/terminal.png | Bin 0 -> 856 bytes
src/rezgui/icons/time_lock.png | Bin 0 -> 460 bytes
src/rezgui/icons/tools.png | Bin 0 -> 382 bytes
src/rezgui/icons/variant.png | Bin 0 -> 509 bytes
src/rezgui/icons/versions.png | Bin 0 -> 797 bytes
src/rezgui/icons/warning.png | Bin 0 -> 837 bytes
src/rezgui/icons/yellow_tick.png | Bin 0 -> 607 bytes
src/rezgui/icons/yellow_white_tick.png | Bin 0 -> 767 bytes
src/rezgui/mixins/ContextViewMixin.py | 51 +
src/rezgui/mixins/StoreSizeMixin.py | 37 +
src/rezgui/mixins/__init__.py | 16 +
src/rezgui/models/ContextModel.py | 269 ++
src/rezgui/models/__init__.py | 16 +
src/rezgui/objects/App.py | 106 +
src/rezgui/objects/Config.py | 145 +
src/rezgui/objects/LoadPackagesThread.py | 59 +
src/rezgui/objects/ProcessTrackerThread.py | 113 +
src/rezgui/objects/ResolveThread.py | 71 +
src/rezgui/objects/__init__.py | 16 +
src/rezgui/qt.py | 63 +
src/rezgui/rezguiconfig | 49 +
src/rezgui/util.py | 166 +
src/rezgui/widgets/BrowsePackagePane.py | 43 +
src/rezgui/widgets/BrowsePackageWidget.py | 86 +
src/rezgui/widgets/ChangelogEdit.py | 70 +
src/rezgui/widgets/ConfiguredSplitter.py | 48 +
src/rezgui/widgets/ContextDetailsWidget.py | 114 +
src/rezgui/widgets/ContextEnvironTable.py | 88 +
src/rezgui/widgets/ContextEnvironWidget.py | 56 +
src/rezgui/widgets/ContextManagerWidget.py | 375 ++
src/rezgui/widgets/ContextResolveTimeLabel.py | 52 +
src/rezgui/widgets/ContextSettingsWidget.py | 181 +
src/rezgui/widgets/ContextTableWidget.py | 742 ++++
src/rezgui/widgets/ContextToolsWidget.py | 110 +
.../widgets/EffectivePackageCellWidget.py | 39 +
src/rezgui/widgets/FindPopup.py | 67 +
src/rezgui/widgets/IconButton.py | 34 +
src/rezgui/widgets/ImageViewerWidget.py | 121 +
src/rezgui/widgets/PackageLineEdit.py | 167 +
src/rezgui/widgets/PackageLoadingWidget.py | 137 +
src/rezgui/widgets/PackageSelectWidget.py | 90 +
src/rezgui/widgets/PackageTabWidget.py | 145 +
src/rezgui/widgets/PackageVersionsTable.py | 147 +
src/rezgui/widgets/SearchableTextEdit.py | 51 +
src/rezgui/widgets/StreamableTextEdit.py | 68 +
src/rezgui/widgets/TimeSelecterPopup.py | 144 +
src/rezgui/widgets/TimestampWidget.py | 93 +
src/rezgui/widgets/ToolWidget.py | 126 +
src/rezgui/widgets/VariantCellWidget.py | 330 ++
src/rezgui/widgets/VariantDetailsWidget.py | 62 +
src/rezgui/widgets/VariantHelpWidget.py | 153 +
src/rezgui/widgets/VariantSummaryWidget.py | 116 +
src/rezgui/widgets/VariantToolsList.py | 83 +
src/rezgui/widgets/VariantVersionsTable.py | 180 +
src/rezgui/widgets/VariantVersionsWidget.py | 190 +
src/rezgui/widgets/VariantsList.py | 71 +
src/rezgui/widgets/ViewGraphButton.py | 74 +
src/rezgui/widgets/__init__.py | 16 +
src/rezgui/windows/BrowsePackageSubWindow.py | 36 +
src/rezgui/windows/ContextSubWindow.py | 162 +
src/rezgui/windows/MainWindow.py | 175 +
src/rezgui/windows/__init__.py | 16 +
src/rezplugins/__init__.py | 16 +
src/rezplugins/build_process/__init__.py | 18 +
src/rezplugins/build_process/local.py | 280 ++
src/rezplugins/build_process/remote.py | 41 +
src/rezplugins/build_process/rezconfig | 0
src/rezplugins/build_system/__init__.py | 18 +
src/rezplugins/build_system/bez.py | 152 +
src/rezplugins/build_system/cmake.py | 279 ++
.../build_system/cmake_files/Colorize.cmake | 63 +
.../cmake_files/FindStaticLibs.cmake | 49 +
.../cmake_files/InstallDirs.cmake | 71 +
.../cmake_files/InstallFiles.cmake | 145 +
.../cmake_files/InstallPython.cmake | 128 +
.../build_system/cmake_files/RezBuild.cmake | 115 +
.../cmake_files/RezFindPackages.cmake | 253 ++
.../cmake_files/RezInstallCMake.cmake | 264 ++
.../cmake_files/RezInstallContext.cmake | 111 +
.../cmake_files/RezInstallDoxygen.cmake | 168 +
.../cmake_files/RezInstallPython.cmake | 40 +
.../cmake_files/RezPipInstall.cmake | 120 +
.../build_system/cmake_files/RezProject.cmake | 20 +
.../cmake_files/RezRepository.cmake | 32 +
.../build_system/cmake_files/Utils.cmake | 159 +
src/rezplugins/build_system/custom.py | 213 +
src/rezplugins/build_system/make.py | 40 +
src/rezplugins/build_system/rezconfig | 21 +
src/rezplugins/build_system/rezconfig.py | 49 +
.../build_system/template_files/Doxyfile | 1808 ++++++++
src/rezplugins/package_repository/__init__.py | 18 +
.../package_repository/filesystem.py | 1135 +++++
src/rezplugins/package_repository/memory.py | 213 +
src/rezplugins/package_repository/rezconfig | 37 +
src/rezplugins/release_hook/__init__.py | 18 +
src/rezplugins/release_hook/amqp.py | 112 +
src/rezplugins/release_hook/command.py | 215 +
.../emailer-recipients-example.yaml | 43 +
src/rezplugins/release_hook/emailer.py | 168 +
src/rezplugins/release_hook/rezconfig | 125 +
src/rezplugins/release_vcs/__init__.py | 18 +
src/rezplugins/release_vcs/git.py | 252 ++
src/rezplugins/release_vcs/hg.py | 289 ++
src/rezplugins/release_vcs/rezconfig | 3 +
src/rezplugins/release_vcs/stub.py | 92 +
src/rezplugins/release_vcs/svn.py | 150 +
src/rezplugins/shell/__init__.py | 18 +
src/rezplugins/shell/bash.py | 109 +
src/rezplugins/shell/cmd.py | 332 ++
src/rezplugins/shell/csh.py | 171 +
src/rezplugins/shell/rezconfig | 14 +
src/rezplugins/shell/sh.py | 164 +
src/rezplugins/shell/tcsh.py | 68 +
src/support/README.md | 3 +
src/support/package_utils/README | 4 +
src/support/package_utils/get_committers.sh | 16 +
src/support/package_utils/set_authors.py | 21 +
src/support/shotgun_toolkit/rez_app_launch.py | 171 +
tag.sh | 34 +
tests/__init__.py | 0
tests/test.py | 17 +
tox.ini | 6 +
wiki/README.md | 10 +
wiki/media/icons/info.png | Bin 0 -> 1014 bytes
wiki/media/icons/under_construction.png | Bin 0 -> 865 bytes
wiki/media/icons/warning.png | Bin 0 -> 848 bytes
wiki/media/other_pkg_mgr.png | Bin 0 -> 13425 bytes
wiki/media/pkg_path_anatomy.png | Bin 0 -> 44007 bytes
wiki/media/rez_banner_128.png | Bin 0 -> 9887 bytes
wiki/media/rez_deps_simple_eg.png | Bin 0 -> 5589 bytes
wiki/media/rez_env.png | Bin 0 -> 118567 bytes
wiki/media/rez_pkg_mgr.png | Bin 0 -> 40820 bytes
wiki/pages/Basic-Concepts.md | 369 ++
wiki/pages/Building-Packages.md | 249 ++
wiki/pages/Command-Line-Tools.md | 43 +
wiki/pages/Contexts.md | 97 +
wiki/pages/Environment-Variables.md | 84 +
wiki/pages/FAQ.md | 1 +
wiki/pages/Getting-Started.md | 170 +
wiki/pages/Glossary.md | 50 +
wiki/pages/Package-Commands.md | 475 +++
wiki/pages/Package-Definition-Guide.md | 852 ++++
wiki/pages/Suites.md | 150 +
wiki/pages/Variants.md | 196 +
wiki/pages/_Configuring-Rez.md | 108 +
wiki/pages/_Credits.md | 16 +
wiki/update-wiki.sh | 30 +
728 files changed, 130650 insertions(+)
create mode 100644 .gitignore
create mode 100644 .travis.yml
create mode 100644 CHANGELOG.md
create mode 100644 CONTRIBUTING.md
create mode 100644 COPYING.LESSER
create mode 100644 INSTALL.md
create mode 100644 MANIFEST.in
create mode 100644 README.md
create mode 100644 RELEASE.md
create mode 100755 bin/_rez-complete
create mode 100755 bin/_rez_fwd
create mode 100755 bin/bez
create mode 100755 bin/rez
create mode 100755 bin/rez-bind
create mode 100755 bin/rez-build
create mode 100755 bin/rez-config
create mode 100755 bin/rez-context
create mode 100644 bin/rez-cp
create mode 100755 bin/rez-depends
create mode 100755 bin/rez-diff
create mode 100755 bin/rez-env
create mode 100755 bin/rez-gui
create mode 100755 bin/rez-help
create mode 100755 bin/rez-interpret
create mode 100755 bin/rez-memcache
create mode 100755 bin/rez-pip
create mode 100755 bin/rez-plugins
create mode 100755 bin/rez-python
create mode 100755 bin/rez-release
create mode 100755 bin/rez-search
create mode 100755 bin/rez-selftest
create mode 100755 bin/rez-status
create mode 100755 bin/rez-suite
create mode 100644 bin/rez-test
create mode 100755 bin/rez-view
create mode 100755 bin/rez-yaml2py
create mode 100755 bin/rezolve
create mode 100644 docs/Makefile
create mode 100644 docs/api/modules.rst
create mode 100644 docs/api/rez._sys.rst
create mode 100644 docs/api/rez.bind.rst
create mode 100644 docs/api/rez.cli.rst
create mode 100644 docs/api/rez.rst
create mode 100644 docs/api/rez.tests.rst
create mode 100644 docs/api/rezplugins.build_system.rst
create mode 100644 docs/api/rezplugins.release_hook.rst
create mode 100644 docs/api/rezplugins.release_vcs.rst
create mode 100644 docs/api/rezplugins.rst
create mode 100644 docs/api/rezplugins.shell.rst
create mode 100644 docs/api/rezplugins.source_retriever.rst
create mode 100644 docs/conf.py
create mode 100644 docs/index.rst
create mode 100644 docs/make.bat
create mode 100644 docs/one-liners.rst
create mode 100644 example_packages/hello_world/CMakeLists.txt
create mode 100644 example_packages/hello_world/README.md
create mode 100644 example_packages/hello_world/bin/hello
create mode 100644 example_packages/hello_world/package.py
create mode 100644 example_packages/hello_world/python/hello_world.py
create mode 100644 example_packages/hello_world/rezbuild.py.example
create mode 100644 install.py
create mode 100644 media/rez_banner.svg
create mode 100644 media/rez_banner_256.png
create mode 100644 media/rez_logo.svg
create mode 100644 media/rez_logo.xcf
create mode 100644 media/rez_logo_256.png
create mode 100644 media/rez_logo_32.png
create mode 100644 release_util.py
create mode 100644 setup.py
create mode 100644 src/build_utils/__init__.py
create mode 100644 src/build_utils/add_license.py
create mode 100644 src/build_utils/distlib/__init__.py
create mode 100644 src/build_utils/distlib/_backport/__init__.py
create mode 100644 src/build_utils/distlib/_backport/misc.py
create mode 100644 src/build_utils/distlib/_backport/shutil.py
create mode 100644 src/build_utils/distlib/_backport/sysconfig.cfg
create mode 100644 src/build_utils/distlib/_backport/sysconfig.py
create mode 100644 src/build_utils/distlib/_backport/tarfile.py
create mode 100644 src/build_utils/distlib/compat.py
create mode 100644 src/build_utils/distlib/database.py
create mode 100644 src/build_utils/distlib/index.py
create mode 100644 src/build_utils/distlib/locators.py
create mode 100644 src/build_utils/distlib/manifest.py
create mode 100644 src/build_utils/distlib/markers.py
create mode 100644 src/build_utils/distlib/metadata.py
create mode 100644 src/build_utils/distlib/resources.py
create mode 100644 src/build_utils/distlib/scripts.py
create mode 100644 src/build_utils/distlib/t32.exe
create mode 100644 src/build_utils/distlib/t64.exe
create mode 100644 src/build_utils/distlib/util.py
create mode 100644 src/build_utils/distlib/version.py
create mode 100644 src/build_utils/distlib/w32.exe
create mode 100644 src/build_utils/distlib/w64.exe
create mode 100644 src/build_utils/distlib/wheel.py
create mode 100755 src/build_utils/make_README.py
create mode 100644 src/build_utils/virtualenv/LICENSE.txt
create mode 100644 src/build_utils/virtualenv/__init__.py
create mode 100755 src/build_utils/virtualenv/virtualenv.py
create mode 100644 src/build_utils/virtualenv/virtualenv_support/pip-1.5.6-py2.py3-none-any.whl
create mode 100644 src/build_utils/virtualenv/virtualenv_support/setuptools-3.6-py2.py3-none-any.whl
create mode 100644 src/rez/SOLVER.md
create mode 100644 src/rez/__init__.py
create mode 100644 src/rez/backport/__init__.py
create mode 100644 src/rez/backport/importlib.py
create mode 100644 src/rez/backport/lru_cache.py
create mode 100644 src/rez/backport/ordereddict.py
create mode 100644 src/rez/backport/shutilwhich.py
create mode 100644 src/rez/backport/zipfile.py
create mode 100644 src/rez/bind/PyQt.py
create mode 100644 src/rez/bind/PySide.py
create mode 100644 src/rez/bind/__init__.py
create mode 100644 src/rez/bind/_pymodule.py
create mode 100644 src/rez/bind/_utils.py
create mode 100644 src/rez/bind/arch.py
create mode 100644 src/rez/bind/cmake.py
create mode 100644 src/rez/bind/hello_world.py
create mode 100644 src/rez/bind/os.py
create mode 100644 src/rez/bind/pip.py
create mode 100644 src/rez/bind/platform.py
create mode 100644 src/rez/bind/python.py
create mode 100644 src/rez/bind/rez.py
create mode 100644 src/rez/bind/rezgui.py
create mode 100644 src/rez/bind/setuptools.py
create mode 100644 src/rez/bind/sip.py
create mode 100644 src/rez/build_process_.py
create mode 100644 src/rez/build_system.py
create mode 100644 src/rez/cli/__init__.py
create mode 100644 src/rez/cli/_bez.py
create mode 100644 src/rez/cli/_complete_util.py
create mode 100644 src/rez/cli/_main.py
create mode 100644 src/rez/cli/_util.py
create mode 100644 src/rez/cli/bind.py
create mode 100644 src/rez/cli/build.py
create mode 100644 src/rez/cli/complete.py
create mode 100644 src/rez/cli/config.py
create mode 100644 src/rez/cli/context.py
create mode 100644 src/rez/cli/cp.py
create mode 100644 src/rez/cli/depends.py
create mode 100644 src/rez/cli/diff.py
create mode 100644 src/rez/cli/env.py
create mode 100644 src/rez/cli/forward.py
create mode 100644 src/rez/cli/gui.py
create mode 100644 src/rez/cli/help.py
create mode 100644 src/rez/cli/interpret.py
create mode 100644 src/rez/cli/memcache.py
create mode 100644 src/rez/cli/pip.py
create mode 100644 src/rez/cli/plugins.py
create mode 100644 src/rez/cli/python.py
create mode 100644 src/rez/cli/release.py
create mode 100644 src/rez/cli/search.py
create mode 100644 src/rez/cli/selftest.py
create mode 100644 src/rez/cli/status.py
create mode 100644 src/rez/cli/suite.py
create mode 100644 src/rez/cli/test.py
create mode 100644 src/rez/cli/view.py
create mode 100644 src/rez/cli/yaml2py.py
create mode 100644 src/rez/completion/complete.csh
create mode 100644 src/rez/completion/complete.sh
create mode 100644 src/rez/config.py
create mode 100644 src/rez/developer_package.py
create mode 100644 src/rez/exceptions.py
create mode 100644 src/rez/package_bind.py
create mode 100644 src/rez/package_copy.py
create mode 100644 src/rez/package_filter.py
create mode 100644 src/rez/package_help.py
create mode 100644 src/rez/package_maker__.py
create mode 100644 src/rez/package_order.py
create mode 100644 src/rez/package_py_utils.py
create mode 100644 src/rez/package_repository.py
create mode 100644 src/rez/package_resources_.py
create mode 100644 src/rez/package_search.py
create mode 100644 src/rez/package_serialise.py
create mode 100644 src/rez/package_test.py
create mode 100644 src/rez/packages_.py
create mode 100644 src/rez/pip.py
create mode 100644 src/rez/plugin_managers.py
create mode 100644 src/rez/release_hook.py
create mode 100644 src/rez/release_vcs.py
create mode 100644 src/rez/resolved_context.py
create mode 100644 src/rez/resolver.py
create mode 100644 src/rez/rex.py
create mode 100644 src/rez/rex_bindings.py
create mode 100644 src/rez/rezconfig.py
create mode 100644 src/rez/serialise.py
create mode 100644 src/rez/shells.py
create mode 100644 src/rez/solver.py
create mode 100644 src/rez/status.py
create mode 100644 src/rez/suite.py
create mode 100644 src/rez/system.py
create mode 100644 src/rez/tests/README
create mode 100644 src/rez/tests/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/anti/1.0.0/package.py
create mode 100644 src/rez/tests/data/builds/packages/anti/1.0.0/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/bah/2.1/bah/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/bah/2.1/package.py
create mode 100644 src/rez/tests/data/builds/packages/bah/2.1/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/build_util/1/build_util/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/build_util/1/package.py
create mode 100644 src/rez/tests/data/builds/packages/build_util/1/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/floob/floob/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/floob/package.py
create mode 100644 src/rez/tests/data/builds/packages/floob/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.0.0/foo/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.0.0/package.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.0.0/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.1.0/foo/__init__.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.1.0/package.py
create mode 100644 src/rez/tests/data/builds/packages/foo/1.1.0/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/hello/1.0/Makefile
create mode 100644 src/rez/tests/data/builds/packages/hello/1.0/lib/main.cpp
create mode 100644 src/rez/tests/data/builds/packages/hello/1.0/package.py
create mode 100644 src/rez/tests/data/builds/packages/loco/3/package.py
create mode 100644 src/rez/tests/data/builds/packages/loco/3/rezbuild.py
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/CMakeLists.txt
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/lib/CMakeLists.txt
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/lib/ghetto_greet.cpp
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/lib/ghetto_greet.h
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/package.py
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/util/CMakeLists.txt
create mode 100644 src/rez/tests/data/builds/packages/sup_world/3.8/util/main.cpp
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/CMakeLists.txt
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/package.py
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/ghettoTranslator.cpp
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/ghettoTranslator.h
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/lolTranslator.cpp
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/lolTranslator.h
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/translator.cpp
create mode 100644 src/rez/tests/data/builds/packages/translate_lib/2.2.0/src/translator.h
create mode 100644 src/rez/tests/data/builds/packages/whack/package.py
create mode 100644 src/rez/tests/data/builds/packages/whack/rezbuild.py
create mode 100644 src/rez/tests/data/commands/packages/rextest/1.1/package.yaml
create mode 100644 src/rez/tests/data/commands/packages/rextest/1.2/package.yaml
create mode 100644 src/rez/tests/data/commands/packages/rextest/1.3/package.py
create mode 100644 src/rez/tests/data/commands/packages/rextest2/2/package.py
create mode 100644 src/rez/tests/data/config/package.py
create mode 100644 src/rez/tests/data/config/test1.yaml
create mode 100644 src/rez/tests/data/config/test2.py
create mode 100644 src/rez/tests/data/packages/developer/package.yaml
create mode 100644 src/rez/tests/data/packages/developer_changed/package.yaml
create mode 100644 src/rez/tests/data/packages/developer_dynamic/package.py
create mode 100644 src/rez/tests/data/packages/developer_novar/package.yaml
create mode 100644 src/rez/tests/data/packages/developer_novar_changed/package.yaml
create mode 100644 src/rez/tests/data/packages/py_packages/late_binding/1.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/multi.py
create mode 100644 src/rez/tests/data/packages/py_packages/single_unversioned.py
create mode 100644 src/rez/tests/data/packages/py_packages/single_versioned.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/1.0.5/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/1.0.6/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/1.1.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/1.1.1/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/1.2.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/2.0.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/2.1.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/timestamped/2.1.5/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/unversioned_py/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/variants_py/2.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/versioned/2.0/package.py
create mode 100644 src/rez/tests/data/packages/py_packages/versioned/3.0/package.py
create mode 100644 src/rez/tests/data/packages/yaml_packages/multi.yaml
create mode 100644 src/rez/tests/data/packages/yaml_packages/single_unversioned.yaml
create mode 100644 src/rez/tests/data/packages/yaml_packages/single_versioned.yaml
create mode 100644 src/rez/tests/data/packages/yaml_packages/unversioned/package.yaml
create mode 100644 src/rez/tests/data/packages/yaml_packages/versioned/1.0/package.yaml
create mode 100644 src/rez/tests/data/packages/yaml_packages/versioned/2.0/package.yaml
create mode 100644 src/rez/tests/data/python/early_bind/__init__.py
create mode 100644 src/rez/tests/data/python/early_bind/early_utils.py
create mode 100644 src/rez/tests/data/python/late_bind/late_utils.py
create mode 100644 src/rez/tests/data/release/data/data.txt
create mode 100644 src/rez/tests/data/release/package.yaml
create mode 100644 src/rez/tests/data/release/rezbuild.py
create mode 100644 src/rez/tests/data/release/variants/package.yaml
create mode 100644 src/rez/tests/data/release/variants/rezbuild.py
create mode 100644 src/rez/tests/data/release/variants/spangle/1.0/package.yaml
create mode 100644 src/rez/tests/data/release/variants/spangle/1.1/package.yaml
create mode 100644 src/rez/tests/data/release/variants/spangle/2.0/package.yaml
create mode 100644 src/rez/tests/data/solver/packages/README
create mode 100644 src/rez/tests/data/solver/packages/bahish/1/package.py
create mode 100644 src/rez/tests/data/solver/packages/bahish/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/nada/package.py
create mode 100644 src/rez/tests/data/solver/packages/nopy/2.1/package.py
create mode 100644 src/rez/tests/data/solver/packages/pybah/4/package.py
create mode 100644 src/rez/tests/data/solver/packages/pybah/5/package.py
create mode 100644 src/rez/tests/data/solver/packages/pydad/1/package.py
create mode 100644 src/rez/tests/data/solver/packages/pydad/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/pydad/3/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyfoo/3.0.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyfoo/3.1.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/pymum/1/package.py
create mode 100644 src/rez/tests/data/solver/packages/pymum/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/pymum/3/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyodd/1/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyodd/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyson/1/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyson/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/pysplit/5/package.py
create mode 100644 src/rez/tests/data/solver/packages/pysplit/6/package.py
create mode 100644 src/rez/tests/data/solver/packages/pysplit/7/package.py
create mode 100644 src/rez/tests/data/solver/packages/python/2.5.2/package.py
create mode 100644 src/rez/tests/data/solver/packages/python/2.6.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/python/2.6.8/package.py
create mode 100644 src/rez/tests/data/solver/packages/python/2.7.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/pyvariants/2/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_end/1.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_end/2.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_end/3.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_end/4.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_mid1/1.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_mid1/2.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_mid2/1.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_mid2/2.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_start/1.0/package.py
create mode 100644 src/rez/tests/data/solver/packages/test_variant_split_start/2.0/package.py
create mode 100644 src/rez/tests/data/suites/packages/bah/package.yaml
create mode 100644 src/rez/tests/data/suites/packages/eek/package.yaml
create mode 100644 src/rez/tests/data/suites/packages/foo/package.yaml
create mode 100644 src/rez/tests/test_build.py
create mode 100644 src/rez/tests/test_commands.py
create mode 100644 src/rez/tests/test_completion.py
create mode 100644 src/rez/tests/test_config.py
create mode 100644 src/rez/tests/test_context.py
create mode 100644 src/rez/tests/test_copy_package.py
create mode 100644 src/rez/tests/test_formatter.py
create mode 100644 src/rez/tests/test_imports.py
create mode 100644 src/rez/tests/test_logging.py
create mode 100644 src/rez/tests/test_packages.py
create mode 100644 src/rez/tests/test_release.py
create mode 100644 src/rez/tests/test_resources_.py
create mode 100644 src/rez/tests/test_rex.py
create mode 100644 src/rez/tests/test_schema.py
create mode 100644 src/rez/tests/test_shells.py
create mode 100644 src/rez/tests/test_solver.py
create mode 100644 src/rez/tests/test_suites.py
create mode 100644 src/rez/tests/test_version.py
create mode 100644 src/rez/tests/util.py
create mode 100644 src/rez/util.py
create mode 100644 src/rez/utils/__init__.py
create mode 100644 src/rez/utils/_version.py
create mode 100644 src/rez/utils/amqp.py
create mode 100644 src/rez/utils/backcompat.py
create mode 100644 src/rez/utils/colorize.py
create mode 100644 src/rez/utils/data_utils.py
create mode 100644 src/rez/utils/diff_packages.py
create mode 100644 src/rez/utils/filesystem.py
create mode 100644 src/rez/utils/formatting.py
create mode 100644 src/rez/utils/graph_utils.py
create mode 100644 src/rez/utils/json.py
create mode 100644 src/rez/utils/lint_helper.py
create mode 100644 src/rez/utils/logging.conf
create mode 100644 src/rez/utils/logging_.py
create mode 100644 src/rez/utils/memcached.py
create mode 100644 src/rez/utils/patching.py
create mode 100644 src/rez/utils/platform_.py
create mode 100644 src/rez/utils/platform_mapped.py
create mode 100644 src/rez/utils/py_dist.py
create mode 100644 src/rez/utils/resources.py
create mode 100644 src/rez/utils/schema.py
create mode 100644 src/rez/utils/scope.py
create mode 100644 src/rez/utils/sourcecode.py
create mode 100644 src/rez/utils/system.py
create mode 100644 src/rez/utils/yaml.py
create mode 100644 src/rez/vendor/__init__.py
create mode 100644 src/rez/vendor/amqp/LICENSE
create mode 100644 src/rez/vendor/amqp/__init__.py
create mode 100644 src/rez/vendor/amqp/abstract_channel.py
create mode 100644 src/rez/vendor/amqp/basic_message.py
create mode 100644 src/rez/vendor/amqp/channel.py
create mode 100644 src/rez/vendor/amqp/connection.py
create mode 100644 src/rez/vendor/amqp/exceptions.py
create mode 100644 src/rez/vendor/amqp/five.py
create mode 100644 src/rez/vendor/amqp/method_framing.py
create mode 100644 src/rez/vendor/amqp/protocol.py
create mode 100644 src/rez/vendor/amqp/serialization.py
create mode 100644 src/rez/vendor/amqp/transport.py
create mode 100644 src/rez/vendor/amqp/utils.py
create mode 100644 src/rez/vendor/argcomplete/LICENSE.rst
create mode 100644 src/rez/vendor/argcomplete/__init__.py
create mode 100644 src/rez/vendor/argcomplete/completers.py
create mode 100644 src/rez/vendor/argcomplete/my_argparse.py
create mode 100644 src/rez/vendor/argcomplete/my_shlex.py
create mode 100644 src/rez/vendor/argparse.py
create mode 100644 src/rez/vendor/atomicwrites/LICENSE
create mode 100644 src/rez/vendor/atomicwrites/__init__.py
create mode 100755 src/rez/vendor/colorama/__init__.py
create mode 100755 src/rez/vendor/colorama/ansi.py
create mode 100755 src/rez/vendor/colorama/ansitowin32.py
create mode 100755 src/rez/vendor/colorama/initialise.py
create mode 100755 src/rez/vendor/colorama/win32.py
create mode 100755 src/rez/vendor/colorama/winterm.py
create mode 100644 src/rez/vendor/distlib/__init__.py
create mode 100644 src/rez/vendor/distlib/_backport/__init__.py
create mode 100644 src/rez/vendor/distlib/_backport/misc.py
create mode 100644 src/rez/vendor/distlib/_backport/shutil.py
create mode 100644 src/rez/vendor/distlib/_backport/sysconfig.cfg
create mode 100644 src/rez/vendor/distlib/_backport/sysconfig.py
create mode 100644 src/rez/vendor/distlib/_backport/tarfile.py
create mode 100644 src/rez/vendor/distlib/compat.py
create mode 100644 src/rez/vendor/distlib/database.py
create mode 100644 src/rez/vendor/distlib/index.py
create mode 100644 src/rez/vendor/distlib/locators.py
create mode 100644 src/rez/vendor/distlib/manifest.py
create mode 100644 src/rez/vendor/distlib/markers.py
create mode 100644 src/rez/vendor/distlib/metadata.py
create mode 100644 src/rez/vendor/distlib/resources.py
create mode 100644 src/rez/vendor/distlib/scripts.py
create mode 100644 src/rez/vendor/distlib/t32.exe
create mode 100644 src/rez/vendor/distlib/t64.exe
create mode 100644 src/rez/vendor/distlib/util.py
create mode 100644 src/rez/vendor/distlib/version.py
create mode 100644 src/rez/vendor/distlib/w32.exe
create mode 100644 src/rez/vendor/distlib/w64.exe
create mode 100644 src/rez/vendor/distlib/wheel.py
create mode 100644 src/rez/vendor/enum/LICENSE
create mode 100644 src/rez/vendor/enum/__init__.py
create mode 100644 src/rez/vendor/enum/doc/enum.rst
create mode 100644 src/rez/vendor/enum/enum.py
create mode 100644 src/rez/vendor/lockfile/LICENSE
create mode 100644 src/rez/vendor/lockfile/RELEASE-NOTES
create mode 100644 src/rez/vendor/lockfile/__init__.py
create mode 100644 src/rez/vendor/lockfile/linklockfile.py
create mode 100644 src/rez/vendor/lockfile/mkdirlockfile.py
create mode 100644 src/rez/vendor/lockfile/pidlockfile.py
create mode 100644 src/rez/vendor/lockfile/sqlitelockfile.py
create mode 100644 src/rez/vendor/lockfile/symlinklockfile.py
create mode 100644 src/rez/vendor/memcache/__init__.py
create mode 100644 src/rez/vendor/memcache/memcache.py
create mode 100644 src/rez/vendor/progress/LICENSE
create mode 100644 src/rez/vendor/progress/__init__.py
create mode 100644 src/rez/vendor/progress/bar.py
create mode 100644 src/rez/vendor/progress/counter.py
create mode 100644 src/rez/vendor/progress/helpers.py
create mode 100644 src/rez/vendor/progress/spinner.py
create mode 100644 src/rez/vendor/pydot/LICENSE
create mode 100644 src/rez/vendor/pydot/__init__.py
create mode 100644 src/rez/vendor/pydot/dot_parser.py
create mode 100644 src/rez/vendor/pydot/pydot.py
create mode 100644 src/rez/vendor/pygraph/COPYING
create mode 100644 src/rez/vendor/pygraph/__init__.py
create mode 100644 src/rez/vendor/pygraph/algorithms/__init__.py
create mode 100644 src/rez/vendor/pygraph/algorithms/accessibility.py
create mode 100644 src/rez/vendor/pygraph/algorithms/critical.py
create mode 100644 src/rez/vendor/pygraph/algorithms/cycles.py
create mode 100644 src/rez/vendor/pygraph/algorithms/filters/__init__.py
create mode 100644 src/rez/vendor/pygraph/algorithms/filters/find.py
create mode 100644 src/rez/vendor/pygraph/algorithms/filters/null.py
create mode 100644 src/rez/vendor/pygraph/algorithms/filters/radius.py
create mode 100644 src/rez/vendor/pygraph/algorithms/generators.py
create mode 100644 src/rez/vendor/pygraph/algorithms/heuristics/__init__.py
create mode 100644 src/rez/vendor/pygraph/algorithms/heuristics/chow.py
create mode 100644 src/rez/vendor/pygraph/algorithms/heuristics/euclidean.py
create mode 100644 src/rez/vendor/pygraph/algorithms/minmax.py
create mode 100644 src/rez/vendor/pygraph/algorithms/pagerank.py
create mode 100644 src/rez/vendor/pygraph/algorithms/searching.py
create mode 100644 src/rez/vendor/pygraph/algorithms/sorting.py
create mode 100644 src/rez/vendor/pygraph/algorithms/traversal.py
create mode 100644 src/rez/vendor/pygraph/algorithms/utils.py
create mode 100644 src/rez/vendor/pygraph/classes/__init__.py
create mode 100644 src/rez/vendor/pygraph/classes/digraph.py
create mode 100644 src/rez/vendor/pygraph/classes/exceptions.py
create mode 100644 src/rez/vendor/pygraph/classes/graph.py
create mode 100644 src/rez/vendor/pygraph/classes/hypergraph.py
create mode 100644 src/rez/vendor/pygraph/mixins/__init__.py
create mode 100644 src/rez/vendor/pygraph/mixins/basegraph.py
create mode 100644 src/rez/vendor/pygraph/mixins/common.py
create mode 100644 src/rez/vendor/pygraph/mixins/labeling.py
create mode 100644 src/rez/vendor/pygraph/readwrite/__init__.py
create mode 100644 src/rez/vendor/pygraph/readwrite/dot.py
create mode 100644 src/rez/vendor/pygraph/readwrite/markup.py
create mode 100644 src/rez/vendor/pyparsing/LICENSE
create mode 100644 src/rez/vendor/pyparsing/__init__.py
create mode 100644 src/rez/vendor/pyparsing/pyparsing.py
create mode 100644 src/rez/vendor/schema/LICENSE-MIT
create mode 100644 src/rez/vendor/schema/__init__.py
create mode 100644 src/rez/vendor/schema/schema.py
create mode 100644 src/rez/vendor/schema/test_schema.py
create mode 100644 src/rez/vendor/six/CHANGES
create mode 100644 src/rez/vendor/six/LICENSE
create mode 100644 src/rez/vendor/six/README
create mode 100644 src/rez/vendor/six/__init__.py
create mode 100644 src/rez/vendor/six/six.py
create mode 100644 src/rez/vendor/sortedcontainers/LICENSE
create mode 100644 src/rez/vendor/sortedcontainers/__init__.py
create mode 100644 src/rez/vendor/sortedcontainers/sorteddict.py
create mode 100644 src/rez/vendor/sortedcontainers/sortedlist.py
create mode 100644 src/rez/vendor/sortedcontainers/sortedset.py
create mode 100644 src/rez/vendor/unittest2/__init__.py
create mode 100644 src/rez/vendor/unittest2/__main__.py
create mode 100644 src/rez/vendor/unittest2/case.py
create mode 100644 src/rez/vendor/unittest2/collector.py
create mode 100644 src/rez/vendor/unittest2/compatibility.py
create mode 100644 src/rez/vendor/unittest2/loader.py
create mode 100644 src/rez/vendor/unittest2/main.py
create mode 100644 src/rez/vendor/unittest2/result.py
create mode 100644 src/rez/vendor/unittest2/runner.py
create mode 100644 src/rez/vendor/unittest2/signals.py
create mode 100644 src/rez/vendor/unittest2/suite.py
create mode 100644 src/rez/vendor/unittest2/util.py
create mode 100644 src/rez/vendor/version/__init__.py
create mode 100644 src/rez/vendor/version/requirement.py
create mode 100644 src/rez/vendor/version/test.py
create mode 100644 src/rez/vendor/version/util.py
create mode 100644 src/rez/vendor/version/version.py
create mode 100644 src/rez/vendor/yaml/LICENSE
create mode 100644 src/rez/vendor/yaml/__init__.py
create mode 100644 src/rez/vendor/yaml/composer.py
create mode 100644 src/rez/vendor/yaml/constructor.py
create mode 100644 src/rez/vendor/yaml/cyaml.py
create mode 100644 src/rez/vendor/yaml/dumper.py
create mode 100644 src/rez/vendor/yaml/emitter.py
create mode 100644 src/rez/vendor/yaml/error.py
create mode 100644 src/rez/vendor/yaml/events.py
create mode 100644 src/rez/vendor/yaml/loader.py
create mode 100644 src/rez/vendor/yaml/nodes.py
create mode 100644 src/rez/vendor/yaml/parser.py
create mode 100644 src/rez/vendor/yaml/reader.py
create mode 100644 src/rez/vendor/yaml/representer.py
create mode 100644 src/rez/vendor/yaml/resolver.py
create mode 100644 src/rez/vendor/yaml/scanner.py
create mode 100644 src/rez/vendor/yaml/serializer.py
create mode 100644 src/rez/vendor/yaml/tokens.py
create mode 100644 src/rez/wrapper.py
create mode 100644 src/rezgui/__init__.py
create mode 100644 src/rezgui/app.py
create mode 100644 src/rezgui/dialogs/AboutDialog.py
create mode 100644 src/rezgui/dialogs/BrowsePackageDialog.py
create mode 100644 src/rezgui/dialogs/ImageViewerDialog.py
create mode 100644 src/rezgui/dialogs/ProcessDialog.py
create mode 100644 src/rezgui/dialogs/ResolveDialog.py
create mode 100644 src/rezgui/dialogs/VariantVersionsDialog.py
create mode 100644 src/rezgui/dialogs/WriteGraphDialog.py
create mode 100644 src/rezgui/dialogs/__init__.py
create mode 100644 src/rezgui/icons/advanced_resolve.png
create mode 100644 src/rezgui/icons/changelog.png
create mode 100644 src/rezgui/icons/clock.png
create mode 100644 src/rezgui/icons/clock_warning.png
create mode 100644 src/rezgui/icons/cog.png
create mode 100644 src/rezgui/icons/context.png
create mode 100644 src/rezgui/icons/context_settings.png
create mode 100644 src/rezgui/icons/depends.png
create mode 100644 src/rezgui/icons/diff.png
create mode 100644 src/rezgui/icons/diff_to_disk.png
create mode 100644 src/rezgui/icons/diff_to_other.png
create mode 100644 src/rezgui/icons/equal_to.png
create mode 100644 src/rezgui/icons/equalish.png
create mode 100644 src/rezgui/icons/error.png
create mode 100644 src/rezgui/icons/excluded.png
create mode 100644 src/rezgui/icons/find.png
create mode 100644 src/rezgui/icons/github_32.png
create mode 100644 src/rezgui/icons/graph.png
create mode 100644 src/rezgui/icons/greater_than.png
create mode 100644 src/rezgui/icons/greater_than_1.png
create mode 100644 src/rezgui/icons/greater_than_2.png
create mode 100644 src/rezgui/icons/greater_than_3.png
create mode 100644 src/rezgui/icons/green_tick.png
create mode 100644 src/rezgui/icons/green_white_tick.png
create mode 100644 src/rezgui/icons/help.png
create mode 100644 src/rezgui/icons/info.png
create mode 100644 src/rezgui/icons/less_than.png
create mode 100644 src/rezgui/icons/less_than_1.png
create mode 100644 src/rezgui/icons/less_than_2.png
create mode 100644 src/rezgui/icons/less_than_3.png
create mode 100644 src/rezgui/icons/local.png
create mode 100644 src/rezgui/icons/lock.png
create mode 100644 src/rezgui/icons/lock_2.png
create mode 100644 src/rezgui/icons/lock_2_faint.png
create mode 100644 src/rezgui/icons/lock_3.png
create mode 100644 src/rezgui/icons/lock_3_faint.png
create mode 100644 src/rezgui/icons/lock_4.png
create mode 100644 src/rezgui/icons/lock_4_faint.png
create mode 100644 src/rezgui/icons/lock_faint.png
create mode 100644 src/rezgui/icons/missing.png
create mode 100644 src/rezgui/icons/new.png
create mode 100644 src/rezgui/icons/no_lock.png
create mode 100644 src/rezgui/icons/no_lock_faint.png
create mode 100644 src/rezgui/icons/old_man.png
create mode 100644 src/rezgui/icons/package.png
create mode 100644 src/rezgui/icons/pink.png
create mode 100644 src/rezgui/icons/resolve.png
create mode 100644 src/rezgui/icons/revert.png
create mode 100644 src/rezgui/icons/revert_to_diff.png
create mode 100644 src/rezgui/icons/revert_to_disk.png
create mode 100644 src/rezgui/icons/spanner.png
create mode 100644 src/rezgui/icons/terminal.png
create mode 100644 src/rezgui/icons/time_lock.png
create mode 100644 src/rezgui/icons/tools.png
create mode 100644 src/rezgui/icons/variant.png
create mode 100644 src/rezgui/icons/versions.png
create mode 100644 src/rezgui/icons/warning.png
create mode 100644 src/rezgui/icons/yellow_tick.png
create mode 100644 src/rezgui/icons/yellow_white_tick.png
create mode 100644 src/rezgui/mixins/ContextViewMixin.py
create mode 100644 src/rezgui/mixins/StoreSizeMixin.py
create mode 100644 src/rezgui/mixins/__init__.py
create mode 100644 src/rezgui/models/ContextModel.py
create mode 100644 src/rezgui/models/__init__.py
create mode 100644 src/rezgui/objects/App.py
create mode 100644 src/rezgui/objects/Config.py
create mode 100644 src/rezgui/objects/LoadPackagesThread.py
create mode 100644 src/rezgui/objects/ProcessTrackerThread.py
create mode 100644 src/rezgui/objects/ResolveThread.py
create mode 100644 src/rezgui/objects/__init__.py
create mode 100644 src/rezgui/qt.py
create mode 100644 src/rezgui/rezguiconfig
create mode 100644 src/rezgui/util.py
create mode 100644 src/rezgui/widgets/BrowsePackagePane.py
create mode 100644 src/rezgui/widgets/BrowsePackageWidget.py
create mode 100644 src/rezgui/widgets/ChangelogEdit.py
create mode 100644 src/rezgui/widgets/ConfiguredSplitter.py
create mode 100644 src/rezgui/widgets/ContextDetailsWidget.py
create mode 100644 src/rezgui/widgets/ContextEnvironTable.py
create mode 100644 src/rezgui/widgets/ContextEnvironWidget.py
create mode 100644 src/rezgui/widgets/ContextManagerWidget.py
create mode 100644 src/rezgui/widgets/ContextResolveTimeLabel.py
create mode 100644 src/rezgui/widgets/ContextSettingsWidget.py
create mode 100644 src/rezgui/widgets/ContextTableWidget.py
create mode 100644 src/rezgui/widgets/ContextToolsWidget.py
create mode 100644 src/rezgui/widgets/EffectivePackageCellWidget.py
create mode 100644 src/rezgui/widgets/FindPopup.py
create mode 100644 src/rezgui/widgets/IconButton.py
create mode 100644 src/rezgui/widgets/ImageViewerWidget.py
create mode 100644 src/rezgui/widgets/PackageLineEdit.py
create mode 100644 src/rezgui/widgets/PackageLoadingWidget.py
create mode 100644 src/rezgui/widgets/PackageSelectWidget.py
create mode 100644 src/rezgui/widgets/PackageTabWidget.py
create mode 100644 src/rezgui/widgets/PackageVersionsTable.py
create mode 100644 src/rezgui/widgets/SearchableTextEdit.py
create mode 100644 src/rezgui/widgets/StreamableTextEdit.py
create mode 100644 src/rezgui/widgets/TimeSelecterPopup.py
create mode 100644 src/rezgui/widgets/TimestampWidget.py
create mode 100644 src/rezgui/widgets/ToolWidget.py
create mode 100644 src/rezgui/widgets/VariantCellWidget.py
create mode 100644 src/rezgui/widgets/VariantDetailsWidget.py
create mode 100644 src/rezgui/widgets/VariantHelpWidget.py
create mode 100644 src/rezgui/widgets/VariantSummaryWidget.py
create mode 100644 src/rezgui/widgets/VariantToolsList.py
create mode 100644 src/rezgui/widgets/VariantVersionsTable.py
create mode 100644 src/rezgui/widgets/VariantVersionsWidget.py
create mode 100644 src/rezgui/widgets/VariantsList.py
create mode 100644 src/rezgui/widgets/ViewGraphButton.py
create mode 100644 src/rezgui/widgets/__init__.py
create mode 100644 src/rezgui/windows/BrowsePackageSubWindow.py
create mode 100644 src/rezgui/windows/ContextSubWindow.py
create mode 100644 src/rezgui/windows/MainWindow.py
create mode 100644 src/rezgui/windows/__init__.py
create mode 100644 src/rezplugins/__init__.py
create mode 100644 src/rezplugins/build_process/__init__.py
create mode 100644 src/rezplugins/build_process/local.py
create mode 100644 src/rezplugins/build_process/remote.py
create mode 100644 src/rezplugins/build_process/rezconfig
create mode 100644 src/rezplugins/build_system/__init__.py
create mode 100644 src/rezplugins/build_system/bez.py
create mode 100644 src/rezplugins/build_system/cmake.py
create mode 100644 src/rezplugins/build_system/cmake_files/Colorize.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/FindStaticLibs.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/InstallDirs.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/InstallFiles.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/InstallPython.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezBuild.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezFindPackages.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezInstallCMake.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezInstallContext.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezInstallDoxygen.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezInstallPython.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezPipInstall.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezProject.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/RezRepository.cmake
create mode 100644 src/rezplugins/build_system/cmake_files/Utils.cmake
create mode 100644 src/rezplugins/build_system/custom.py
create mode 100644 src/rezplugins/build_system/make.py
create mode 100644 src/rezplugins/build_system/rezconfig
create mode 100644 src/rezplugins/build_system/rezconfig.py
create mode 100644 src/rezplugins/build_system/template_files/Doxyfile
create mode 100644 src/rezplugins/package_repository/__init__.py
create mode 100644 src/rezplugins/package_repository/filesystem.py
create mode 100644 src/rezplugins/package_repository/memory.py
create mode 100644 src/rezplugins/package_repository/rezconfig
create mode 100644 src/rezplugins/release_hook/__init__.py
create mode 100644 src/rezplugins/release_hook/amqp.py
create mode 100644 src/rezplugins/release_hook/command.py
create mode 100644 src/rezplugins/release_hook/emailer-recipients-example.yaml
create mode 100644 src/rezplugins/release_hook/emailer.py
create mode 100644 src/rezplugins/release_hook/rezconfig
create mode 100644 src/rezplugins/release_vcs/__init__.py
create mode 100644 src/rezplugins/release_vcs/git.py
create mode 100644 src/rezplugins/release_vcs/hg.py
create mode 100644 src/rezplugins/release_vcs/rezconfig
create mode 100644 src/rezplugins/release_vcs/stub.py
create mode 100644 src/rezplugins/release_vcs/svn.py
create mode 100644 src/rezplugins/shell/__init__.py
create mode 100644 src/rezplugins/shell/bash.py
create mode 100644 src/rezplugins/shell/cmd.py
create mode 100644 src/rezplugins/shell/csh.py
create mode 100644 src/rezplugins/shell/rezconfig
create mode 100644 src/rezplugins/shell/sh.py
create mode 100644 src/rezplugins/shell/tcsh.py
create mode 100644 src/support/README.md
create mode 100644 src/support/package_utils/README
create mode 100644 src/support/package_utils/get_committers.sh
create mode 100644 src/support/package_utils/set_authors.py
create mode 100755 src/support/shotgun_toolkit/rez_app_launch.py
create mode 100755 tag.sh
create mode 100644 tests/__init__.py
create mode 100644 tests/test.py
create mode 100644 tox.ini
create mode 100644 wiki/README.md
create mode 100644 wiki/media/icons/info.png
create mode 100644 wiki/media/icons/under_construction.png
create mode 100644 wiki/media/icons/warning.png
create mode 100644 wiki/media/other_pkg_mgr.png
create mode 100644 wiki/media/pkg_path_anatomy.png
create mode 100644 wiki/media/rez_banner_128.png
create mode 100644 wiki/media/rez_deps_simple_eg.png
create mode 100644 wiki/media/rez_env.png
create mode 100644 wiki/media/rez_pkg_mgr.png
create mode 100644 wiki/pages/Basic-Concepts.md
create mode 100644 wiki/pages/Building-Packages.md
create mode 100644 wiki/pages/Command-Line-Tools.md
create mode 100644 wiki/pages/Contexts.md
create mode 100644 wiki/pages/Environment-Variables.md
create mode 100644 wiki/pages/FAQ.md
create mode 100644 wiki/pages/Getting-Started.md
create mode 100644 wiki/pages/Glossary.md
create mode 100644 wiki/pages/Package-Commands.md
create mode 100644 wiki/pages/Package-Definition-Guide.md
create mode 100644 wiki/pages/Suites.md
create mode 100644 wiki/pages/Variants.md
create mode 100644 wiki/pages/_Configuring-Rez.md
create mode 100644 wiki/pages/_Credits.md
create mode 100644 wiki/update-wiki.sh
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..1cf5b04365
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+*.pyc
+.project
+.pydevproject
+.nfs*
+*.swp
+src/rez.egg-info/
+build/
+dist/
+*~
+docs/_build
+.DS_Store
+.rez-gen-wiki-tmp
+LATEST_CHANGELOG.md
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000..285491ff2d
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+language: python
+
+matrix:
+ include:
+ - python: 2.7
+ os: linux
+ env: _REZ_SHELL=bash
+
+install:
+ - 'if [ "$_REZ_SHELL" == "tcsh" ]; then sudo apt-get install tcsh; fi'
+ - 'python ./install.py ../rez_install'
+
+script:
+ - '../rez_install/bin/rez/rez-selftest -s $_REZ_SHELL'
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000..28a044ea8a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,266 @@
+# Change Log
+
+## [2.28.0](https://github.com/nerdvegas/rez/tree/2.28.0) (2019-03-15)
+[Full Changelog](https://github.com/nerdvegas/rez/compare/2.27.1...2.28.0)
+
+**Fixed bugs:**
+
+- nargs errors for logging_.print_* functions [\#580](https://github.com/nerdvegas/rez/issues/580)
+
+**Merged pull requests:**
+
+- Ignore versions if .ignore file exists [\#453](https://github.com/nerdvegas/rez/pull/453) ([Pixomondo](https://github.com/Pixomondo))
+- Fix/logging print nargs [\#581](https://github.com/nerdvegas/rez/pull/581) ([wwfxuk](https://github.com/wwfxuk))
+- package_test.py: fix rez-test header command with % [\#572](https://github.com/nerdvegas/rez/pull/572) ([rodeofx](https://github.com/rodeofx))
+- Call the flush method every time a Printer instance is called [\#540](https://github.com/nerdvegas/rez/pull/540) ([rodeofx](https://github.com/rodeofx))
+
+## [2.27.1](https://github.com/nerdvegas/rez/tree/2.27.1) (2019-03-15)
+[Full Changelog](https://github.com/nerdvegas/rez/compare/2.27.0...2.27.1)
+
+**Merged pull requests:**
+
+- Delete old repository directory [\#576](https://github.com/nerdvegas/rez/pull/576) ([bpabel](https://github.com/bpabel))
+
+## [2.27.0](https://github.com/nerdvegas/rez/tree/2.27.0) (2019-01-24)
+[Full Changelog](https://github.com/nerdvegas/rez/compare/2.26.4...2.27.0)
+
+**Implemented enhancements:**
+
+- facilitate variant install when target package is read-only [\#565](https://github.com/nerdvegas/rez/issues/565)
+
+**Fixed bugs:**
+
+- timestamp override no working in package copy [\#568](https://github.com/nerdvegas/rez/issues/568)
+- shallow rez-cp can corrupt package if there are overlapping variants [\#563](https://github.com/nerdvegas/rez/issues/563)
+
+**Merged pull requests:**
+
+- Issue 568 [\#569](https://github.com/nerdvegas/rez/pull/569) ([nerdvegas](https://github.com/nerdvegas))
+- Issue 565 [\#567](https://github.com/nerdvegas/rez/pull/567) ([nerdvegas](https://github.com/nerdvegas))
+- Issue 563 [\#566](https://github.com/nerdvegas/rez/pull/566) ([nerdvegas](https://github.com/nerdvegas))
+
+## 2.26.4 [[#562](https://github.com/nerdvegas/rez/pull/562)] Fixed Regression in 2.24.0
+
+#### Addressed Issues
+
+* [#561](https://github.com/nerdvegas/rez/issues/561) timestamp not written to installed package
+
+## 2.26.3 [[#560](https://github.com/nerdvegas/rez/pull/560)] Package.py permissions issue
+
+#### Addressed Issues
+
+* [#559](https://github.com/nerdvegas/rez/issues/559) package.py permissions issue
+
+#### Notes
+
+Fixes issue where installed `package.py` can be set to r/w for only the current user.
+
+## 2.26.2 [[#557](https://github.com/nerdvegas/rez/pull/557)] Package Copy Fixes For Non-Varianted Packages
+
+#### Addressed Issues
+
+* [#556](https://github.com/nerdvegas/rez/issues/556) rez-cp briefly copies original package definition in non-varianted packages
+* [#555](https://github.com/nerdvegas/rez/issues/555) rez-cp inconsistent symlinking when --shallow=true
+* [#554](https://github.com/nerdvegas/rez/issues/554) rez-cp doesn't keep file metadata in some cases
+
+#### Notes
+
+There were various minor issues related to copying non-varianted packages.
+
+## 2.26.1 [[#552](https://github.com/nerdvegas/rez/pull/552)] Bugfix in Package Copy
+
+#### Addressed Issues
+
+* [#551](https://github.com/nerdvegas/rez/issues/551) package copy fails if symlinks in root dir
+
+#### Notes
+
+This was failing when symlinks were present within a non-varianted package being copied. Now, these
+symlinks are retained in the target package, unless `--follow-symlinks` is specified.
+
+## 2.26.0 [[#550](https://github.com/nerdvegas/rez/pull/550)] Build System Detection Fixes
+
+#### Addressed Issues
+
+* [#549](https://github.com/nerdvegas/rez/issues/549) '--build-system' rez-build option not always
+ available
+
+#### Notes
+
+To fix this issue:
+* The '--build-system' rez-build option is now always present.
+* To provide further control over the build system type, the package itself can now specify its build
+ system - see https://github.com/nerdvegas/rez/wiki/Package-Definition-Guide#build_system
+
+#### COMPATIBILITY ISSUE!
+
+Unfortunately, the 'cmake' build system had its own '--build-system' commandline option also. This
+was possible because previous rez versions suppressed the standard '--build-system' option if only
+one valid build system was present for a given package working directory. **This option has been
+changed to '--cmake-build-system'**.
+
+
+## 2.25.0 [[#548](https://github.com/nerdvegas/rez/pull/548)] Various Build-related issues
+
+#### Addressed Issues
+
+* [#433](https://github.com/nerdvegas/rez/issues/433): "package_definition_build_python_paths" defined
+ paths are not available from top level in package.py
+* [#442](https://github.com/nerdvegas/rez/issues/442): "rez-depends" and "private_build_requires"
+* [#416](https://github.com/nerdvegas/rez/issues/416): Need currently-building-variant build variables
+* [#547](https://github.com/nerdvegas/rez/issues/547): rez-cp follows symlinks within package payload
+
+#### Notes
+
+The biggest update in this release is the introduction of new variables accessible at early-bind time:
+building, build_variant_index and build_variant_requires. This allows you to do things like define
+different private_build_requires per-variant, or a requires that is different at runtime than it is
+at build time. In order to get this to work, a package.py is now re-evaluated multiple times when a
+build occurs - once pre-build (where 'building' is set to False), and once per variant build. Please
+see the updated wiki for more details: https://github.com/nerdvegas/rez/wiki/Package-Definition-Guide#available-objects
+
+A new build-time env-var, REZ_BUILD_VARIANT_REQUIRES, has been added. This mirrors the new
+build_variant_requires var mentioned above.
+
+rez-depends has been updated to only include the private_build_requires of the package being queried
+(previously, all packages' private build reqs were included, which is not useful). Recall that the
+previous release fixes the issue where private_build_requires was being stripped from released
+packages.
+
+The entirety of a package definition file can now see the extra build-time modules available via the
+package_definition_build_python_paths config setting. Previously, only early bound functions could
+see these.
+
+There was an issue with package copying (and thus the rez-cp tool) where symlinks within a package's
+payload were expanded out to their source files at copy time. The default now is to keep such symlinks
+intact - but hte previous behavior can still be accessed with the rez-cp --follow-symlinks option.
+
+
+## 2.24.0: Package Copying
+
+This release adds a new tool, rez-cp, for copying packages/variants from one package repository to
+another, with optional renaming/reversioning. The associated API can be found in src/package_copy.py.
+
+#### Addressed Issues
+
+* #541
+* #510
+* #477
+
+#### Notes
+
+* Package definition file writes are now atomic;
+* private_build_requires is kept in installed/released packages;
+* Fixes include modules not being copied into released packages;
+* File lock is no longer created when variant installation happens in dry mode.
+
+
+## 2.23.1: Fixed Regression in 2.20.0
+
+#### Addressed Issues
+
+* #532
+
+#### Notes
+
+Bug was introduced in: https://github.com/nerdvegas/rez/releases/tag/2.20.0
+
+
+## 2.23.0: Package Usage Tracking, Better Config Overrides
+
+#### Addressed Issues
+
+* #528
+
+#### Notes
+
+Two new features are added in this release:
+
+Override any config setting with an env-var. For any setting "foo", you can now set the env-var
+REZ_FOO_JSON to a JSON-encoded string. This works for any config setting. Note that the existing
+REZ_FOO env-var overrides are still in place also; if both are defined, REZ_FOO takes precedence.
+This feature means you can now override some of the more complicated settings with env-vars, such as
+package_filter.
+
+Track context creation and sourcing via AMQP. Messages are published (on a separate thread) to the
+nominated broker/exchange/routing_key. You have control over what parts of the context are published.
+For more details: https://github.com/nerdvegas/rez/blob/master/src/rez/rezconfig.py#L414
+
+The embedded simplejson lib was removed. The native json lib is used instead, and for cases where loads-without-unicoding-everything is needed, utils/json.py now addresses that instead.
+
+
+## 2.22.1: Stdin-related fixes
+
+#### Addressed Issues
+
+* #512
+* #526
+
+
+## 2.22.0: Search API
+
+PR: #213
+
+#### Notes
+
+Package/variant/family search API is now available in package_search.py. This gives the same
+functionality as provided by the rez-search CLI tool.
+
+
+## 2.21.0: Added mingw as a rez build_system for cmake
+
+PR: #501
+
+
+## 2.20.1: Windows Fixes
+
+#### Merged PRs
+
+* #490: Fix alias command in Windows when PATH is modified
+* #489: Fix cmd.exe not escaping special characters
+* #482: Fix selftest getting stuck on Windows
+
+#### Addressed Issues
+
+* #389
+* #343
+* #432
+* #481
+
+
+## 2.20.0: Better CLI Arg Parsing
+
+PR: #523
+
+#### Addressed Issues
+
+* #492
+
+#### Notes
+
+The rez-python command now supports all native python args and passes those through to its python
+subprocess - so you can now shebang with rez-python if that is useful.
+
+More broadly, rez commands now parse CLI args correctly for each case. Many commands previously
+accepted rez-env-style commands (eg rez-env pkgA -- somecommand -- i am ignored), but simply ignored
+extraneous args after -- tokens.
+
+
+## 2.19.1: Fixed bug with rez-build and package preprocess
+
+#### Merged PRs
+
+* #522
+
+#### Addressed Issues
+
+* #514
+
+#### Notes
+
+The problem occurred because the preprocess function was attempting to be serialized when the package
+definition is cached to memcache. However, this function is stripped in installed packages;
+furthermore, caching "developer packages" (ie unbuilt packages) was never intentional.
+
+This release disables memcaching of developer packages, thus avoiding the bug and bringing back
+originally intended behavior.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000..2075920b9e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,23 @@
+# Contributing To Rez
+
+If you would like to contribute code you can do so through GitHub by forking the repository and
+sending a pull request. Please follow these guidelines:
+
+* Make every effort to follow existing conventions and style;
+* Follow [PEP8](https://www.python.org/dev/peps/pep-0008/);
+* Follow the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html)
+ for docstrings;
+* Use *spaces*, not *tabs*;
+* Use [this format](https://help.github.com/articles/closing-issues-using-keywords/) to mention the
+ issue(s) your PR closes;
+* Add relevant tests to demonstrate that your changes work;
+* Add relevant documentation (see *wiki* source directory) to document your changes, if applicable.
+
+## Reporting Bugs
+
+If you report a bug, please ensure to specify the following:
+
+* Rez version (e.g. 2.18.0);
+* Platform and operating system you were using;
+* Contextual information (what were you trying to do using Rez);
+* Simplest possible steps to reproduce.
diff --git a/COPYING.LESSER b/COPYING.LESSER
new file mode 100644
index 0000000000..341c30bda4
--- /dev/null
+++ b/COPYING.LESSER
@@ -0,0 +1,166 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+
+
Typical package managers install packages into an environment
+
+
+
+
Rez installs packages once, and configures environments dynamically
+
6J<$Sf@@bssNj>fd?eE7(n|#`{-f-@~@fY*j ziPNSXR#wqIS-_AJLle1 nGh>Lxy-=GZBJr-$mGfG<(3fJA^HwU+I4)H= zZ!>K;PoZ9(wc-2=^zEM11byfU?OAU)cc&@m*%WD$PkYvTJd1kNE{hxIZw!!B=tIvb z9K~?1OI6OtNg(mt`Lt)f;oOXC%88LS`Lt&}t^;lEq)3~5+Oytp?n0YOJ*7=P?OAU) zH=&L6P31v*)*H@M3hysQ&htwe-d`%wxaJh)ywFqV9qGz>Go5JV{3TU6Gm?ljoQrz? z-IqO{S6$lofHoeVr=M3L>@%DXas1hIZsxoJ`f5+2@y waKR;Yo62_&M#Ax z^KgosC!hALH=GM`J$Uc*@t{5HJ?=A+nq8oc$HxFog+A2(MJ|4W^L?B~b;_Af8wKdq zDayGruMN{F)ZB0~oh0 6s_=u@uP2p3)|t#`AhoZ#e0CF6Xt$r# l&fSr1z%ooxnglTUlr8_qpRc%LcML^=1PTw&619!LY7LSGE$ z&plZO(iacfv) 3i@+HI9!_&L2~_g$M0fZ#dJEl=D=Qv`Itz(`iJb z9@la tNKN4{PL29M zq~3Wq1suTju%1xABCkz8?OD$je2Xi5EHop2OK8vf{9C9;?VgjyPqt6rLLuxiT6(3b z7N)dm>7A~e?U^=O`o<{dCwa6_nsV++;V;fJNy_ e1;Hge{T4eA=@f z#wPZ?pCWDYY0rA2rAkrG7r6-xjVH8ceg19MrFN~Q@ssV-x5;mcZ>@X^H)6U6(+1Ns zlBnKjX{6)QxgI(JmwKP7ack?K+x?P+{xwNCkE9W;*q#?!Z1_C7rRu4ieYpv4;R%gf zctYpjLLF+?N*X`eK79*b*n>+=1;0s~mfmT~`DzM%kz1I>_4%hwr0>nRGJo^*X^CkJ z=MPFX-z1Hkke|&TFl{)8E7d~S+;E1Wzb%zE)W@ClOmS?BexO@2o&VFUpyRnRfAjQD zm#4#>i*fkoRBq)#d)6DyrRi`o)1=Lc6gZkmL>tZ@W0Z4Gn$RQ+_oomIqaQQ`Fg{Qw zpbrxXIxP)!5`S^-==nDdA+GZ21E@cgDs4_Au~5es!+9YF{l6#GgGT+%G@{w~cm9!1 zq~W}pqMX}^1bwe3jNl~x;z4`X8)Pgv52Z_+eA=_#aPCj~+aSTUJfS`7;gH9`q3bE< z$)`Q*;UuI(5#+VWr# 01cEKDdQR%DE(kn|aWl^@j5Z+AK|yHu +?cG7M;#RF>=hhB=mTuJ?q2Kj6`@ye?-*cdk-5jr0>v?bO4>Kh;u~W zULz3$8$EF3fSA^8+rLPA!no ~YOYeQ9fd*s-`ePiApHh5s4%7K;o z_3u4w@URgvl^Ehj^nasQOwH;w`STA%Lf)>*IP{HwIP~xRG5`Mr9XjUi;k|kf9NIr7 z;qTu<<=B6!%&UtZHFV&}n1Mrk59s?g9Y3sJzqk92d~$(w^uJe0O~FIyIplqcfkzsC z4+-uEXX%=9tXieKs@70mla?s&gn7z)Y>x6iK3VxhWdD7HgfA(K$xq(#678UlMju}k zZxk}2{PSplA_k#)`jkTXn-27#gFI;Jw12k=@t_NVrt|*&!BszLS1gZi{P#|TdfpfM zNzfJN3}1pf9)&UyWd_QZ1>4Y_M&i7YktlH}^-x-)bV2ElG8*MWl({HNP<~aaIJ#SL zoGS{aiV8!CL8*z7go1rhJ(Vii7ILJlQqdiiifM_`38fDTI&sWol+Trlou*XzHcD0e zQK>lWkHh{r?2p6#IP8!6PN^z5XSI)%s*Yz~9n4=n7Nr(S3lzMJ>d8ta_$gHjT0L YzM>@-j+a6g-~>Q&7G@`5t90$_|uc zC|6N3@!Wh+!ci)q)IoU$ +}2vgQF93G~0p*?n0yTC&YQ7Sjk&&S)#Q1w+6 z` c0XR+-d9ynk+ym7vudiG zDq)*{cK1~=s+4VB8(UbFQDtoN(Z}K7^#a%XPcOmqB@z8kZT^#Wg_RjNBiF8M7gg?v z5$hk=741mnitR9MTee-+E~(u9Ek8PAm$9RjS#A1tyQE!KnclDNv!m?tO22r_j sUxC#};0u920k}LzCZkoEuhx21;3I+G z1?~dkloic4W_1vlB(O%{3ZSC0BJ2o))&gS$mJ6H#R8Ts^Vzip@^Rk8sqzW7Y;9>f? z8LdRSIKEna1?C9s0+dtQD~r*pg6CgOS=|I?2y7O(2Z&WxS-V8RzH5ALYb!(rstm(7 zs8CeJ+Ra}X{^55!Z`!f8bsAzgH>A;^e;u{#Qns}Wz0n=^+!yC@Dr=02Rc6)6=WqvB z8}wka#TpBb&x%xd;T68X8?mmbDyoQWtreIo&`F>ips=ko3`T1!^M&=PKu>`hfG}I< z`Y>AiRW*FIz7`lP& MfKa-s>I7>ACJS^FC 1ttMO!b6z|c(` zWLY;1k5;zzsv@v`tJwN-Q;eflwY51;g{gS73xv$AZtDZ3RfwvA{Z(KCTaRs2-D{|V zlv#L6Hsq?#Y>s*zvz+M1P0&_1*$+XhA2k4NdQH)gw)##*65uVb6MZg%=!gwO@A4(u z@ik~`4u({ !w|vV3WWCf%gRl z2s|fHOCV05j6k?Ruz*(q@GGz{OuiKphyi%^m}I{+Wi?Vw@O-h+nIWpN(snQ2Zo<~I zU16$`GU#D3d@pbn;IOUosv*G}0$&R3V$hErP>f#GhM~2<0D-9j-wUi4*eh^e;I=@9 zK(>GuFbh;Zly7+l G~3+E8u;BwF1`wWtA1lTGDDGFiv2F zz*#^H%o2;yY6fW=qpaZq3k8kjbU?N+~PKjv;tf;9Y^00_OoGl@-QTft4gMLST`=Q9uc$ z158G%9yCh{WepJcQeZD2N@?$GMl0Sfhp$!-fms4u0mX6Q8H`qW>BcV$e1J;p3dEbW zo~SiM-6ZOLWPMmA(8zj;sCGn^C2BnFy-)3aBx(y$7l@ikdka&$?nJd9DxRpfu~+AK z7wAO(TvJ>5lO{+c_)6eSfrbD-TkBv(Xo5QU3QfQ;TA-Cc1i+UxL0y7h1l||uC=d(q zVNF12rKx%ZGX;7GR0nwTRS{bIV9x@+5_nUfA;1e)6~t(r6b4x;Fj}CMKsW$=eN`Cx z7lHQ$UJ@t^fLM4S@*quMra*Ur>HyQmvugyIvX5oTeBKV?ZA04PY8oqC3nb7I+Ki@6 zE82vsWTlnWoK6xn%fipOJ6^JFT)eKj-gemalo|c4w!Q2+%B=8ZuI*#jR%ZR>+V-<+ zDl=rjK|9cnS8ktn-#xa23kW^P-FUoTKqG-R0 ;Ac^}^_H*~bMi>S3oZqg+zB3}e)y$MQR z_a<@^RZgb;k#78q&Mi*0qp0>9I{r9ST2-jB0aY%g%B57PE74J<=_qR<)lR3{tkP6l z>><^rQ0+%ldpVG5qq3;>d8(aH)Cy3#u7&5I??+Js#~!NgN)3h*wU`>jWl@8RVbs8D z7ty)(s0IC;^(Ij-5%nFlt@4oe@ARj(B`y-39zk^IA)@bBBRY5+(V307eh1O6wnP`( zO|-ic(dEx@{YykQzRff}I6d4&^rKeL^g47oepcVAgL;eJkUm!dmw*SmwJ3}veE-@9 zybs2A4TTXEi-*tvR&iNdZw!ZZ6>XcjqYPCNUYb6UfaoUNHvMTJ3}sJE<7Hbv2seE$ zFkYaSK$1W-z=7ZKVziD5b1fBkPoSMZ1OObDF3hz|V30r+fVOWiUwzBlF0?fZ6L)PQ zcIro)Vk$XsLV>H~EB_Ai(qFDM* zrM)cuHxR|r{}xf7P`gspj-`KlqFDM*z+RI6*!>eV+)I~uk*I%BT@h-?cjY9C?`jks zB6qcz8lIp-P7uX+6~s@1@2Vjk!*}&2QN`$tUs1!$bjV*s@m=}k63KT}lN$0}y+KqA z9WtBt@?HHw)E3lf;}Ma3TVy!Gutr0YZ&o#;reUwn=G*#>8uD%3A&PISG&LMZ4WB29 zZ!3ikk=t5L4f(b%5w(~al6`57BI+5U_^#d|itlO(wd1=wMbyt|r-S)HOr%3d49i^& zA&T$n8)|ru9>f8nHq#;S=RxvakyR{r)te~3tIx4F@2>u&hI` i^S+G+Mgak`zKOu3LS;(Ky7vm)pn-ZRdiGuQLSjdT)_z+ z+Rs-oifZ`^tcTQ;EfWe;seMIZlUHCmxW-Z?d|b$Ur~FmR@H7jKVaw2I(g#$b{1q z=%V+;)*Q@0CuWniIRMt}4{X-biP<2Y$e;r+iq+g10ONZr4C}H=*D%E-pTj^W=77my z20AgvSegSW(1|IEMJMJ!&O`<}ad-g}qNJ@)H%7oN3UBh`0995MxApew2<1iC=B=KF zDvvOqne{=as)%5SslO?Sz+V`MB~=jm2(?Y~yGn>%1lwljobm`i1ls1+u|*I+@VCt^ zulT^__p!~}A6JBN=&;>6KfdG(`_8Sm_6vg!K(r; M~@rQg>l9H-&-v35Ow80T91v z#SsgA(no?DqZstVC<%)!0wA8!hyy7a*T|8Wfedtw9JHCoK-Wm&9=b*fnL-*@Ex^H^ z-28<8uV}B(Ey{|e=h%@ppV8(RDb9GC6z8l0?;PyvcuaDIWn?81J1ir+5>=n%*hko_ zbs&+Os3FV9yF{^!jHZSxBVQz{CAA}#u!<73hT5@=yh0SoNQ>Nji$!EBqF$uBF+{P5 zTt@9!M4l#!MI@q&AZJj+Ce*MSQA3Gh5xD?+^F-t!YPbixDcT6~OKMr0TJl}>C5rEA z4jm(RwUZhir(+N{1^GQ4Q-xacZM{Ym-`2-O@ojCUc9%$w-y@1|i=q&6TOEkv+oITq z6;0>+h1&6LT_uWc3vpHK<+~zVUG8cuQB`U0a JjxV9V2&jn2zDQk|)7;Rfk%Rq?Y}NauPL{D88%RbjT&tQ5Y8FYT8|ucBc^4jVQjY zPl)2%+CuI4w(b-4J01y4-;V`e7pNx?E)XOT40zJn5xzhqx--O4B@%EPVTXXD2s z}aiaCpIAHaAE>CPHaQYnOy*2*sZ*+p^1a%(x#|N z_SsV4xgqilVaL(wj~TS9vZ|~QzWxnRjD#JH&XBN+Q{mJ>33PT@2yw)_R{ lc*M#j#|7Z)c!`bUFayXLeLMeA2)&h=nL3Ck!t5sE$#)i=n|;? ziE0PaQLU*`t^l|7_Z5&8B3FQ$Lj$>j@2GYX9o3jB`2zF-FFJ~^U=Z!+E5O~Nfm{LK zE? =emAmAyKP_-^oN^hp#%!livhvDZ zrpNcUATy$sE2!D%AFsjmDW%-yrynq3IKkK&=Yo|5Q*5L} *5_3>9dJ-^j?lefF;{YnIHPIeF~RzOSJxTE%g(8P?rno0onuX;`;s>s5&K z2XAGbKfU?e$^F~aE`_J zFrKArpl|DRN`mi+uofjeh< *QY#k9~#)X*MFVbwX&Dp z#I~|A%Dcrr)S*pM{hF0yOGXw63GnrD7>193a9GjEl4W8mR*p|--1?>02fRIg>g;cp z{j%lYrN@w`@#>*(@hXj>S=foTZyjJYc!y3W#mgX$bDDpcG2>N>OIoTM|{*5BuTu zdr|ji+stYzw%K~I&D?=vn u+@qw_HJAoJ_3GAcKL=w4_$ODCVu;d}p+X83^Whf1@>?uQoEQtMp zzWof*)o1|O($r!shHU7xJ7rv@Yz7X7t3W)6k(AkBaCi(pf526M9*wwwI83C{mG47i zBI4VK3=BkvTV{!S(Cnf31qqkMAt;{44uR RlZuC7SF%h@9p sgVawS( zGk`*--nRK*W_h-b-PX1~h1djkXD{s(#CEPb>! fo%QQ4+`pWXxX~$`;7Z^$<{NE!B#NA5>;ksrRLq= zowxSz{Z@F}Hwxa-fAfIH6Z!X_Oe*-t_D{>s|J&a~r>SI*g4C=sQYaTk&CDxABje{u zCUiN_RPb?Bk-RQt;EV5by~g$(LDm0L`CI|?WB4Fl<=^tTs4nl*2)R@Ad2+ShN;N`0 zR`U}mmr?GcxC^#vyi=*h*x&d%O14r>aK0vyC~+wDP+FsOLFtb&8s$TjxhP9eenr`d zasuT#O14r>{ZJxN;!x_Lv_|QI(jR3s%7-X(QI??min0^s1j==kY$RLzp+us@q0~cZ zjnW0BKgwv74^if#EJ67dWhcrBl nPcHK7J^XC~+wDP+FsOLFtb&8s$TjxhP9eenr_y&l6lQ1!W=1ev}RW |C{CrGEv!^KQ>pgowC$n%pYNvB3)htDfa5#h_?PM`)v2{oFRxds z^FF1zj8W>9D9nI7r_^i5lzJUW``zy-)pM6pZ{S+{AQ8XM0j2uk8V1Z)YS1912G>(+ zsE<;^Fzw*2rAoa$3T28?qtND^pOqSuq14!WO1+z=)OaMkCnK4BVjHF2uc_3OB1(OT z{yFuLQqyq#)BjZJ eE7)+lyx~8^1mKITYN(7Y#A@d6QCed!w9D zYM!Okd_0T!cy{wAqu_Vuf2Y(}Unuo8_~7d=@f>l!Z|0yZrsoM`=RaRUHzVC?1O-LB z-nh&`kq##i6hSbg*)I6i2p(2gji_NF@(@39AsSNP 2|$9A880$!TC;=pBB5k;x3 z+)=MBxP+E9kPOoN tE{7$`=W zaVe)TXjEF6QKSBXmsvu&eLJl+;dmBDquF=inT9JfxZeS|u0@quea=Jpv|-Bh?Y0B1 zZ>TcE$6v>2VX!i*eU*&_%0Q*t{DuKTKjcStIbheeeU$0f|Eyid_Ck)!$m@1J+dvNX zs9Sae+YB6e({5xVpDEdxQ1CAODyi!MWfGt1)O*ClSqpwx`}>~ ;L{YzwEj27^7F=D!XW%&SU 0AyR=TMd7Q|ZMq-|l_@Cp X(&H{% znl}=?Uzzdy9Xru>6>B%~*E@Ey-?*oKR;g>2nf>tYjVl*UA3L}=ZS|thr;HxZ_1VVN z!VQj!X1Xu$Sv@bgU;D&Jj#g$rI{3rXK1rnvjxFY7A6qrCL#%;_Om#aqWBcqriT)}; z)wW&ckuST)BIZ`#&bhW?c%nCw?i*ofY%}iL*DiPw{%K0rbHG1$*>@IqkL0ik9PSUA zc=Je=`@y2;{dhRaow2aJFONC7A1r*%m&cXN2lMM8@>|q44-YNEez`kmv6DvYireP7 zcOyA!Yvz1aMR6*=wa$r LL!H?7Zu;kwna^~E-D z8SB}4VG(GP`nJB=S$V03w*Dy!j%6c+Sla&+I|Zg7t;3`IN9-10V*&*Q%%^kU(eW<{ zJo+q^z+=E#2|R{wmB3?>eF!{)=ZYN!&mjOAaTJV%uzu8W#2ygsFL?@K{#r;SI*TY| z0=}OGdts=c_$iDLU<4uJID(SZar_Z5TfEXm4j?p%;fIjD7 Fu*Yl{D|R>w-8oD6r`&K^yK$in13+%4z2*d{LBgbGJdi23jAU` zcyP>P{3L$rnUnY_{6xfJ`H7x)@e@c_FHgz+NMZLLn~l>V={|lxm>&7<-tXpOEEogF zRriAVG1 `oVO4YgQPIVn2;36e=f8Nf&wYg)lMUy8oAUR9)T&5 zY;8=ikS+kh5wrq=14EF}2a!eKkJP4HkRN_ZznTM<^;OmcyDpem`!0kK@xp^nv+LUq zT=FT%5<}^P>vlui#M(^YEd6ROCbd`=B+Gk NQQ)nw_~FOF zni-#CR2gF*=JEc)VAcw@`P;JwehBIEt_AUkR3m{t^V3qW<}m-}!3Q+|2B}>cDTN>g zFh}Rnl)?}U5Ea=U6@#e2P`^$s4dH=7qF<{cOji`Q=R}CEux;KMLd`d<|`>MWmWYgj~AB^hTsa2E2Dlrj-Lj(Q14WGcU zaHK_K-TZUeM?+pni1LE`im-FC_J8|cms%mXuflfj`4!_kRG>g*u 7{i*wmG7j~tIPr9z5l7sbA7oqG2C1Wa9t>3ompmEdZulOT9 z7kxNHWf{d2UmQI3$K$yi`pxmK_`>J~yK^|Mo9k1n|JR32&fjnaHXgT$X1A1AF2AJr zceuc)m6SWU{WrJ4!WiQ4YBuvc4^)~pCSBmcNVk!+;1Q2Fx&vR|B%_OF*%=gx#{&y` zlS~K<8X9eWwP )HM^25{I;_OfmLg9R3Gt7^+M*utUADoZrF9vH0h zFJLfVaPT2?KqzuYpX*@60GI)jvpFS5SJ-UVBo^*<7c5LO9v1U7G~MO`a(yu4AoM%1 zJY+#v(!of4EVGRthv|5i@-ZPj8eEkSc=2r#0{8wDQU&7XwM+?p*Er9iZym8mvS0#N za|B#FW^>+)9!dF2u}XK!krbEK@+@`IBS~&)@IbO!YTtq2gCvZ<$q!gpxg!I}i4SGu zxM>zYZr#=;W5zFQ9xS$c129%R8Lt4M-B=1a3&HFEr;HMZpO@ib1oCNkShqBJVAvYR zpp7*$FkJXNGzc_GLiSTeTr*@8;2r6#{!mkft$!@SQFuzh n+y)? z9vs5g`VAQtw)#pWAEUWE5Ih(r4+emT$N;eQ8V>+#cUu|y&1{f2=3A9*34JA6276By zlTqHifilXw41m$y@enmJ5PKbDc=u6t8P~l~jLi+b)rUuPk)u(Zk_KL5+e1Gr&x2ul zzb~60m`D{)BJ_p4kzC5=g=F1M1D}{XGoC@`k_dzV-c7S=s?h*8fzGM`xePhIP0TYS z=kg?=N6|b92m`Spuw0M@K?aOI>W#s)1iE(ueXl5+GnmN3R*f0YRt*w2kTpc}#QX_% z^RS!M9%`e2u|kH6r<@N#MowMg(Lc#bd6`E^y-za?kipWxYmC;r;A!Lq6wP2n@{NOr zP9rjbo@Ychmopa~9vZ%81{eTS=VGoyxPU>5oC1SD(fe)%!ysX7A=EskU?hW$qLuX; zxC%m z_;~O(EP~b=h+(hjJ1_{q{C@ku{1_CQ4OxIu=?*XpU>?NW2SQZ%?1HGkNZJfY4vej} zwSX`d!f(J>z)aZH5G cZIYC2ub;zt34zt1sm;0E}S_|Rlt*n -SU1*>)D}uIur`o|py#gvX%}^@vGVRVPPn9XO`)yFVR3_D;L!$OOBGE@3 z3ie4o%6j!8JLHT%Bl1eUVU8f33e1nB@JL4dh%Z^shrAfAX6R$+aZAzTV4-A|0v6~H z$V_+@oP%ue>~`QJ 8iN18kN4_;ACZLdAQAkD+>DI6U{|DU zJZu0iE`|1u!PUs@$W8*6BjLmKEVw=j2@_o)1&|KX2SNcdVgzIaQb#_7#6Tj+0>}@T z48M2-k#4dx5OM{k!wJ|wNEXyL%R=rTS0$@1 m8Asrx)k%&Hz(r@hJ0c4A~ z62Pr6-oUqBoSo?Tz?1zU(}SpW`I!%Js$8S(I!bt`tIR^f&p<_E21n7!8SpTW+7LON zhBXtES#nkuG)4_&mY9 vZ%D|bxyuTDd7geZ5>Zr@$PF9s@i<#)E5_%UCYNiAlc1#^2Vv-Zpz;9tZR zqQ@Pl*g~JJF#i26+t(lLTRQ9AzArS0i-{@{ 3;-?yrY84Pix@t4}N%3Ll>Gp HnrZh*?D zp3CN-HCn7f@5AVf=$#ELP9mGf+prtdnO{}Oj_1{*$j+Z`xssi8^YqWjO~GgGN)r$> zBGbJOc+`v-aS+{6Z!8S{b{o(9$b ZEG5Xz8?gQf)E<(px@B%bI%x9{6m9+j)1cHil|gjI_fdBk$xOZ zwG*lK4XO>kPC9BEDWiT=NqS3rou 4eJ)TBfcXWdWd^}`1|4Iu!(nX`=qK(+ zgoeI{`rje&jzAm$V(270Vo=!Rk68^Fv{wc@D#$=4e+BDnFw|twj=K eN+Zr3Gjx%_X5`eNUW-gP6rq&@H2zX@IwFeru1fpaRRFat^s^( zt2FvI;3a{n0>3lR0tPYAn^t9k?gBFe)(M SCJFjc z7|-t-BP>XNisl&<&8w|2UzSpNk;5K9`Mro+6MO?eoGl`U(RvR$8G$~pON`bF?EG2l z0q_OOS&WdoA>< =9 z_X7%_BU5>{__Y*!L;CVw_I45biy~t@r!XVzcusY04S;EW-HQ> Jy?QCkxO-O=MZ02O|MK5@-y7J%7iG5vkFvB#BF*9o=D!m~qY8ajZZh z0NU}6gAq@hQ@nc%L<67)FF=L>QU!VeJl}1yS2CvQlY1LY>nNDTPH`+gcn{1FSSdam zV3q)l@7bdTV-uglSYiH#pUDyVTEy7k=%~x!Xt1*XZeism!om}ncXcN+Q^2*AAA@Vb zu0h9yT^9*|_80!Fl>-Dv7CI*!xk^}Zi11*gEFiefd#`ZaBw@FDCJ?rF;3;M_%s${) zeJkc69e6=_X}WL^+)DPq9Xo|l-W1k|B8v!%*Q^jGc!u3@nz6v{ct3W>b?^;FupGJN zx^$Mf=iiHaUWcq=%m~{EJH9ljG@d555m1W0@gfEr#Zzwx)86wvz&ZB)9(s|Y>l>gv z5nV6*r+CFthoNxc4#%DocevU$C~0W&`uCv15e01c2$~%paJ>vDeCYo=4`3g_IH-M} z!|Vz7D9m2t4u#oo+wWl}Jt+NM7=_sHbVBU90sOz>uqI%1 z1OtW;9N5Rt!-0h$xRL-t015C{Nk{-hVO9r01c3Ly@dEFI>1P>W`gqDE<_Np> zmaz2zVdtU3$0LP-Da?-i`uBxX=P`@wpJ)aRnDfs7@rq9t6|eXP=D88;< nS|< z33Hj=;01&cdYX(-@KRPa;icZfJPU k;sT5uzuD`8DW%%*WUS(*XW*P6bAYN6c}A2~J6|n8VQqUNhDm+5m$b&a+t!==rW= zFygr7qwWo9YE3EIb!66SaR#otxb42Q;I&9xQ@CxO{vZKAi1~VFC)dD93t@a=SxZ{0 zD8x3;jH2Y;AluyA$pH@lw*N*ahwb%m6nBL4y#E;v)|= j*N9{#VrZng?tfl1?jxx !ukiRERG4Al@_?bCh$5+&w31Q!ulken5lF?4kH#* zqsfub& A>47x5bjvYzBmF ;TE1R%VX?azo=bG-1@ zSb;hm>(cif67%|z1OD)-dEu=%iGW=Omm(0BD$q?J3J_ppvII|K{Y>C_0AgfjD5JHL z;~Wr?Jo7aPfWR5tUJjgXK)}rNwZgx7OZ=N>1!5VrBL`t2%%M0U@Pohy0)qrz5U4E> z$)F7vf*}Y9rwjZcutH$Iz()e(1O^GbD$rJ-fk0J(iUKhLB?Te`!UTc@d<6^vAAtY? zWX;f(VZ5FoTp&uIv_M&bIDtfgB!Tt KXzi1bhK_ zpbz9po)Fk1kSZ`mV35G`0`UUD0Qk|jU{wHi2`mwKU!a>nBEXY3q5DRN3S261K{Q~v zsJ?arDFSN*E&(tSR74bDbAh)6^0eXs){5GZ%?NeI+VMGokpf=}{3&n`086!q=*UEY zE&^i(<_r8TZ~;K8cDWd>;-Wum3%npONZ =(E!kOP3;4Hbo(r+(|px3&VW z2=o_tM_`J;7Xsf2tP)r+uvK7>z!8D70#^m@2#|iqMLZOc0c|TszPSaofF =pP`V3ELVfhhu`1qKSdCeU7>xj+MfngW#sVgw=u!URGD z0tNg9d;}Z}Rp}zVL3+MRSa=)7q^mEs+)B3Pbc`uB-6vwj1wRlgj+QZi-R3wecH0YL zux%DYt-M%hQ`kb&j>}@HwG|VMmOsH@Yf(x(!C>o9vCR$upuzIAVxAh^FN!5b^u*f& ze~P-mGF&_yJ4AFmtz?NIAHOU{%PC>cX##%%Xs9-C?c!G?Zu*TtIslQ@D2cRo5SS*g z6@bxPFIsUEG1{6EsvRJ(K;QrXBfXG4Jknc1V!SU3j1wTw7GdCn064l{IgD0$4iZ}} z1>O)y5%@-6lfY>KN@_vmIf6YC7}C7XjZ@%df&Ku`*NTNZz7z}bVWe1y@3Kv(@8m7m zI-1QueLG0Z!FR*}ycHw{;8-#FGK+}G_qiB(y1W>9KZ$kMRIIzhV$Tg>droH;7Q60y zG3b)SkUJw5T(UqVG2jltfP)?xCr}Q6c f9mN!zCvZ*}CssJ7zradi9JqDNIQ4{a-V@j=`~$a+_y}$t4 LWCx9k;QY1{E-T(~xRc)BX>L8bZ_w zqN>o|DnwnQy7!1$MAQMIdeGij@R3E?3YdqFx|6hbKT)4kT}9g4fv9BEX&px7N!q=K zs9Lo91EOXS<-}N;_P$9i;XC;$M9@+D8|`03)EL?y?jjNn4S6q!Fx_(yd6Ftu5|xA? z7^1PDmJ(GF@hBaUOS>;o 7S`J?%$6e1Sa|M{kMP`D;j*_1 zFxyQ-m~Dx0Qg4B1W~j5w8uNJjGHtD**jj(l5b<={@QRgzD%sB}aJO&^6Q!?r6-W_S zBJdXg3dEohGB7|X>G^qjWRQHDE3lK >XM{Z}1CE}+U8wBL{S$5Uko zs@zYfr<7<6?O}IF7A{M>iqZbpsdgppUq@7H+8<@o{__UyA4j!gsn$5hM@3StlWJGc zQG8KNXn#>snt02o98SA?5Os`>x#>s8(3K)XiGK-|*%5S5oJ9xCrP?{vRF|XL!jGwT zIn};HM q4eRW=0W>4t(?g5k_SGhIRS6tGEPmOw9o+5qS&)1MIo{XB5F zL|}wK695u>%s@u#Ff3?jt*-_83RDI_dEGV`A;fs(bd*4S0BJ4C>%ds+8ko+2;R4kG z$kasai4aQ?@F4AL0MpjR0NUOK>sZ?pcv~A==(ISj;Ygb#+ECWetpdCQFCou8cp#p@ zErC3LB3-_n7C0twP$16_*&*M47x+=&Yk?U8?+M5vb6B>Cos)I~jRdL)ln@92V3^^N zxKt+vHVLE(Ocod*@SH$Rfnor-fZ5{TofX(DFi&8(KpO!x#{t@qMJ}K$*vniZFhQWR zKy?P~uf d?4Ut(EgHIjP=iXOmneik^)ptC8&3QsRupq0Q7fzJhg6QE9x zR6i>aJs$2Ob$mcyfq4S528hn_0iPfcOhXWWJ_2(Eb~ET4e=rzA$IS&M3T$Pdo$L=c z7nmrpm4SBhh@@mEBl61ME(4H+lmMXsm>{s1L0d?G#7GI&jb-?iLA%4B3a&uhj}@su zUEnK$9|h6`_6r;pI3;jF;HtoFfd>M4OJ!1yDt^Hda2MG3P`=$2xGs>FAhS=tZ5H@R zV1d9i0Wx@S>aGGU1mYO9pN2HX;+~fU(ggC{qde;{PXU&~J}Ali5afWZ0v`)>6o>-A zkxLgPyGWpiKnVaG!K0#`KM_b`&|bGhpU)R)!=QaAu@J_>EP TnFIEq#9#9 O(#pTidV!e0!p8Un8fOcGcra2){cQ&H@ *_T0|BtH*2_632R0O;S>*;v)rL&baigh9J&vWKZp zhl>BX5`d)Jx7jz)Gq1F=&zdEIe3@Y~-|tV~d>K>=$_y#Iz>MKLY9X$gseei%xIH z5=pO)VR>O@;f0VCFdxk-%lzv$SG4hA4s_pN^kM)asnND8Yum@2qcNPROSMIO D51hY3HCA>I!E&|=XEEjthSc*WlPcCwmS;1wsUEqSY6&ZP$*nN8cNoB~-SgW&^Y zB47q?u}6#;B;-tc{4oY0mTBWm`#87cC;TM&2~8wF!LgSS|5?NNM}==o{?Qklccg2X zlC9wVmt-r9mc*m-v}hpaia54P%F#QLYlJ*a&RXz0B3TQwC2Qej$yz8+6L^ue5I}PZ z S)~){A03cD+%XI4u?!~Wy-R 5Xw^`RDK G$_dW92}v=z>19h5mEGX&al`jU204g+l9Z9K8WN)~9u z$xLKyQgRdi6@mVU2F4}>(%zBnVBO#eDj1)kc`C^LV<;nePG@*73v6(j(t?q9hLQlx zce#kH2*6^2!2%69Rf7Idh%=$i@Dv%OuhL8zIModO1X>ATmLKhl5(pOX5(pEZJSsFv z6nI@=zQ8E}uA-s*{2B&rHRUVSHz{2U2_1*Z@Ez;B?eQEivvJD{4ssAYX3I3C)JeFX zyx6;Oi1_#g&R*WbY}^{`i~J(WD+1eg6fX8UDO}t~xY+-SaPcVSVqNI2aPth|<~Wyd z^RL3i?S+ed&oCk-iL(f!9tktAkkq60l6n+!S$KK2@N#`EyzG<5%kN31V2xZLr3fBk zrbg6+a|7#}Kuq2Z&dUm1#7vFV-#P!U(qrN20QsLU{5KHK79P$SNIHq;0D!ZjX~jcu zcGxlDY@gpH_vl+NHgb-pfUhw$GzM&qJcuFSYH;@(lmLMwqXER+Fw{qZw_)y20&8Q+ zkI#H?HWCpE|Bk3NarjAaIMNJWq5w4*-1k#3I41X0-V6T5f&esem}dzj?1Rpw9QUua z@OkL?N8ocT3=lr$0oXiHnGNQX3yTSb6-LpF94} 48?hNM%O>HkCc;-+ zgrOP>BdrtGfvRKHc`6@p9`lDrSeEhv5&h(Rz)Jzb8r_5ob{Rk<0&42Hm^e0{Gl%s3 zaLFJV!Wl&RFE1dH|Ii8p88+5V=H$Ptp^{S6QL_Gi z>ylRV1E&?~>qRBK=vhhPqv1wm7ab*~hwP&4yzHVuutQ;;u7XlTGG2NSAhL^c>%w@& z2+?2|ws}KC$hbcl0wo#==e05{W#knhipF_GlVE_;L>$UCMq<&aLeRd*D7sexc0RPS zn}$J(kc^{L2xMsRACs-|0wUWV6ZkNt88L-OD0L|LyOp5iq4aYaL+R5*oDLGN?k$1p zu@ag7ghSFg)c_)$V7V9U2~5EG#Rp~veE3cNusS>=08D!@JpK%B6uK{<76Zi|IUhCe z|KncdZ#saIRpDf>66nF8i t_}W_ph6zLiDpC45O|nIBf|nF7p}|s>>3?+?x-#g1 z4Cv4*lsC`Ngn^ MTz8_@G8V1cOap# z3h^)o?Q =Z;Ka&>=S -<|(H4!dbl`a?D!JYAjmrbRa|)q}!(q8et)xTzWoOq}`VQ z7#ywH;Lw*T`VHe`IRFOCn{2@7989056v}gjWa`LD0A^?m<0&KBg}L;YETS((%Jh(( zen`N?^pHh># n%LGocjk>%^cPy3jO{ x~kKC6GB)w?mCh1~ra4luS=4SiHUqW_Em?t>=^xnf!~ zd?7U;Xl}NFgu&$4g~cFvDDk%igcR1v$bH`rvJ2XHJ Cp$v#Qhse8 zFDPEDzVpY6G~oyThheUu^?2}q80nK@piYBqcjh9j$5S1NLhhXPZ-hX1`q=Kf3p>$2 zsTue;-Cfg~Az50P6P*}r@i7a$nA-NEtILKrsZ`wGr%+Ud=614AGx!d~yOn6Y6RqB7 z4)#C89IR_(;^pD(bOqpjOv5Y0yZ9V$4ewz#UK!rObi6N&lf9meH-vb7;$^%Zj0YB5 zig$y-kWRNa!ebVjPva?A>Y*~t$cCNQ2+kX2otfo7r4^HlDR)S>pL19OxI?=wz6xe9 zsazHMrtZrGOXlkIjh_#wjfZ!|h;2Xg!_@T$FI>BqrOn58ubw}){f9Zp17EC$Im|u< z|Ao%oYvPi#Si@x_%pkhIue_*JPL=F(o>>iH=k9?Xh(7tCm1LQpuOeCIJHpZ3&;u9y zp|7FOA^OKj=J%e3fW`RBfmrk_j9#P$pi`l9W%q}aM$bBe1WuYmGTR?r30>-DJIH$U zr(bBPX!IricTsetr8Efyz2{1M={>GbLZ$btuY}%%Db;76hY~A|^-xCoq5G7y&5Yy_ z=tKOWO6Ig8u;LK?xc?z0XH&;XA08|nXYZ@t(s3TlNsx}Sy+;5#PN40!c8!dN<>hC) z%|G5M4QmUlm7Mzg#X>NwTsgaEzg`AH#KJ=3j^!$&Sf>v*oVxA8UsC`4u9K1w+$BbA zGa<^%jG5(N{JD*mE8UQJrk>=5u4@{d4nsofZH3XFb%(=vWyHjA6RK~4qy=kZLT8aL zctU3`?n=LO140J=Ld0_M7dqU5IET;=m pM~0;5 zuM-VMn9Ka215dI%)rl^!0yyGb2JN*SEP)viWgmhkz#6YIYk*N`6%_5WLpY?w4dIYx zd9m6N%qUnhp5m!Gn8wZ^nBpFC^iw}8Y-0@s_dqaxBoR*I2M%p&|D6)e3_r)bq~q>E za3TGmnWVw%uJp$N(7SyBm`wZ@ UUhuKdQ}^ !VTvh3Trl`?pGsO0dJH|$@4qgUria9xNyTzhyc0-hD2~nonXEuyi z%
otZcIqA+ z=G3~E1UO+@Vn`Blpsz$Wt^OR@)L88Vt|YmN^e;Yow)}mMUhc=COuYpTBrQ^KC< A@ znhXi$l2%eI;5!}J=G7}A#Jq)^A%j-`QWEl|0 8(>)il4LzjnZX0o)xd z3!UgAEg-QV$$qTF_NHlmTaGPE(>*_$jY>0jPD!>S&FtB<8XW>`dSxSs&4#vXcW11a zNa8hpL?JQ>Gwo#WWLtN+4#DeIVP9IpJB?{}J=XH`9iIbkDZpcaNy_}T84OM^wRv_N zEv4WES+%YsELOOH?)%?9Ps=|A*zQM5U;cYZ`BmME<2i@nPr*KE8^ll4m7Df%J#T)9 zuB<<1bcw-p!+e&TKfl)+i&a5A=Va{qW@Njvw5(N}ot1fL&785XH7)DQ_k7>FzW=x7 zUrrs}@8y )u#K~AFbGX8*Fj0c##l4hr>58v~YM->9Q3n z*J{?TOP}H6r+u;Tr$5hR;CH_*_`BZCXbc$gtIBT3JGbwIT%HTp;3&Fweaxeut UNaa Hu$wV;rpj_!NC~mtN=s-=wUjce zeor%65adn#k *$P zNIHK78{p?$3F;Pobrmh(W+<0W)5&`^dX4$!>WAoE4Q(rHs%H;Ed}(ktegk=o#n#{_ zAPJqBl6(+s z@=kF>VEe*y*@LUV-xHzpI!0zgsPiOxU10~rd`>QwTQi2zDlM*AN>$hfjo^AvRE^9+ zZ#M^nF<=Gn#?qqrsx#wY{NmyVK&3RGKbzt8TMh&OG0E*pNijb%YKZxf*#zbXtlykg z;5?WiSjp*dv%_x(hZ3tXWe}^AW@3Vl(g&B+qw+ z*sRs}x JGHnVIko} zS|h*=9z*LQf{TJi-C*Tz2E28R&1Tbo$Ys{$rtg5Wti;`p_8To$+h*lCkJ$q@3ynC( zuCLqi{BIU(X|rrHspm?{Z1R;vuiOD$*PG(d(yFecg5A->wz%1Ybr 55!m5=J+i+>{Ph?ol~|GpZKU;ulP6S?xSS6K#0&f zgBBb$`DSzct9PET_&_G#UbYe4df2?*&tyTElvY_qYdkk#a_Xj&v`$+^buA#OO2c-q z4SsLN*FXNgW6yzOr_- Jf+G7@31 TN))^sqZT)wG#h~@e3BD-Z);V?Ol}Gfq%)^aRTMK zQv2I0b)u|NmzpYdYpqflN0iF#sSK~rl;Jy689_(!bmuCgR4HXtsH2P;^Oe!KoHCjQ zDx=kx%6Or=GG2x6^u{z4d>__D8CWRWNGXewfVJ5NDq~h fu@m6UPlfHKamR>qaR%DBBw8IS)|hB;C>d=Wn^R9rcV`zc51cFGZVLOE*U zany&ao%9;Yo66DpoN~O>T{${`r5s&XDMvSN<>+@?IfhPGj<<1+(O6VwLM`Q(9<3ao zEI>h tZvFN4;gmfELV>2k>s%QWjsrqchxX@o}T8wKhpjapd?_jB2Z1CY+CXo z0AX-ixPv0=6oIEd0p#fY1$ZZw!SfZN%PN3-%0bD+f}NtlTV gHP~)&nOS`UapV_TO zVF$Rpoc-8BeCpnT`Trk#-x(go(XBZ>Nh6JN&H*Kq1qcvPWH7;C448~D1_z7*8*G!Y z0cT^9!3G 5Q*w$p(1z7q}HB#To6eY)IQobvrB+ZjWuMR{h9t{-jmEZ5%aFm zcKHx%rx1`fCX*1{7PqADkLO?qMW!mXru`?|%XkU)lIAKi=aDetL{U8fNtz)%tTAf- zzFYzNPz@%lnbS2NzOL3xh>;|fS?%cC|Iqz RlFe}Wnu1f zY~^t(-mUArKVMJ+ycm^5YYZQHq@o^tf3(Wt7&-Kti#AeiN2+)S?-mPgynwvkL}m7F zKVi*N8F%%<+^^@f!Nd04EvN9v-uMnI`j8G&PDv6(f24=z99qoXcZc!`2dOMh{uzrO z3S=-2L{PRK)Bbz{Zp2^3tApR#_n-ob1wR$<)qKjydKtUB52D^Ro3#2GWi#_aLz?uJ zx#bjF&QoPE`uF_p33?U<7D(`Wb@skOFbD1`A#l>MN0c+o6{_ndA77{;7?+Dm2id2m3rR!Ou}KFP`6wdCW$kVq=6GLl{w-_G3p%?GcwX&T}N z1y89}mPJ$9qe};V`mk?{NI#=m!>MrZN~_4%KD~DA_gO Kh&$0>Yv}-yJ%?Za96DwoQDq{ zN94 Ih}m_beEc>ZRqNJ2BYmWz&nR8>V!PawE&L z&c?~6`X^`Cywf(wNdx781`DcWdUSm8=vIDsj1*NZ-h@z_pY`3qcrQIZvU;mj_2AG~ zgA!a2Rzzj0dw6(JzgSmvvZadud(msL?iAfo>>uN%#kVUvW5wklRoEw#eL~qMlzoNz z|9XYuG_q?GC`ilz-o?E#WbSroQEE7~gKu!g$gg)l%rB|M0$G8r!85e=(8XIWJgVbG zD|V{{Rjq?DFs1L5pN`*0&J-(W)nIq5RXccx_Zhcf$ECtr0cuBVXgX||HTt0DuY9rU z%(E9}Y&uZUN2=