run update.sh, install netifaces
This commit is contained in:
parent
4b44be97dd
commit
19a695b4d6
83 changed files with 6434 additions and 593 deletions
|
@ -190,187 +190,187 @@ sqlalchemy/util/deprecations.py,sha256=D_LTsfb9jHokJtPEWNDRMJOc372xRGNjputAiTIys
|
||||||
sqlalchemy/util/langhelpers.py,sha256=Nhe3Y9ieK6JaFYejjYosVOjOSSIBT2V385Hu6HGcyZk,41607
|
sqlalchemy/util/langhelpers.py,sha256=Nhe3Y9ieK6JaFYejjYosVOjOSSIBT2V385Hu6HGcyZk,41607
|
||||||
sqlalchemy/util/queue.py,sha256=rs3W0LDhKt7M_dlQEjYpI9KS-bzQmmwN38LE_-RRVvU,6548
|
sqlalchemy/util/queue.py,sha256=rs3W0LDhKt7M_dlQEjYpI9KS-bzQmmwN38LE_-RRVvU,6548
|
||||||
sqlalchemy/util/topological.py,sha256=xKsYjjAat4p8cdqRHKwibLzr6WONbPTC0X8Mqg7jYno,2794
|
sqlalchemy/util/topological.py,sha256=xKsYjjAat4p8cdqRHKwibLzr6WONbPTC0X8Mqg7jYno,2794
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/SQLAlchemy-1.0.12.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
SQLAlchemy-1.0.12.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/constraints.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/profiling.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/runner.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/util/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/properties.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/config.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/ddl.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_select.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/exclusions.cpython-34.pyc,,
|
|
||||||
sqlalchemy/util/__pycache__/topological.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/sqltypes.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/state.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/threadlocal.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/persistence.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/instrumentation.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/crud.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/assertsql.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/exc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/mock.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/result.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/warnings.cpython-34.pyc,,
|
|
||||||
sqlalchemy/event/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/expression.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/unitofwork.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/dynamic.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/functions.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/fixtures.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_types.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/strategies.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/sync.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/serializer.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/naming.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/default.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/processors.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/provision.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/replay_fixture.cpython-34.pyc,,
|
sqlalchemy/testing/__pycache__/replay_fixture.cpython-34.pyc,,
|
||||||
sqlalchemy/dialects/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/url.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/util.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/event/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/identity.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/dml.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/dependency.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/relationships.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/hybrid.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/orderinglist.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/inspection.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/baked.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/events.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/assertions.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/distutils_run.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/plugin/__pycache__/noseplugin.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/mapper.cpython-34.pyc,,
|
|
||||||
sqlalchemy/connectors/__pycache__/mxodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/engines.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/types.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/util.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/strategies.cpython-34.pyc,,
|
sqlalchemy/engine/__pycache__/strategies.cpython-34.pyc,,
|
||||||
sqlalchemy/databases/__pycache__/__init__.cpython-34.pyc,,
|
sqlalchemy/connectors/__pycache__/mxodbc.cpython-34.pyc,,
|
||||||
sqlalchemy/sql/__pycache__/__init__.cpython-34.pyc,,
|
sqlalchemy/ext/__pycache__/hybrid.cpython-34.pyc,,
|
||||||
sqlalchemy/event/__pycache__/registry.cpython-34.pyc,,
|
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-34.pyc,,
|
||||||
sqlalchemy/connectors/__pycache__/zxJDBC.cpython-34.pyc,,
|
sqlalchemy/engine/__pycache__/__init__.cpython-34.pyc,,
|
||||||
sqlalchemy/__pycache__/log.cpython-34.pyc,,
|
sqlalchemy/sql/__pycache__/expression.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/strategy_options.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/relationships.cpython-34.pyc,,
|
||||||
sqlalchemy/testing/__pycache__/schema.cpython-34.pyc,,
|
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-34.pyc,,
|
||||||
sqlalchemy/ext/__pycache__/automap.cpython-34.pyc,,
|
sqlalchemy/testing/__pycache__/fixtures.cpython-34.pyc,,
|
||||||
sqlalchemy/sql/__pycache__/selectable.cpython-34.pyc,,
|
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-34.pyc,,
|
||||||
sqlalchemy/sql/__pycache__/visitors.cpython-34.pyc,,
|
sqlalchemy/testing/__pycache__/assertions.cpython-34.pyc,,
|
||||||
sqlalchemy/engine/__pycache__/interfaces.cpython-34.pyc,,
|
sqlalchemy/util/__pycache__/__init__.cpython-34.pyc,,
|
||||||
sqlalchemy/ext/__pycache__/associationproxy.cpython-34.pyc,,
|
sqlalchemy/testing/suite/__pycache__/test_select.cpython-34.pyc,,
|
||||||
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/unitofwork.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/descriptor_props.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/descriptor_props.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/session.cpython-34.pyc,,
|
sqlalchemy/sql/__pycache__/selectable.cpython-34.pyc,,
|
||||||
sqlalchemy/__pycache__/events.cpython-34.pyc,,
|
sqlalchemy/__pycache__/exc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/interfaces.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-34.pyc,,
|
||||||
|
sqlalchemy/connectors/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/url.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/util.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/serializer.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/dml.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/functions.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/attributes.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/strategy_options.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/elements.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/interfaces.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/interfaces.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/pool.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-34.pyc,,
|
||||||
sqlalchemy/event/__pycache__/attr.cpython-34.pyc,,
|
sqlalchemy/event/__pycache__/attr.cpython-34.pyc,,
|
||||||
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-34.pyc,,
|
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/visitors.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/util.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/inspection.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/events.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/connectors/__pycache__/pyodbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/schema.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/queue.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/sqltypes.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/assertsql.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/session.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/evaluator.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-34.pyc,,
|
||||||
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-34.pyc,,
|
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/compat.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/entities.cpython-34.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/scoping.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/mock.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/annotation.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/processors.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/reflection.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/baked.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/declarative/__pycache__/api.cpython-34.pyc,,
|
||||||
|
sqlalchemy/connectors/__pycache__/zxJDBC.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/events.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/path_registry.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/dynamic.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/default_comparator.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/orderinglist.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/ddl.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/_collections.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/strategies.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/crud.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/profiling.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/mutable.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/threadlocal.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/compiler.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/instrumentation.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/compiler.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/result.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/query.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-34.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/api.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/identity.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/sync.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/deprecations.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/exc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/distutils_run.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/naming.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/topological.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/databases/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/engines.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/associationproxy.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/properties.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/operators.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/warnings.cpython-34.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/type_api.cpython-34.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/langhelpers.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_types.cpython-34.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/automap.cpython-34.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/legacy.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/runner.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-34.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/registry.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_results.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/schema.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/mapper.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/pickleable.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/dependency.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
sqlalchemy/__pycache__/types.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/config.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/noseplugin.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/exclusions.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/schema.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/default.cpython-34.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/util.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/constraints.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/persistence.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-34.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/provision.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/__pycache__/postgres.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/collections.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/collections.cpython-34.pyc,,
|
||||||
sqlalchemy/testing/__pycache__/requirements.cpython-34.pyc,,
|
sqlalchemy/testing/__pycache__/requirements.cpython-34.pyc,,
|
||||||
sqlalchemy/__pycache__/schema.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/loading.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/schema.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/pool.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/connectors/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/mutable.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/oracle/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_results.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/declarative/__pycache__/api.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/operators.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/attributes.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/default_comparator.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/util.cpython-34.pyc,,
|
|
||||||
sqlalchemy/connectors/__pycache__/pyodbc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/util/__pycache__/queue.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/sybase/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/query.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/evaluator.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/scoping.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/__pycache__/postgres.cpython-34.pyc,,
|
|
||||||
sqlalchemy/engine/__pycache__/reflection.cpython-34.pyc,,
|
|
||||||
sqlalchemy/event/__pycache__/legacy.cpython-34.pyc,,
|
|
||||||
sqlalchemy/util/__pycache__/langhelpers.cpython-34.pyc,,
|
|
||||||
sqlalchemy/__pycache__/interfaces.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/compiler.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/exc.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/type_api.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/firebird/__pycache__/base.cpython-34.pyc,,
|
|
||||||
sqlalchemy/orm/__pycache__/instrumentation.cpython-34.pyc,,
|
|
||||||
sqlalchemy/util/__pycache__/_collections.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/util.cpython-34.pyc,,
|
|
||||||
sqlalchemy/sql/__pycache__/elements.cpython-34.pyc,,
|
|
||||||
sqlalchemy/testing/__pycache__/pickleable.cpython-34.pyc,,
|
|
||||||
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
sqlalchemy/ext/declarative/__pycache__/base.cpython-34.pyc,,
|
sqlalchemy/ext/declarative/__pycache__/base.cpython-34.pyc,,
|
||||||
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/base.cpython-34.pyc,,
|
||||||
sqlalchemy/sql/__pycache__/annotation.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/instrumentation.cpython-34.pyc,,
|
||||||
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-34.pyc,,
|
sqlalchemy/__pycache__/log.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/path_registry.cpython-34.pyc,,
|
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-34.pyc,,
|
||||||
sqlalchemy/orm/__pycache__/interfaces.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/loading.cpython-34.pyc,,
|
||||||
sqlalchemy/util/__pycache__/deprecations.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/state.cpython-34.pyc,,
|
||||||
sqlalchemy/ext/__pycache__/compiler.cpython-34.pyc,,
|
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-34.pyc,,
|
||||||
sqlalchemy/util/__pycache__/compat.cpython-34.pyc,,
|
sqlalchemy/dialects/oracle/__pycache__/base.cpython-34.pyc,,
|
||||||
sqlalchemy/event/__pycache__/api.cpython-34.pyc,,
|
sqlalchemy/orm/__pycache__/util.cpython-34.pyc,,
|
||||||
sqlalchemy/testing/__pycache__/entities.cpython-34.pyc,,
|
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/base.cpython-34.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/base.cpython-34.pyc,,
|
||||||
|
|
263
lib/python3.4/site-packages/_markerlib-0.0.0.dist-info/METADATA
Normal file
263
lib/python3.4/site-packages/_markerlib-0.0.0.dist-info/METADATA
Normal file
|
@ -0,0 +1,263 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: setuptools
|
||||||
|
Version: 20.1.1
|
||||||
|
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
||||||
|
Home-page: https://bitbucket.org/pypa/setuptools
|
||||||
|
Author: Python Packaging Authority
|
||||||
|
Author-email: distutils-sig@python.org
|
||||||
|
License: UNKNOWN
|
||||||
|
Keywords: CPAN PyPI distutils eggs package management
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python :: 2.6
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.3
|
||||||
|
Classifier: Programming Language :: Python :: 3.4
|
||||||
|
Classifier: Programming Language :: Python :: 3.5
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Classifier: Topic :: System :: Archiving :: Packaging
|
||||||
|
Classifier: Topic :: System :: Systems Administration
|
||||||
|
Classifier: Topic :: Utilities
|
||||||
|
|
||||||
|
===============================
|
||||||
|
Installing and Using Setuptools
|
||||||
|
===============================
|
||||||
|
|
||||||
|
.. contents:: **Table of Contents**
|
||||||
|
|
||||||
|
|
||||||
|
`Change History <https://pythonhosted.org/setuptools/history.html>`_.
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
Installation Instructions
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The recommended way to bootstrap setuptools on any system is to download
|
||||||
|
`ez_setup.py`_ and run it using the target Python environment. Different
|
||||||
|
operating systems have different recommended techniques to accomplish this
|
||||||
|
basic routine, so below are some examples to get you started.
|
||||||
|
|
||||||
|
Setuptools requires Python 2.6 or later. To install setuptools
|
||||||
|
on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
|
||||||
|
<https://bitbucket.org/pypa/setuptools/raw/bootstrap-py24/ez_setup.py>`_.
|
||||||
|
|
||||||
|
The link provided to ez_setup.py is a bookmark to bootstrap script for the
|
||||||
|
latest known stable release.
|
||||||
|
|
||||||
|
.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
|
||||||
|
|
||||||
|
Windows (Powershell 3 or later)
|
||||||
|
===============================
|
||||||
|
|
||||||
|
For best results, uninstall previous versions FIRST (see `Uninstalling`_).
|
||||||
|
|
||||||
|
Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
|
||||||
|
with PowerShell 3 installed, it's possible to install with one simple
|
||||||
|
Powershell command. Start up Powershell and paste this command::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
|
||||||
|
|
||||||
|
You must start the Powershell with Administrative privileges or you may choose
|
||||||
|
to install a user-local installation::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
|
||||||
|
|
||||||
|
If you have Python 3.3 or later, you can use the ``py`` command to install to
|
||||||
|
different Python versions. For example, to install to Python 3.3 if you have
|
||||||
|
Python 2.7 installed::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
|
||||||
|
|
||||||
|
The recommended way to install setuptools on Windows is to download
|
||||||
|
`ez_setup.py`_ and run it. The script will download the appropriate
|
||||||
|
distribution file and install it for you.
|
||||||
|
|
||||||
|
Once installation is complete, you will find an ``easy_install`` program in
|
||||||
|
your Python ``Scripts`` subdirectory. For simple invocation and best results,
|
||||||
|
add this directory to your ``PATH`` environment variable, if it is not already
|
||||||
|
present. If you did a user-local install, the ``Scripts`` subdirectory is
|
||||||
|
``$env:APPDATA\Python\Scripts``.
|
||||||
|
|
||||||
|
|
||||||
|
Windows (simplified)
|
||||||
|
====================
|
||||||
|
|
||||||
|
For Windows without PowerShell 3 or for installation without a command-line,
|
||||||
|
download `ez_setup.py`_ using your preferred web browser or other technique
|
||||||
|
and "run" that file.
|
||||||
|
|
||||||
|
|
||||||
|
Unix (wget)
|
||||||
|
===========
|
||||||
|
|
||||||
|
Most Linux distributions come with wget.
|
||||||
|
|
||||||
|
Download `ez_setup.py`_ and run it using the target Python version. The script
|
||||||
|
will download the appropriate version and install it for you::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python
|
||||||
|
|
||||||
|
Note that you will may need to invoke the command with superuser privileges to
|
||||||
|
install to the system Python::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
|
||||||
|
|
||||||
|
Alternatively, Setuptools may be installed to a user-local path::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
|
||||||
|
|
||||||
|
Note that on some older systems (noted on Debian 6 and CentOS 5 installations),
|
||||||
|
`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net`
|
||||||
|
does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using
|
||||||
|
`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the
|
||||||
|
host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget`
|
||||||
|
(see `Issue 59 <https://bitbucket.org/pypa/pypi/issue/59#comment-5881915>`_). If you happen to encounter them,
|
||||||
|
install Setuptools as follows::
|
||||||
|
|
||||||
|
> wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
|
||||||
|
> python ez_setup.py --insecure
|
||||||
|
|
||||||
|
|
||||||
|
Unix including Mac OS X (curl)
|
||||||
|
==============================
|
||||||
|
|
||||||
|
If your system has curl installed, follow the ``wget`` instructions but
|
||||||
|
replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
|
||||||
|
|
||||||
|
> curl https://bootstrap.pypa.io/ez_setup.py -o - | python
|
||||||
|
|
||||||
|
|
||||||
|
Advanced Installation
|
||||||
|
=====================
|
||||||
|
|
||||||
|
For more advanced installation options, such as installing to custom
|
||||||
|
locations or prefixes, download and extract the source
|
||||||
|
tarball from `Setuptools on PyPI <https://pypi.python.org/pypi/setuptools>`_
|
||||||
|
and run setup.py with any supported distutils and Setuptools options.
|
||||||
|
For example::
|
||||||
|
|
||||||
|
setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
|
||||||
|
|
||||||
|
Use ``--help`` to get a full options list, but we recommend consulting
|
||||||
|
the `EasyInstall manual`_ for detailed instructions, especially `the section
|
||||||
|
on custom installation locations`_.
|
||||||
|
|
||||||
|
.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
|
||||||
|
.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
|
||||||
|
|
||||||
|
|
||||||
|
Downloads
|
||||||
|
=========
|
||||||
|
|
||||||
|
All setuptools downloads can be found at `the project's home page in the Python
|
||||||
|
Package Index`_. Scroll to the very bottom of the page to find the links.
|
||||||
|
|
||||||
|
.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
|
||||||
|
|
||||||
|
In addition to the PyPI downloads, the development version of ``setuptools``
|
||||||
|
is available from the `Bitbucket repo`_, and in-development versions of the
|
||||||
|
`0.6 branch`_ are available as well.
|
||||||
|
|
||||||
|
.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
|
||||||
|
.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
|
||||||
|
|
||||||
|
Uninstalling
|
||||||
|
============
|
||||||
|
|
||||||
|
On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
|
||||||
|
installer, simply use the uninstall feature of "Add/Remove Programs" in the
|
||||||
|
Control Panel.
|
||||||
|
|
||||||
|
Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
|
||||||
|
version, delete all ``setuptools*`` and ``distribute*`` files and
|
||||||
|
directories from your system's ``site-packages`` directory
|
||||||
|
(and any other ``sys.path`` directories) FIRST.
|
||||||
|
|
||||||
|
If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
|
||||||
|
nothing further needs to be done. If you want to completely remove Setuptools,
|
||||||
|
you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
|
||||||
|
and associated executables installed to the Python scripts directory.
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
Using Setuptools and EasyInstall
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Here are some of the available manuals, tutorials, and other resources for
|
||||||
|
learning about Setuptools, Python Eggs, and EasyInstall:
|
||||||
|
|
||||||
|
* `The EasyInstall user's guide and reference manual`_
|
||||||
|
* `The setuptools Developer's Guide`_
|
||||||
|
* `The pkg_resources API reference`_
|
||||||
|
* `The Internal Structure of Python Eggs`_
|
||||||
|
|
||||||
|
Questions, comments, and bug reports should be directed to the `distutils-sig
|
||||||
|
mailing list`_. If you have written (or know of) any tutorials, documentation,
|
||||||
|
plug-ins, or other resources for setuptools users, please let us know about
|
||||||
|
them there, so this reference list can be updated. If you have working,
|
||||||
|
*tested* patches to correct problems or add features, you may submit them to
|
||||||
|
the `setuptools bug tracker`_.
|
||||||
|
|
||||||
|
.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
|
||||||
|
.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
|
||||||
|
.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
|
||||||
|
.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
|
||||||
|
.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
|
||||||
|
.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
|
||||||
|
|
||||||
|
|
||||||
|
-------
|
||||||
|
Credits
|
||||||
|
-------
|
||||||
|
|
||||||
|
* The original design for the ``.egg`` format and the ``pkg_resources`` API was
|
||||||
|
co-created by Phillip Eby and Bob Ippolito. Bob also implemented the first
|
||||||
|
version of ``pkg_resources``, and supplied the OS X operating system version
|
||||||
|
compatibility algorithm.
|
||||||
|
|
||||||
|
* Ian Bicking implemented many early "creature comfort" features of
|
||||||
|
easy_install, including support for downloading via Sourceforge and
|
||||||
|
Subversion repositories. Ian's comments on the Web-SIG about WSGI
|
||||||
|
application deployment also inspired the concept of "entry points" in eggs,
|
||||||
|
and he has given talks at PyCon and elsewhere to inform and educate the
|
||||||
|
community about eggs and setuptools.
|
||||||
|
|
||||||
|
* Jim Fulton contributed time and effort to build automated tests of various
|
||||||
|
aspects of ``easy_install``, and supplied the doctests for the command-line
|
||||||
|
``.exe`` wrappers on Windows.
|
||||||
|
|
||||||
|
* Phillip J. Eby is the seminal author of setuptools, and
|
||||||
|
first proposed the idea of an importable binary distribution format for
|
||||||
|
Python application plug-ins.
|
||||||
|
|
||||||
|
* Significant parts of the implementation of setuptools were funded by the Open
|
||||||
|
Source Applications Foundation, to provide a plug-in infrastructure for the
|
||||||
|
Chandler PIM application. In addition, many OSAF staffers (such as Mike
|
||||||
|
"Code Bear" Taylor) contributed their time and stress as guinea pigs for the
|
||||||
|
use of eggs and setuptools, even before eggs were "cool". (Thanks, guys!)
|
||||||
|
|
||||||
|
* Tarek Ziadé is the principal author of the Distribute fork, which
|
||||||
|
re-invigorated the community on the project, encouraged renewed innovation,
|
||||||
|
and addressed many defects.
|
||||||
|
|
||||||
|
* Since the merge with Distribute, Jason R. Coombs is the
|
||||||
|
maintainer of setuptools. The project is maintained in coordination with
|
||||||
|
the Python Packaging Authority (PyPA) and the larger Python community.
|
||||||
|
|
||||||
|
.. _files:
|
||||||
|
|
||||||
|
|
||||||
|
---------------
|
||||||
|
Code of Conduct
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Everyone interacting in the setuptools project's codebases, issue trackers,
|
||||||
|
chat rooms, and mailing lists is expected to follow the
|
||||||
|
`PyPA Code of Conduct`_.
|
||||||
|
|
||||||
|
.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/
|
||||||
|
|
||||||
|
|
104
lib/python3.4/site-packages/_markerlib-0.0.0.dist-info/RECORD
Normal file
104
lib/python3.4/site-packages/_markerlib-0.0.0.dist-info/RECORD
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126
|
||||||
|
_markerlib/__init__.py,sha256=GSmhZqvAitLJHhSgtqqusfq2nJ_ClP3oy3Lm0uZLIsU,552
|
||||||
|
_markerlib/markers.py,sha256=YuFp0-osufFIoqnzG3L0Z2fDCx4Vln3VUDeXJ2DA_1I,3979
|
||||||
|
_markerlib-0.0.0.dist-info/DESCRIPTION.rst,sha256=MDsJej8DPV2OKpAKpu74g-2xksRd-uGTeZn4W7D1dnI,9940
|
||||||
|
_markerlib-0.0.0.dist-info/METADATA,sha256=l8LCWR8HLdKmOz1QMU2JQREbM9o4dCsMPkBdBSi_Jgo,10997
|
||||||
|
_markerlib-0.0.0.dist-info/RECORD,,
|
||||||
|
_markerlib-0.0.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
|
_markerlib-0.0.0.dist-info/dependency_links.txt,sha256=oUNXJEArClXFiSSvfFwUKY8TYjeIXhuFfCpXn5K0DCE,226
|
||||||
|
_markerlib-0.0.0.dist-info/entry_points.txt,sha256=S6yRfyEABPIKq4cNMNO_7LHXzFVZW-exLSrKSI6kgNU,2779
|
||||||
|
_markerlib-0.0.0.dist-info/metadata.json,sha256=OwUAZgU-PBMGwfXh2QKg7ec1Kh9aGVfWnOB5mrc48HA,4242
|
||||||
|
_markerlib-0.0.0.dist-info/top_level.txt,sha256=7780fzudMJkykiTcIrAQ8m8Lll6kot3EEePye3VJgEE,49
|
||||||
|
_markerlib-0.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
||||||
|
setuptools/__init__.py,sha256=WEGb6BRGN2dz3eJTbNRUfInUAhb6_OZJyYAndPGJm6w,5440
|
||||||
|
setuptools/archive_util.py,sha256=N30WE5ZQjkytzhAodAXw4FkK-9J5AP1ChrClHnZthOA,6609
|
||||||
|
setuptools/depends.py,sha256=WyJIhjIX7D5-JpGSnMAPHEoDcVPQxaO0405keTQT6jM,6418
|
||||||
|
setuptools/dist.py,sha256=txOleyyt2xCSTkUjCGW4MYZB8a1xsbC8MulDhSnoivQ,35701
|
||||||
|
setuptools/extension.py,sha256=YvsyGHWVWzhNOXMHU239FR14wxw2WwdMLLzWsRP6_IY,1694
|
||||||
|
setuptools/launch.py,sha256=hP3qZxDNu5Hf9C-VAkEP4IC_YYfR1XfxMTj6EguxxCg,730
|
||||||
|
setuptools/lib2to3_ex.py,sha256=6jPF9sJuHiz0cyg4cwIBLl2VMAxcl3GYSZwWAOuJplU,1998
|
||||||
|
setuptools/msvc9_support.py,sha256=fo2vjb-dna1SEuHezQCTuelCo6XFBv5cqaI56ABJ1vw,2187
|
||||||
|
setuptools/package_index.py,sha256=T6tZGPHApup6Gl3kz1sCLtY7kmMUXLBKweSAORYS2Qc,39490
|
||||||
|
setuptools/py26compat.py,sha256=1Vvuf-hj5bTM3OAXv6vgJQImulne12ann053caOgikU,481
|
||||||
|
setuptools/py27compat.py,sha256=CGj-jZcFgHUkrEdLvArkxHj96tAaMbG2-yJtUVU7QVI,306
|
||||||
|
setuptools/py31compat.py,sha256=cqYSVBd2pxvKl75185z40htfEr6EKC29KvSBiSoqHOA,1636
|
||||||
|
setuptools/sandbox.py,sha256=tuMRu_8R0_w6Qer9VqDiOTqKy1qr_GjHi-2QAg7TMz0,14210
|
||||||
|
setuptools/script (dev).tmpl,sha256=f7MR17dTkzaqkCMSVseyOCMVrPVSMdmTQsaB8cZzfuI,201
|
||||||
|
setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138
|
||||||
|
setuptools/site-patch.py,sha256=K-0-cAx36mX_PG-qPZwosG9ZLCliRjquKQ4nHiJvvzg,2389
|
||||||
|
setuptools/ssl_support.py,sha256=tAFeeyFPVle_GgarPkNrdfnCJgP9PyN_QYGXTgypoyc,8119
|
||||||
|
setuptools/unicode_utils.py,sha256=8zVyrL_MFc6P5AmErs21rr7z-3N1pZ_NkOcDC7BPElU,995
|
||||||
|
setuptools/utils.py,sha256=08Z7mt-9mvrx-XvmS5EyKoRn2lxNTlgFsUwBU3Eq9JQ,293
|
||||||
|
setuptools/version.py,sha256=E3F8rAlTgCNpmTTY2YGy4T_1iQn3gKsePB7TVIcObu0,23
|
||||||
|
setuptools/windows_support.py,sha256=5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE,714
|
||||||
|
setuptools/command/__init__.py,sha256=1AM3hv_zCixE7kTXA-onWfK_2KF8GC8fUw3WSxzi5Fg,564
|
||||||
|
setuptools/command/alias.py,sha256=KjpE0sz_SDIHv3fpZcIQK-sCkJz-SrC6Gmug6b9Nkc8,2426
|
||||||
|
setuptools/command/bdist_egg.py,sha256=Km4CsGbevhvej6kKEfvTYxfkPoQijUyXmImNifrO4Tg,17184
|
||||||
|
setuptools/command/bdist_rpm.py,sha256=B7l0TnzCGb-0nLlm6rS00jWLkojASwVmdhW2w5Qz_Ak,1508
|
||||||
|
setuptools/command/bdist_wininst.py,sha256=_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-jW2-pm0,637
|
||||||
|
setuptools/command/build_ext.py,sha256=pkQ8xp3YPVGGLkGv-SvfxC_GqFpboph1AFEoMFOgQMo,11964
|
||||||
|
setuptools/command/build_py.py,sha256=HvJ88JuougDccaowYlfMV12kYtd0GLahg2DR2vQRqL4,7983
|
||||||
|
setuptools/command/develop.py,sha256=VxSYbpM2jQqtRBn5klIjPVBo3sWKNZMlSbHHiRLUlZo,7383
|
||||||
|
setuptools/command/easy_install.py,sha256=WDidYAhIEWCT-63bVvoazy8HcITEWDn4Xzgrj3YZgz0,88492
|
||||||
|
setuptools/command/egg_info.py,sha256=0_8eI8hgLAlGt8Xk5kiodY_d9lxG6_RSescJISKBJgA,16890
|
||||||
|
setuptools/command/install.py,sha256=QwaFiZRU3ytIHoPh8uJ9EqV3Fu9C4ca4B7UGAo95tws,4685
|
||||||
|
setuptools/command/install_egg_info.py,sha256=fEqU1EplTs_vUjAzwiEB7LrtdZBQ3BefwuUZLZBDEQ0,5027
|
||||||
|
setuptools/command/install_lib.py,sha256=5IZM251t4DzOdZAXCezdROr3X0SeeE41eyV059RNgZ4,5011
|
||||||
|
setuptools/command/install_scripts.py,sha256=vX2JC6v7l090N7CrTfihWBklNbPvfNKAY2LRtukM9XE,2231
|
||||||
|
setuptools/command/register.py,sha256=bHlMm1qmBbSdahTOT8w6UhA-EgeQIz7p6cD-qOauaiI,270
|
||||||
|
setuptools/command/rotate.py,sha256=QGZS2t4CmBl7t79KQijNCjRMU50lu3nRhu4FXWB5LIE,2038
|
||||||
|
setuptools/command/saveopts.py,sha256=za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4,658
|
||||||
|
setuptools/command/sdist.py,sha256=kQetnPMw6ao3nurWGJZgS4HkOH4AknzMOSvqbVA6jGA,7050
|
||||||
|
setuptools/command/setopt.py,sha256=cygJaJWJmiVhR0e_Uh_0_fWyCxMJIqK-Bu6K0LyYUtU,5086
|
||||||
|
setuptools/command/test.py,sha256=N2f5RwxkjwU3YQzFYHtzHr636-pdX9XJDuPg5Y92kSo,6888
|
||||||
|
setuptools/command/upload.py,sha256=OjAryq4ZoARZiaTN_MpuG1X8Pu9CJNCKmmbMg-gab5I,649
|
||||||
|
setuptools/command/upload_docs.py,sha256=htXpASci5gKP0RIrGZRRmbll7RnTRuwvKWZkYsBlDMM,6815
|
||||||
|
setuptools/extern/__init__.py,sha256=mTrrj4yLMdFeEwwnqKnSuvZM5RM-HPZ1iXLgaYDlB9o,132
|
||||||
|
../../../bin/easy_install,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
||||||
|
../../../bin/easy_install-3.4,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
||||||
|
_markerlib-0.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
setuptools/extern/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/bdist_wininst.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_egg_info.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/egg_info.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/sdist.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/launch.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/version.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/site-patch.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/saveopts.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/easy_install.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/rotate.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/build_ext.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/utils.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/windows_support.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/py26compat.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/extension.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/msvc9_support.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/py27compat.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/upload_docs.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_scripts.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/build_py.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/sandbox.cpython-34.pyc,,
|
||||||
|
_markerlib/__pycache__/markers.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/py31compat.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/alias.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/setopt.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/dist.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/depends.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/ssl_support.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/register.cpython-34.pyc,,
|
||||||
|
_markerlib/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/unicode_utils.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_lib.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/bdist_rpm.cpython-34.pyc,,
|
||||||
|
__pycache__/easy_install.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/upload.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/lib2to3_ex.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/bdist_egg.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/test.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/archive_util.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/package_index.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/develop.cpython-34.pyc,,
|
|
@ -1,5 +1,5 @@
|
||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: bdist_wheel (0.26.0)
|
Generator: bdist_wheel (0.29.0)
|
||||||
Root-Is-Purelib: true
|
Root-Is-Purelib: true
|
||||||
Tag: py2-none-any
|
Tag: py2-none-any
|
||||||
Tag: py3-none-any
|
Tag: py3-none-any
|
|
@ -0,0 +1,61 @@
|
||||||
|
[console_scripts]
|
||||||
|
easy_install = setuptools.command.easy_install:main
|
||||||
|
|
||||||
|
[distutils.commands]
|
||||||
|
alias = setuptools.command.alias:alias
|
||||||
|
bdist_egg = setuptools.command.bdist_egg:bdist_egg
|
||||||
|
bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
|
||||||
|
bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
|
||||||
|
build_ext = setuptools.command.build_ext:build_ext
|
||||||
|
build_py = setuptools.command.build_py:build_py
|
||||||
|
develop = setuptools.command.develop:develop
|
||||||
|
easy_install = setuptools.command.easy_install:easy_install
|
||||||
|
egg_info = setuptools.command.egg_info:egg_info
|
||||||
|
install = setuptools.command.install:install
|
||||||
|
install_egg_info = setuptools.command.install_egg_info:install_egg_info
|
||||||
|
install_lib = setuptools.command.install_lib:install_lib
|
||||||
|
install_scripts = setuptools.command.install_scripts:install_scripts
|
||||||
|
register = setuptools.command.register:register
|
||||||
|
rotate = setuptools.command.rotate:rotate
|
||||||
|
saveopts = setuptools.command.saveopts:saveopts
|
||||||
|
sdist = setuptools.command.sdist:sdist
|
||||||
|
setopt = setuptools.command.setopt:setopt
|
||||||
|
test = setuptools.command.test:test
|
||||||
|
upload = setuptools.command.upload:upload
|
||||||
|
upload_docs = setuptools.command.upload_docs:upload_docs
|
||||||
|
|
||||||
|
[distutils.setup_keywords]
|
||||||
|
convert_2to3_doctests = setuptools.dist:assert_string_list
|
||||||
|
dependency_links = setuptools.dist:assert_string_list
|
||||||
|
eager_resources = setuptools.dist:assert_string_list
|
||||||
|
entry_points = setuptools.dist:check_entry_points
|
||||||
|
exclude_package_data = setuptools.dist:check_package_data
|
||||||
|
extras_require = setuptools.dist:check_extras
|
||||||
|
include_package_data = setuptools.dist:assert_bool
|
||||||
|
install_requires = setuptools.dist:check_requirements
|
||||||
|
namespace_packages = setuptools.dist:check_nsp
|
||||||
|
package_data = setuptools.dist:check_package_data
|
||||||
|
packages = setuptools.dist:check_packages
|
||||||
|
setup_requires = setuptools.dist:check_requirements
|
||||||
|
test_loader = setuptools.dist:check_importable
|
||||||
|
test_runner = setuptools.dist:check_importable
|
||||||
|
test_suite = setuptools.dist:check_test_suite
|
||||||
|
tests_require = setuptools.dist:check_requirements
|
||||||
|
use_2to3 = setuptools.dist:assert_bool
|
||||||
|
use_2to3_exclude_fixers = setuptools.dist:assert_string_list
|
||||||
|
use_2to3_fixers = setuptools.dist:assert_string_list
|
||||||
|
zip_safe = setuptools.dist:assert_bool
|
||||||
|
|
||||||
|
[egg_info.writers]
|
||||||
|
PKG-INFO = setuptools.command.egg_info:write_pkg_info
|
||||||
|
dependency_links.txt = setuptools.command.egg_info:overwrite_arg
|
||||||
|
depends.txt = setuptools.command.egg_info:warn_depends_obsolete
|
||||||
|
eager_resources.txt = setuptools.command.egg_info:overwrite_arg
|
||||||
|
entry_points.txt = setuptools.command.egg_info:write_entries
|
||||||
|
namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
|
||||||
|
requires.txt = setuptools.command.egg_info:write_requirements
|
||||||
|
top_level.txt = setuptools.command.egg_info:write_toplevel_names
|
||||||
|
|
||||||
|
[setuptools.installation]
|
||||||
|
eggsecutable = setuptools.command.easy_install:bootstrap
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main"}}, "python.details": {"contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/pypa/setuptools"}}, "python.exports": {"console_scripts": {"easy_install": "setuptools.command.easy_install:main"}, "distutils.commands": {"alias": "setuptools.command.alias:alias", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "build_ext": "setuptools.command.build_ext:build_ext", "build_py": "setuptools.command.build_py:build_py", "develop": "setuptools.command.develop:develop", "easy_install": "setuptools.command.easy_install:easy_install", "egg_info": "setuptools.command.egg_info:egg_info", "install": "setuptools.command.install:install", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "install_lib": "setuptools.command.install_lib:install_lib", "install_scripts": "setuptools.command.install_scripts:install_scripts", "register": "setuptools.command.register:register", "rotate": "setuptools.command.rotate:rotate", "saveopts": "setuptools.command.saveopts:saveopts", "sdist": "setuptools.command.sdist:sdist", "setopt": "setuptools.command.setopt:setopt", "test": "setuptools.command.test:test", "upload": "setuptools.command.upload:upload", "upload_docs": "setuptools.command.upload_docs:upload_docs"}, "distutils.setup_keywords": {"convert_2to3_doctests": "setuptools.dist:assert_string_list", "dependency_links": "setuptools.dist:assert_string_list", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "exclude_package_data": "setuptools.dist:check_package_data", "extras_require": "setuptools.dist:check_extras", "include_package_data": "setuptools.dist:assert_bool", "install_requires": "setuptools.dist:check_requirements", "namespace_packages": "setuptools.dist:check_nsp", "package_data": "setuptools.dist:check_package_data", "packages": "setuptools.dist:check_packages", "setup_requires": "setuptools.dist:check_requirements", "test_loader": "setuptools.dist:check_importable", "test_runner": "setuptools.dist:check_importable", "test_suite": "setuptools.dist:check_test_suite", "tests_require": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool"}, "egg_info.writers": {"PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "requires.txt": "setuptools.command.egg_info:write_requirements", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "metadata_version": "2.0", "name": "setuptools", "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "version": "20.1.1"}
|
|
@ -10,8 +10,8 @@ ed25519-1.4.dist-info/RECORD,,
|
||||||
ed25519-1.4.dist-info/WHEEL,sha256=HslHw5cSLCuyOLxj8duGAooHNvXnupcmoBU1NzRPr2w,104
|
ed25519-1.4.dist-info/WHEEL,sha256=HslHw5cSLCuyOLxj8duGAooHNvXnupcmoBU1NzRPr2w,104
|
||||||
ed25519-1.4.dist-info/metadata.json,sha256=LyRoPQ8zyOxjJH1CoRteHtukVr0HLA_z_rRyigiJl5c,802
|
ed25519-1.4.dist-info/metadata.json,sha256=LyRoPQ8zyOxjJH1CoRteHtukVr0HLA_z_rRyigiJl5c,802
|
||||||
ed25519-1.4.dist-info/top_level.txt,sha256=U3-N9ZJMBO9MUuZLwoiMbsWSkxsd0TfkNSuzO6O_gYY,8
|
ed25519-1.4.dist-info/top_level.txt,sha256=U3-N9ZJMBO9MUuZLwoiMbsWSkxsd0TfkNSuzO6O_gYY,8
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/ed25519-1.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
ed25519-1.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
ed25519/__pycache__/test_ed25519.cpython-34.pyc,,
|
ed25519/__pycache__/test_ed25519.cpython-34.pyc,,
|
||||||
ed25519/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
ed25519/__pycache__/keys.cpython-34.pyc,,
|
ed25519/__pycache__/keys.cpython-34.pyc,,
|
||||||
ed25519/__pycache__/_version.cpython-34.pyc,,
|
ed25519/__pycache__/_version.cpython-34.pyc,,
|
||||||
|
ed25519/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
|
|
@ -0,0 +1,196 @@
|
||||||
|
netifaces 0.10.4
|
||||||
|
================
|
||||||
|
|
||||||
|
.. image:: https://drone.io/bitbucket.org/al45tair/netifaces/status.png
|
||||||
|
:target: https://drone.io/bitbucket.org/al45tair/netifaces/latest
|
||||||
|
:alt: Build Status
|
||||||
|
|
||||||
|
1. What is this?
|
||||||
|
----------------
|
||||||
|
|
||||||
|
It's been annoying me for some time that there's no easy way to get the
|
||||||
|
address(es) of the machine's network interfaces from Python. There is
|
||||||
|
a good reason for this difficulty, which is that it is virtually impossible
|
||||||
|
to do so in a portable manner. However, it seems to me that there should
|
||||||
|
be a package you can easy_install that will take care of working out the
|
||||||
|
details of doing so on the machine you're using, then you can get on with
|
||||||
|
writing Python code without concerning yourself with the nitty gritty of
|
||||||
|
system-dependent low-level networking APIs.
|
||||||
|
|
||||||
|
This package attempts to solve that problem.
|
||||||
|
|
||||||
|
2. How do I use it?
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
First you need to install it, which you can do by typing::
|
||||||
|
|
||||||
|
tar xvzf netifaces-0.10.4.tar.gz
|
||||||
|
cd netifaces-0.10.4
|
||||||
|
python setup.py install
|
||||||
|
|
||||||
|
Once that's done, you'll need to start Python and do something like the
|
||||||
|
following::
|
||||||
|
|
||||||
|
>>> import netifaces
|
||||||
|
|
||||||
|
Then if you enter
|
||||||
|
|
||||||
|
>>> netifaces.interfaces()
|
||||||
|
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']
|
||||||
|
|
||||||
|
you'll see the list of interface identifiers for your machine.
|
||||||
|
|
||||||
|
You can ask for the addresses of a particular interface by doing
|
||||||
|
|
||||||
|
>>> netifaces.ifaddresses('lo0')
|
||||||
|
{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]}
|
||||||
|
|
||||||
|
Hmmmm. That result looks a bit cryptic; let's break it apart and explain
|
||||||
|
what each piece means. It returned a dictionary, so let's look there first::
|
||||||
|
|
||||||
|
{ 18: [...], 2: [...], 30: [...] }
|
||||||
|
|
||||||
|
Each of the numbers refers to a particular address family. In this case, we
|
||||||
|
have three address families listed; on my system, 18 is ``AF_LINK`` (which means
|
||||||
|
the link layer interface, e.g. Ethernet), 2 is ``AF_INET`` (normal Internet
|
||||||
|
addresses), and 30 is ``AF_INET6`` (IPv6).
|
||||||
|
|
||||||
|
But wait! Don't use these numbers in your code. The numeric values here are
|
||||||
|
system dependent; fortunately, I thought of that when writing netifaces, so
|
||||||
|
the module declares a range of values that you might need. e.g.
|
||||||
|
|
||||||
|
>>> netifaces.AF_LINK
|
||||||
|
18
|
||||||
|
|
||||||
|
Again, on your system, the number may be different.
|
||||||
|
|
||||||
|
So, what we've established is that the dictionary that's returned has one
|
||||||
|
entry for each address family for which this interface has an address. Let's
|
||||||
|
take a look at the ``AF_INET`` addresses now:
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('lo0')
|
||||||
|
>>> addrs[netifaces.AF_INET]
|
||||||
|
[{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}]
|
||||||
|
|
||||||
|
You might be wondering why this value is a list. The reason is that it's
|
||||||
|
possible for an interface to have more than one address, even within the
|
||||||
|
same family. I'll say that again: *you can have more than one address of
|
||||||
|
the same type associated with each interface*.
|
||||||
|
|
||||||
|
*Asking for "the" address of a particular interface doesn't make sense.*
|
||||||
|
|
||||||
|
Right, so, we can see that this particular interface only has one address,
|
||||||
|
and, because it's a loopback interface, it's point-to-point and therefore
|
||||||
|
has a *peer* address rather than a broadcast address.
|
||||||
|
|
||||||
|
Let's look at a more interesting interface.
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('en0')
|
||||||
|
>>> addrs[netifaces.AF_INET]
|
||||||
|
[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]
|
||||||
|
|
||||||
|
This interface has two addresses (see, I told you...) Both of them are
|
||||||
|
regular IPv4 addresses, although in one case the netmask has been changed
|
||||||
|
from its default. The netmask *may not* appear on your system if it's set
|
||||||
|
to the default for the address range.
|
||||||
|
|
||||||
|
Because this interface isn't point-to-point, it also has broadcast addresses.
|
||||||
|
|
||||||
|
Now, say we want, instead of the IP addresses, to get the MAC address; that
|
||||||
|
is, the hardware address of the Ethernet adapter running this interface. We
|
||||||
|
can do
|
||||||
|
|
||||||
|
>>> addrs[netifaces.AF_LINK]
|
||||||
|
[{'addr': '00:12:34:56:78:9a'}]
|
||||||
|
|
||||||
|
Note that this may not be available on platforms without getifaddrs(), unless
|
||||||
|
they happen to implement ``SIOCGIFHWADDR``. Note also that you just get the
|
||||||
|
address; it's unlikely that you'll see anything else with an ``AF_LINK`` address.
|
||||||
|
Oh, and don't assume that all ``AF_LINK`` addresses are Ethernet; you might, for
|
||||||
|
instance, be on a Mac, in which case:
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('fw0')
|
||||||
|
>>> addrs[netifaces.AF_LINK]
|
||||||
|
[{'addr': '00:12:34:56:78:9a:bc:de'}]
|
||||||
|
|
||||||
|
No, that isn't an exceptionally long Ethernet MAC address---it's a FireWire
|
||||||
|
address.
|
||||||
|
|
||||||
|
As of version 0.10.0, you can also obtain a list of gateways on your
|
||||||
|
machine:
|
||||||
|
|
||||||
|
>>> netifaces.gateways()
|
||||||
|
{2: [('10.0.1.1', 'en0', True), ('10.2.1.1', 'en1', False)], 30: [('fe80::1', 'en0', True)], 'default': { 2: ('10.0.1.1', 'en0'), 30: ('fe80::1', 'en0') }}
|
||||||
|
|
||||||
|
This dictionary is keyed on address family---in this case, ``AF_INET``---and
|
||||||
|
each entry is a list of gateways as ``(address, interface, is_default)`` tuples.
|
||||||
|
Notice that here we have two separate gateways for IPv4 (``AF_INET``); some
|
||||||
|
operating systems support configurations like this and can either route packets
|
||||||
|
based on their source, or based on administratively configured routing tables.
|
||||||
|
|
||||||
|
For convenience, we also allow you to index the dictionary with the special
|
||||||
|
value ``'default'``, which returns a dictionary mapping address families to the
|
||||||
|
default gateway in each case. Thus you can get the default IPv4 gateway with
|
||||||
|
|
||||||
|
>>> gws = netifaces.gateways()
|
||||||
|
>>> gws['default'][netifaces.AF_INET]
|
||||||
|
('10.0.1.1', 'en0')
|
||||||
|
|
||||||
|
Do note that there may be no default gateway for any given address family;
|
||||||
|
this is currently very common for IPv6 and much less common for IPv4 but it
|
||||||
|
can happen even for ``AF_INET``.
|
||||||
|
|
||||||
|
BTW, if you're trying to configure your machine to have multiple gateways for
|
||||||
|
the same address family, it's a very good idea to check the documentation for
|
||||||
|
your operating system *very* carefully, as some systems become extremely
|
||||||
|
confused or route packets in a non-obvious manner.
|
||||||
|
|
||||||
|
I'm very interested in hearing from anyone (on any platform) for whom the
|
||||||
|
``gateways()`` method doesn't produce the expected results. It's quite
|
||||||
|
complicated extracting this information from the operating system (whichever
|
||||||
|
operating system we're talking about), and so I expect there's at least one
|
||||||
|
system out there where this just won't work.
|
||||||
|
|
||||||
|
3. This is great! What platforms does it work on?
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
It gets regular testing on OS X, Linux and Windows. It has also been used
|
||||||
|
successfully on Solaris, and it's expected to work properly on other UNIX-like
|
||||||
|
systems as well. If you are running something that is not supported, and
|
||||||
|
wish to contribute a patch, please use BitBucket to send a pull request.
|
||||||
|
|
||||||
|
4. What license is this under?
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
It's an MIT-style license. Here goes:
|
||||||
|
|
||||||
|
Copyright (c) 2007-2014 Alastair Houghton
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
5. Why the jump to 0.10.0?
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Because someone released a fork of netifaces with the version 0.9.0.
|
||||||
|
Hopefully skipping the version number should remove any confusion. In
|
||||||
|
addition starting with 0.10.0 Python 3 is now supported and other
|
||||||
|
features/bugfixes have been included as well. See the CHANGELOG for a
|
||||||
|
more complete list of changes.
|
||||||
|
|
||||||
|
|
216
lib/python3.4/site-packages/netifaces-0.10.4.dist-info/METADATA
Normal file
216
lib/python3.4/site-packages/netifaces-0.10.4.dist-info/METADATA
Normal file
|
@ -0,0 +1,216 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: netifaces
|
||||||
|
Version: 0.10.4
|
||||||
|
Summary: Portable network interface information.
|
||||||
|
Home-page: https://bitbucket.org/al45tair/netifaces
|
||||||
|
Author: Alastair Houghton
|
||||||
|
Author-email: alastair@alastairs-place.net
|
||||||
|
License: MIT License
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 4 - Beta
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Topic :: System :: Networking
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.5
|
||||||
|
Classifier: Programming Language :: Python :: 2.6
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
|
||||||
|
netifaces 0.10.4
|
||||||
|
================
|
||||||
|
|
||||||
|
.. image:: https://drone.io/bitbucket.org/al45tair/netifaces/status.png
|
||||||
|
:target: https://drone.io/bitbucket.org/al45tair/netifaces/latest
|
||||||
|
:alt: Build Status
|
||||||
|
|
||||||
|
1. What is this?
|
||||||
|
----------------
|
||||||
|
|
||||||
|
It's been annoying me for some time that there's no easy way to get the
|
||||||
|
address(es) of the machine's network interfaces from Python. There is
|
||||||
|
a good reason for this difficulty, which is that it is virtually impossible
|
||||||
|
to do so in a portable manner. However, it seems to me that there should
|
||||||
|
be a package you can easy_install that will take care of working out the
|
||||||
|
details of doing so on the machine you're using, then you can get on with
|
||||||
|
writing Python code without concerning yourself with the nitty gritty of
|
||||||
|
system-dependent low-level networking APIs.
|
||||||
|
|
||||||
|
This package attempts to solve that problem.
|
||||||
|
|
||||||
|
2. How do I use it?
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
First you need to install it, which you can do by typing::
|
||||||
|
|
||||||
|
tar xvzf netifaces-0.10.4.tar.gz
|
||||||
|
cd netifaces-0.10.4
|
||||||
|
python setup.py install
|
||||||
|
|
||||||
|
Once that's done, you'll need to start Python and do something like the
|
||||||
|
following::
|
||||||
|
|
||||||
|
>>> import netifaces
|
||||||
|
|
||||||
|
Then if you enter
|
||||||
|
|
||||||
|
>>> netifaces.interfaces()
|
||||||
|
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']
|
||||||
|
|
||||||
|
you'll see the list of interface identifiers for your machine.
|
||||||
|
|
||||||
|
You can ask for the addresses of a particular interface by doing
|
||||||
|
|
||||||
|
>>> netifaces.ifaddresses('lo0')
|
||||||
|
{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]}
|
||||||
|
|
||||||
|
Hmmmm. That result looks a bit cryptic; let's break it apart and explain
|
||||||
|
what each piece means. It returned a dictionary, so let's look there first::
|
||||||
|
|
||||||
|
{ 18: [...], 2: [...], 30: [...] }
|
||||||
|
|
||||||
|
Each of the numbers refers to a particular address family. In this case, we
|
||||||
|
have three address families listed; on my system, 18 is ``AF_LINK`` (which means
|
||||||
|
the link layer interface, e.g. Ethernet), 2 is ``AF_INET`` (normal Internet
|
||||||
|
addresses), and 30 is ``AF_INET6`` (IPv6).
|
||||||
|
|
||||||
|
But wait! Don't use these numbers in your code. The numeric values here are
|
||||||
|
system dependent; fortunately, I thought of that when writing netifaces, so
|
||||||
|
the module declares a range of values that you might need. e.g.
|
||||||
|
|
||||||
|
>>> netifaces.AF_LINK
|
||||||
|
18
|
||||||
|
|
||||||
|
Again, on your system, the number may be different.
|
||||||
|
|
||||||
|
So, what we've established is that the dictionary that's returned has one
|
||||||
|
entry for each address family for which this interface has an address. Let's
|
||||||
|
take a look at the ``AF_INET`` addresses now:
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('lo0')
|
||||||
|
>>> addrs[netifaces.AF_INET]
|
||||||
|
[{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}]
|
||||||
|
|
||||||
|
You might be wondering why this value is a list. The reason is that it's
|
||||||
|
possible for an interface to have more than one address, even within the
|
||||||
|
same family. I'll say that again: *you can have more than one address of
|
||||||
|
the same type associated with each interface*.
|
||||||
|
|
||||||
|
*Asking for "the" address of a particular interface doesn't make sense.*
|
||||||
|
|
||||||
|
Right, so, we can see that this particular interface only has one address,
|
||||||
|
and, because it's a loopback interface, it's point-to-point and therefore
|
||||||
|
has a *peer* address rather than a broadcast address.
|
||||||
|
|
||||||
|
Let's look at a more interesting interface.
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('en0')
|
||||||
|
>>> addrs[netifaces.AF_INET]
|
||||||
|
[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]
|
||||||
|
|
||||||
|
This interface has two addresses (see, I told you...) Both of them are
|
||||||
|
regular IPv4 addresses, although in one case the netmask has been changed
|
||||||
|
from its default. The netmask *may not* appear on your system if it's set
|
||||||
|
to the default for the address range.
|
||||||
|
|
||||||
|
Because this interface isn't point-to-point, it also has broadcast addresses.
|
||||||
|
|
||||||
|
Now, say we want, instead of the IP addresses, to get the MAC address; that
|
||||||
|
is, the hardware address of the Ethernet adapter running this interface. We
|
||||||
|
can do
|
||||||
|
|
||||||
|
>>> addrs[netifaces.AF_LINK]
|
||||||
|
[{'addr': '00:12:34:56:78:9a'}]
|
||||||
|
|
||||||
|
Note that this may not be available on platforms without getifaddrs(), unless
|
||||||
|
they happen to implement ``SIOCGIFHWADDR``. Note also that you just get the
|
||||||
|
address; it's unlikely that you'll see anything else with an ``AF_LINK`` address.
|
||||||
|
Oh, and don't assume that all ``AF_LINK`` addresses are Ethernet; you might, for
|
||||||
|
instance, be on a Mac, in which case:
|
||||||
|
|
||||||
|
>>> addrs = netifaces.ifaddresses('fw0')
|
||||||
|
>>> addrs[netifaces.AF_LINK]
|
||||||
|
[{'addr': '00:12:34:56:78:9a:bc:de'}]
|
||||||
|
|
||||||
|
No, that isn't an exceptionally long Ethernet MAC address---it's a FireWire
|
||||||
|
address.
|
||||||
|
|
||||||
|
As of version 0.10.0, you can also obtain a list of gateways on your
|
||||||
|
machine:
|
||||||
|
|
||||||
|
>>> netifaces.gateways()
|
||||||
|
{2: [('10.0.1.1', 'en0', True), ('10.2.1.1', 'en1', False)], 30: [('fe80::1', 'en0', True)], 'default': { 2: ('10.0.1.1', 'en0'), 30: ('fe80::1', 'en0') }}
|
||||||
|
|
||||||
|
This dictionary is keyed on address family---in this case, ``AF_INET``---and
|
||||||
|
each entry is a list of gateways as ``(address, interface, is_default)`` tuples.
|
||||||
|
Notice that here we have two separate gateways for IPv4 (``AF_INET``); some
|
||||||
|
operating systems support configurations like this and can either route packets
|
||||||
|
based on their source, or based on administratively configured routing tables.
|
||||||
|
|
||||||
|
For convenience, we also allow you to index the dictionary with the special
|
||||||
|
value ``'default'``, which returns a dictionary mapping address families to the
|
||||||
|
default gateway in each case. Thus you can get the default IPv4 gateway with
|
||||||
|
|
||||||
|
>>> gws = netifaces.gateways()
|
||||||
|
>>> gws['default'][netifaces.AF_INET]
|
||||||
|
('10.0.1.1', 'en0')
|
||||||
|
|
||||||
|
Do note that there may be no default gateway for any given address family;
|
||||||
|
this is currently very common for IPv6 and much less common for IPv4 but it
|
||||||
|
can happen even for ``AF_INET``.
|
||||||
|
|
||||||
|
BTW, if you're trying to configure your machine to have multiple gateways for
|
||||||
|
the same address family, it's a very good idea to check the documentation for
|
||||||
|
your operating system *very* carefully, as some systems become extremely
|
||||||
|
confused or route packets in a non-obvious manner.
|
||||||
|
|
||||||
|
I'm very interested in hearing from anyone (on any platform) for whom the
|
||||||
|
``gateways()`` method doesn't produce the expected results. It's quite
|
||||||
|
complicated extracting this information from the operating system (whichever
|
||||||
|
operating system we're talking about), and so I expect there's at least one
|
||||||
|
system out there where this just won't work.
|
||||||
|
|
||||||
|
3. This is great! What platforms does it work on?
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
It gets regular testing on OS X, Linux and Windows. It has also been used
|
||||||
|
successfully on Solaris, and it's expected to work properly on other UNIX-like
|
||||||
|
systems as well. If you are running something that is not supported, and
|
||||||
|
wish to contribute a patch, please use BitBucket to send a pull request.
|
||||||
|
|
||||||
|
4. What license is this under?
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
It's an MIT-style license. Here goes:
|
||||||
|
|
||||||
|
Copyright (c) 2007-2014 Alastair Houghton
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
5. Why the jump to 0.10.0?
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Because someone released a fork of netifaces with the version 0.9.0.
|
||||||
|
Hopefully skipping the version number should remove any confusion. In
|
||||||
|
addition starting with 0.10.0 Python 3 is now supported and other
|
||||||
|
features/bugfixes have been included as well. See the CHANGELOG for a
|
||||||
|
more complete list of changes.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
netifaces.cpython-34m.so,sha256=EeBiWGLxMMMKQaD6B1EoqpC_NIiyqj5dW8sxPOffQNY,61520
|
||||||
|
netifaces-0.10.4.dist-info/DESCRIPTION.rst,sha256=EyJf6yFbUVkw5TpZ0M61ZeVbtCZdHYAqSdfTXT4lo6w,8397
|
||||||
|
netifaces-0.10.4.dist-info/METADATA,sha256=nrFMGFClFWGJIsVo8nC9bLS6iermD9vl6cCQS56eG50,9130
|
||||||
|
netifaces-0.10.4.dist-info/RECORD,,
|
||||||
|
netifaces-0.10.4.dist-info/WHEEL,sha256=HslHw5cSLCuyOLxj8duGAooHNvXnupcmoBU1NzRPr2w,104
|
||||||
|
netifaces-0.10.4.dist-info/metadata.json,sha256=FHsfPfcnSFKu412WegZiPVzBB-sHxrG_wCDSiaB6SHQ,846
|
||||||
|
netifaces-0.10.4.dist-info/top_level.txt,sha256=PqMTaIuWtSjkdQHX6lH1Lmpv2aqBUYAGqATB8z3A6TQ,10
|
||||||
|
netifaces-0.10.4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
||||||
|
netifaces-0.10.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
@ -0,0 +1,5 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp34-cp34m-linux_x86_64
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: System :: Networking", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3"], "extensions": {"python.details": {"contacts": [{"email": "alastair@alastairs-place.net", "name": "Alastair Houghton", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/al45tair/netifaces"}}}, "generator": "bdist_wheel (0.29.0)", "license": "MIT License", "metadata_version": "2.0", "name": "netifaces", "summary": "Portable network interface information.", "version": "0.10.4"}
|
|
@ -0,0 +1 @@
|
||||||
|
netifaces
|
|
@ -0,0 +1 @@
|
||||||
|
|
BIN
lib/python3.4/site-packages/netifaces.cpython-34m.so
Executable file
BIN
lib/python3.4/site-packages/netifaces.cpython-34m.so
Executable file
Binary file not shown.
|
@ -22,6 +22,8 @@ tool for installing Python packages.
|
||||||
.. image:: https://img.shields.io/travis/pypa/pip/develop.svg
|
.. image:: https://img.shields.io/travis/pypa/pip/develop.svg
|
||||||
:target: http://travis-ci.org/pypa/pip
|
:target: http://travis-ci.org/pypa/pip
|
||||||
|
|
||||||
|
.. image:: https://readthedocs.org/projects/pip/badge/?version=stable
|
||||||
|
:target: https://pip.pypa.io/en/stable
|
||||||
|
|
||||||
Code of Conduct
|
Code of Conduct
|
||||||
---------------
|
---------------
|
|
@ -1,6 +1,6 @@
|
||||||
Metadata-Version: 2.0
|
Metadata-Version: 2.0
|
||||||
Name: pip
|
Name: pip
|
||||||
Version: 8.0.2
|
Version: 8.1.1
|
||||||
Summary: The PyPA recommended tool for installing Python packages.
|
Summary: The PyPA recommended tool for installing Python packages.
|
||||||
Home-page: https://pip.pypa.io/
|
Home-page: https://pip.pypa.io/
|
||||||
Author: The pip developers
|
Author: The pip developers
|
||||||
|
@ -22,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.5
|
||||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
Provides-Extra: testing
|
Provides-Extra: testing
|
||||||
Requires-Dist: mock; extra == 'testing'
|
Requires-Dist: mock; extra == 'testing'
|
||||||
|
Requires-Dist: pretend; extra == 'testing'
|
||||||
Requires-Dist: pytest; extra == 'testing'
|
Requires-Dist: pytest; extra == 'testing'
|
||||||
Requires-Dist: scripttest (>=1.3); extra == 'testing'
|
Requires-Dist: scripttest (>=1.3); extra == 'testing'
|
||||||
Requires-Dist: virtualenv (>=1.10); extra == 'testing'
|
Requires-Dist: virtualenv (>=1.10); extra == 'testing'
|
||||||
|
@ -50,6 +51,8 @@ tool for installing Python packages.
|
||||||
.. image:: https://img.shields.io/travis/pypa/pip/develop.svg
|
.. image:: https://img.shields.io/travis/pypa/pip/develop.svg
|
||||||
:target: http://travis-ci.org/pypa/pip
|
:target: http://travis-ci.org/pypa/pip
|
||||||
|
|
||||||
|
.. image:: https://readthedocs.org/projects/pip/badge/?version=stable
|
||||||
|
:target: https://pip.pypa.io/en/stable
|
||||||
|
|
||||||
Code of Conduct
|
Code of Conduct
|
||||||
---------------
|
---------------
|
|
@ -1,113 +1,117 @@
|
||||||
pip/__init__.py,sha256=mPGsfFwpIvtXlWhanTBtjdVYuTc0KNDvb2Tr-gHZBvU,10431
|
pip/__init__.py,sha256=fFs-ytm2H4V2evGESaozmF7U0BaGIMM0drFJZ5Ifj4s,10427
|
||||||
pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584
|
pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584
|
||||||
pip/basecommand.py,sha256=Zlg6SE42TIjRyt1mct0LCkgNxcKKnss3xvASJyDqucE,11429
|
pip/basecommand.py,sha256=Zlg6SE42TIjRyt1mct0LCkgNxcKKnss3xvASJyDqucE,11429
|
||||||
pip/baseparser.py,sha256=Nlc7Un9gat27xtB24SnKL_3pZZOoh62gNNRdS6tDRZY,10465
|
pip/baseparser.py,sha256=Nlc7Un9gat27xtB24SnKL_3pZZOoh62gNNRdS6tDRZY,10465
|
||||||
pip/cmdoptions.py,sha256=OJhbVR6zQ8kbbGcnv0RTZyvwvFqzKxtmO4lPYymMBKM,15877
|
pip/cmdoptions.py,sha256=pf24iszA39rhcJ5DjFA4oD_z5vTI0NG98qUahHs3qPM,15878
|
||||||
pip/download.py,sha256=srwSU5WnOa59_TPGaCfEWODDSZSRBJUHgU5jkC467MY,31715
|
pip/download.py,sha256=oJ3sZ8I6ct9X3eoXQ9xm_Ne0e6N85G_rWaERmMCVF2k,31722
|
||||||
pip/exceptions.py,sha256=4KrgxMQuOpP8JlWc90S0vsJ_Ch-EBeD026knOgk9U8A,7741
|
pip/exceptions.py,sha256=GdDhHOROBj-kW2rgerLJYXsxN8ENy1BX5RUb_Vs9TXM,7980
|
||||||
pip/index.py,sha256=VzgEo93kTlHeoPrlgPDg24h2ly0jzdg92OBjkG--gMg,36776
|
pip/index.py,sha256=kpyj_O5c0VVlvhg5VuVm4oAGGh6RvD7Xr0syPN-eGa0,37191
|
||||||
pip/locations.py,sha256=MqUzS8YI2wDa7oFzTQw4zM4s0Hci05yubxfU_kTXXlU,5632
|
pip/locations.py,sha256=MqUzS8YI2wDa7oFzTQw4zM4s0Hci05yubxfU_kTXXlU,5632
|
||||||
pip/pep425tags.py,sha256=nXeMZN4d3h14oVovpI0WholWCNCR0MD2mAERl3YHs08,7240
|
pip/pep425tags.py,sha256=4PNr9hd8OsXnKYR2q2oLzfDDhF5bFBwUZA-ZQxAClSI,11318
|
||||||
pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156
|
pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156
|
||||||
pip/wheel.py,sha256=e3iaG7X6Z6eQvfChzGiZHK4yw12Z_PqLSRCi6_AUf4s,32030
|
pip/wheel.py,sha256=qg1DgjXtiQCnY-IJY5HC5VgpeQm9WCjDKYmefSfOjq0,32088
|
||||||
pip/_vendor/__init__.py,sha256=OuNX6SjnmNk4mvSyZXarkqf7LtKke3IH7CWoAi_w-5o,4229
|
pip/_vendor/__init__.py,sha256=9EPZ-JLxtXMt71Fp5_pKTTe1QbJZZVlN81rsRYEvlpA,4781
|
||||||
pip/commands/__init__.py,sha256=BSfOTIkMIBWElsuWJ_uAuCmDQS8b-OHYiyOkk77tWSU,2215
|
pip/commands/__init__.py,sha256=naZ1iIWRutNznOVpLj8qyn1GPE0B5rhCWCrSUOZSt4M,2145
|
||||||
pip/commands/completion.py,sha256=7JkLif3DF0QGpjMaUjHvF8knJ3IumcED2gWRvMRpFy0,1991
|
pip/commands/completion.py,sha256=2BEUY3jowgemiIGgUP3rpk6A9My4Eu8rTPosFxlESOE,1967
|
||||||
pip/commands/download.py,sha256=dMRtH0JMBhNGlJWr1qC29vOeiBzG2K0OjOAfzdxSVgA,4804
|
pip/commands/download.py,sha256=dMRtH0JMBhNGlJWr1qC29vOeiBzG2K0OjOAfzdxSVgA,4804
|
||||||
pip/commands/freeze.py,sha256=_wHnuHYXC4V0zBLD7LfDhgI_bWL6KdcCgzzQ9bXwDkU,2330
|
pip/commands/freeze.py,sha256=KmQoLf-HruqBDzc-F2-ganGVn2lboNQqppfyrMsx3SU,2774
|
||||||
pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597
|
pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597
|
||||||
pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982
|
pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982
|
||||||
pip/commands/install.py,sha256=8MOsH3IlL3ovZhTQtZwHhJb19pnkr8eKNE_9klVJ3PU,14971
|
pip/commands/install.py,sha256=DvRVVwfUy6LV-AtNcxl9kLl7XOc7G7087ZhdD4QbP60,15628
|
||||||
pip/commands/list.py,sha256=u76U5TLODQ2g53sSUA4q6WhYus7usbuWuITQJsCnP3E,7412
|
pip/commands/list.py,sha256=u76U5TLODQ2g53sSUA4q6WhYus7usbuWuITQJsCnP3E,7412
|
||||||
pip/commands/search.py,sha256=dJe9rcam1TEfNp9-Gi36WjHc3l4mdj8gheVjqK5BrR0,4605
|
pip/commands/search.py,sha256=9ClAcFzkJ_7AksTkNrUed5qzsplpBtMlJByJLqiZFqw,4777
|
||||||
pip/commands/show.py,sha256=yxghAwGYaYphL2LJdJbYXVLFr8tBMHnuH8n8s2fWMr4,4903
|
pip/commands/show.py,sha256=dytBbI9XV-ChpV51tsuBygZJJO-QaO2Gtz5kbLkBCZE,5815
|
||||||
pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884
|
pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884
|
||||||
pip/commands/wheel.py,sha256=iT92Uo8qpVILl_Yk8L7AtkFVYGmY0ep5oDeyQSpwkLs,7528
|
pip/commands/wheel.py,sha256=iT92Uo8qpVILl_Yk8L7AtkFVYGmY0ep5oDeyQSpwkLs,7528
|
||||||
pip/compat/__init__.py,sha256=-k3m7JYe8ztMz2GGCPMc-XK7Uo-RiLdV00dSxWKMjfg,4536
|
pip/compat/__init__.py,sha256=7WN0B0XMYIldfminnT679VoEJLxNQPi9MFwCIt1_llU,4669
|
||||||
pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096
|
pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096
|
||||||
|
pip/compat/ordereddict.py,sha256=6RQCd4PyTE4tvLUoAnsygvrreOSTV4BRDbc_4gCSkTs,4110
|
||||||
pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71
|
pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71
|
||||||
pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487
|
pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487
|
||||||
pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
pip/operations/freeze.py,sha256=Px8en5guEfc6mhYh0cATtT6tlFzqTzLj4ad8gqAkIqw,3925
|
pip/operations/freeze.py,sha256=H6xpxe1XgoNm5f3UXK47kNy0OQfM5jzo4UUwQu7G-Lo,4048
|
||||||
pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276
|
pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276
|
||||||
pip/req/req_file.py,sha256=h1YmFfD7Opb_ulTTyEp7Osv2d8gbQJ1KGWMptEl_S08,11764
|
pip/req/req_file.py,sha256=3eaVnPMUAjikLdC5i8hZUAf8aAOby2UxmAVFf94FOXY,11928
|
||||||
pip/req/req_install.py,sha256=DYLV95E3U81nRJy4q8qs0fozLiCQZbG8Yg-CbUTwA2w,46670
|
pip/req/req_install.py,sha256=aG0_hj8WqLLUH5tO40OFIncIxU50Vm4rFqYcx5hmoYk,45589
|
||||||
pip/req/req_set.py,sha256=0ncBet1v7gbsKeTUPpBj_-6Kowxx-iskw0_kLMGObi4,32236
|
pip/req/req_set.py,sha256=Xwia1h7o2Z3Qogae3RHIDCGlXS3w2AeQPG8LBz7GmFM,32312
|
||||||
pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897
|
pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897
|
||||||
pip/utils/__init__.py,sha256=4Tz09B6nsZm6bQ3mR7K-AeDjlMLMFjnehaXH4vG_E-0,26759
|
pip/utils/__init__.py,sha256=SSixMJeh2SdjNgra_50jaC0jdmXFewLkFh_-a3tw9ks,28256
|
||||||
pip/utils/appdirs.py,sha256=KTpZANfjYw5K2tZ0_jNNdP_kMxQAns79qZWelwaJo0c,7896
|
pip/utils/appdirs.py,sha256=KTpZANfjYw5K2tZ0_jNNdP_kMxQAns79qZWelwaJo0c,7896
|
||||||
pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312
|
pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312
|
||||||
pip/utils/deprecation.py,sha256=0y-RdGVpnt-_byop0WJOOb509f8jjOzSmKghHorTclU,2282
|
pip/utils/deprecation.py,sha256=DR3cKqzovYu9Pif7c9bT2KmwekfW95N3BsI45_5u38I,2239
|
||||||
|
pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971
|
||||||
pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899
|
pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899
|
||||||
pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866
|
pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866
|
||||||
pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327
|
pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327
|
||||||
pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455
|
pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455
|
||||||
pip/utils/setuptools_build.py,sha256=8IGop-SZ6lxUl5HMOjLRaDlORPugIH_b_b2Y67x4jQc,240
|
pip/utils/setuptools_build.py,sha256=8IGop-SZ6lxUl5HMOjLRaDlORPugIH_b_b2Y67x4jQc,240
|
||||||
pip/utils/ui.py,sha256=fY7lHmQg3Pdnsgkge2mpZMNU9e1jg6unYYs2Ryfulhk,11320
|
pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597
|
||||||
pip/vcs/__init__.py,sha256=lnea41zMq9HqB1Qo7hxy2IjUzk5WtBvnoloCCMR6Vk4,12349
|
pip/vcs/__init__.py,sha256=lnea41zMq9HqB1Qo7hxy2IjUzk5WtBvnoloCCMR6Vk4,12349
|
||||||
pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803
|
pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803
|
||||||
pip/vcs/git.py,sha256=jN3vZCn1DqE-RdKGfMqlDhObZ3WFjC21dEav29M62xI,10054
|
pip/vcs/git.py,sha256=u16VCiNW_a9AaYqLri2b8-f4lOZlOYwsGpHHV3uv_dQ,10218
|
||||||
pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472
|
pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472
|
||||||
pip/vcs/subversion.py,sha256=mGT7sAzuVc1u-9MPoXJNyShnRzhdJpDdGNuhhzUPv6w,8687
|
pip/vcs/subversion.py,sha256=mGT7sAzuVc1u-9MPoXJNyShnRzhdJpDdGNuhhzUPv6w,8687
|
||||||
pip-8.0.2.dist-info/DESCRIPTION.rst,sha256=_rptqJIyCNNmh7m8q-4qZfQDc9gqAjMxVITAEfItc08,1060
|
pip-8.1.1.dist-info/DESCRIPTION.rst,sha256=jSvW1qOjwzndvm_p_DexGCVJfwgg3rWPMJWzf6Rmsfc,1167
|
||||||
pip-8.0.2.dist-info/METADATA,sha256=0KwLFgIzCAQ506gjLJ_VyrUxbw2NC8b-kUbTM8Uo42Y,2212
|
pip-8.1.1.dist-info/METADATA,sha256=p_9D2tGGDX-wd8S14XVVx0K-qOjDrrwu-CmYn9Dndlc,2362
|
||||||
pip-8.0.2.dist-info/RECORD,,
|
pip-8.1.1.dist-info/RECORD,,
|
||||||
pip-8.0.2.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
|
pip-8.1.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
pip-8.0.2.dist-info/entry_points.txt,sha256=1-e4WB_Fe8mWHrMi1YQo_s5knbh0lu_uRmd8Wb6MJfY,68
|
pip-8.1.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68
|
||||||
pip-8.0.2.dist-info/metadata.json,sha256=Sl2y0vogC_Ro8peVqn3OBZJQ_kV0PdQ9QfraUV3XPj0,1393
|
pip-8.1.1.dist-info/metadata.json,sha256=wAnzudgBGV69N0kQOAgeAXIjQSbkBZhZEs98ULrfRUE,1513
|
||||||
pip-8.0.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
pip-8.1.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/pip,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
../../../bin/pip,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/pip3,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
../../../bin/pip3,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/pip3.4,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
../../../bin/pip3.4,sha256=MEQVvFZcu35ZQaa5ungLLm_kHRGvmD4u-AbMJaTm8vU,271
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/pip-8.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
pip-8.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
pip/commands/__pycache__/download.cpython-34.pyc,,
|
|
||||||
pip/_vendor/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/ui.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/help.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/filesystem.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/freeze.cpython-34.pyc,,
|
|
||||||
pip/models/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/compat/__pycache__/dictconfig.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/deprecation.cpython-34.pyc,,
|
pip/utils/__pycache__/deprecation.cpython-34.pyc,,
|
||||||
pip/req/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/list.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/hashes.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/completion.cpython-34.pyc,,
|
pip/commands/__pycache__/completion.cpython-34.pyc,,
|
||||||
pip/vcs/__pycache__/mercurial.cpython-34.pyc,,
|
pip/vcs/__pycache__/mercurial.cpython-34.pyc,,
|
||||||
pip/operations/__pycache__/freeze.cpython-34.pyc,,
|
pip/req/__pycache__/req_file.cpython-34.pyc,,
|
||||||
pip/vcs/__pycache__/git.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/__main__.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/hash.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/download.cpython-34.pyc,,
|
|
||||||
pip/vcs/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/index.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/wheel.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/cmdoptions.cpython-34.pyc,,
|
|
||||||
pip/operations/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/baseparser.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/show.cpython-34.pyc,,
|
|
||||||
pip/req/__pycache__/req_set.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/basecommand.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/wheel.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/setuptools_build.cpython-34.pyc,,
|
|
||||||
pip/vcs/__pycache__/bazaar.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/exceptions.cpython-34.pyc,,
|
|
||||||
pip/req/__pycache__/req_uninstall.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/logging.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/pep425tags.cpython-34.pyc,,
|
pip/__pycache__/pep425tags.cpython-34.pyc,,
|
||||||
|
pip/vcs/__pycache__/bazaar.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/setuptools_build.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/list.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/models/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/wheel.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/ui.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/help.cpython-34.pyc,,
|
||||||
|
pip/compat/__pycache__/ordereddict.cpython-34.pyc,,
|
||||||
|
pip/compat/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/logging.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/show.cpython-34.pyc,,
|
||||||
|
pip/req/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/filesystem.cpython-34.pyc,,
|
||||||
|
pip/vcs/__pycache__/git.cpython-34.pyc,,
|
||||||
|
pip/req/__pycache__/req_set.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/operations/__pycache__/freeze.cpython-34.pyc,,
|
||||||
|
pip/compat/__pycache__/dictconfig.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/hash.cpython-34.pyc,,
|
||||||
|
pip/req/__pycache__/req_uninstall.cpython-34.pyc,,
|
||||||
|
pip/operations/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/__init__.cpython-34.pyc,,
|
||||||
pip/req/__pycache__/req_install.cpython-34.pyc,,
|
pip/req/__pycache__/req_install.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/build.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/encoding.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/basecommand.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/download.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/cmdoptions.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/outdated.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/download.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/appdirs.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/exceptions.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/__main__.cpython-34.pyc,,
|
||||||
|
pip/vcs/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/vcs/__pycache__/subversion.cpython-34.pyc,,
|
||||||
|
pip/utils/__pycache__/hashes.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/uninstall.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/baseparser.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/freeze.cpython-34.pyc,,
|
||||||
|
pip/_vendor/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pip/commands/__pycache__/search.cpython-34.pyc,,
|
||||||
pip/__pycache__/locations.cpython-34.pyc,,
|
pip/__pycache__/locations.cpython-34.pyc,,
|
||||||
pip/commands/__pycache__/install.cpython-34.pyc,,
|
pip/commands/__pycache__/install.cpython-34.pyc,,
|
||||||
pip/utils/__pycache__/build.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/uninstall.cpython-34.pyc,,
|
|
||||||
pip/vcs/__pycache__/subversion.cpython-34.pyc,,
|
|
||||||
pip/utils/__pycache__/outdated.cpython-34.pyc,,
|
|
||||||
pip/commands/__pycache__/search.cpython-34.pyc,,
|
|
||||||
pip/__pycache__/status_codes.cpython-34.pyc,,
|
|
||||||
pip/req/__pycache__/req_file.cpython-34.pyc,,
|
|
||||||
pip/compat/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pip/models/__pycache__/index.cpython-34.pyc,,
|
pip/models/__pycache__/index.cpython-34.pyc,,
|
||||||
pip/utils/__pycache__/appdirs.cpython-34.pyc,,
|
pip/__pycache__/index.cpython-34.pyc,,
|
||||||
pip/utils/__pycache__/__init__.cpython-34.pyc,,
|
pip/__pycache__/wheel.cpython-34.pyc,,
|
||||||
|
pip/__pycache__/status_codes.cpython-34.pyc,,
|
|
@ -1,5 +1,5 @@
|
||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: bdist_wheel (0.26.0)
|
Generator: bdist_wheel (0.29.0)
|
||||||
Root-Is-Purelib: true
|
Root-Is-Purelib: true
|
||||||
Tag: py2-none-any
|
Tag: py2-none-any
|
||||||
Tag: py3-none-any
|
Tag: py3-none-any
|
|
@ -1,5 +1,5 @@
|
||||||
[console_scripts]
|
[console_scripts]
|
||||||
pip = pip:main
|
pip = pip:main
|
||||||
pip3 = pip:main
|
pip3 = pip:main
|
||||||
pip3.4 = pip:main
|
pip3.5 = pip:main
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.4": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.4": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.26.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "run_requires": [{"extra": "testing", "requires": ["mock", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "version": "8.0.2"}
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.29.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "8.1.1"}
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import locale
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import optparse
|
import optparse
|
||||||
|
@ -30,7 +31,7 @@ import pip.cmdoptions
|
||||||
cmdoptions = pip.cmdoptions
|
cmdoptions = pip.cmdoptions
|
||||||
|
|
||||||
# The version as used in the setup.py and the docs conf.py
|
# The version as used in the setup.py and the docs conf.py
|
||||||
__version__ = "8.0.2"
|
__version__ = "8.1.1"
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -197,10 +198,6 @@ def main(args=None):
|
||||||
if args is None:
|
if args is None:
|
||||||
args = sys.argv[1:]
|
args = sys.argv[1:]
|
||||||
|
|
||||||
# Enable our Deprecation Warnings
|
|
||||||
for deprecation_warning in deprecation.DEPRECATIONS:
|
|
||||||
warnings.simplefilter("default", deprecation_warning)
|
|
||||||
|
|
||||||
# Configure our deprecation warnings to be sent through loggers
|
# Configure our deprecation warnings to be sent through loggers
|
||||||
deprecation.install_warning_logger()
|
deprecation.install_warning_logger()
|
||||||
|
|
||||||
|
@ -213,6 +210,9 @@ def main(args=None):
|
||||||
sys.stderr.write(os.linesep)
|
sys.stderr.write(os.linesep)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Needed for locale.getpreferredencoding(False) to work
|
||||||
|
# in pip.utils.encoding.auto_decode
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
command = commands_dict[cmd_name](isolated=check_isolated(cmd_args))
|
command = commands_dict[cmd_name](isolated=check_isolated(cmd_args))
|
||||||
return command.main(cmd_args)
|
return command.main(cmd_args)
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,19 @@ def vendored(modulename):
|
||||||
try:
|
try:
|
||||||
__import__(vendored_name, globals(), locals(), level=0)
|
__import__(vendored_name, globals(), locals(), level=0)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
try:
|
||||||
__import__(modulename, globals(), locals(), level=0)
|
__import__(modulename, globals(), locals(), level=0)
|
||||||
|
except ImportError:
|
||||||
|
# We can just silently allow import failures to pass here. If we
|
||||||
|
# got to this point it means that ``import pip._vendor.whatever``
|
||||||
|
# failed and so did ``import whatever``. Since we're importing this
|
||||||
|
# upfront in an attempt to alias imports, not erroring here will
|
||||||
|
# just mean we get a regular import error whenever pip *actually*
|
||||||
|
# tries to import one of these modules to use it, which actually
|
||||||
|
# gives us a better error message than we would have otherwise
|
||||||
|
# gotten.
|
||||||
|
pass
|
||||||
|
else:
|
||||||
sys.modules[vendored_name] = sys.modules[modulename]
|
sys.modules[vendored_name] = sys.modules[modulename]
|
||||||
base, head = vendored_name.rsplit(".", 1)
|
base, head = vendored_name.rsplit(".", 1)
|
||||||
setattr(sys.modules[base], head, sys.modules[modulename])
|
setattr(sys.modules[base], head, sys.modules[modulename])
|
||||||
|
@ -70,14 +82,8 @@ if DEBUNDLED:
|
||||||
vendored("requests.packages.urllib3.connection")
|
vendored("requests.packages.urllib3.connection")
|
||||||
vendored("requests.packages.urllib3.connectionpool")
|
vendored("requests.packages.urllib3.connectionpool")
|
||||||
vendored("requests.packages.urllib3.contrib")
|
vendored("requests.packages.urllib3.contrib")
|
||||||
try:
|
|
||||||
vendored("requests.packages.urllib3.contrib.ntlmpool")
|
vendored("requests.packages.urllib3.contrib.ntlmpool")
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
vendored("requests.packages.urllib3.contrib.pyopenssl")
|
vendored("requests.packages.urllib3.contrib.pyopenssl")
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
vendored("requests.packages.urllib3.exceptions")
|
vendored("requests.packages.urllib3.exceptions")
|
||||||
vendored("requests.packages.urllib3.fields")
|
vendored("requests.packages.urllib3.fields")
|
||||||
vendored("requests.packages.urllib3.filepost")
|
vendored("requests.packages.urllib3.filepost")
|
||||||
|
|
|
@ -247,7 +247,7 @@ def find_links():
|
||||||
default=[],
|
default=[],
|
||||||
metavar='url',
|
metavar='url',
|
||||||
help="If a url or path to an html file, then parse for links to "
|
help="If a url or path to an html file, then parse for links to "
|
||||||
"archives. If a local path or file:// url that's a directory,"
|
"archives. If a local path or file:// url that's a directory, "
|
||||||
"then look for archives in the directory listing.")
|
"then look for archives in the directory listing.")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,12 @@ commands_order = [
|
||||||
SearchCommand,
|
SearchCommand,
|
||||||
WheelCommand,
|
WheelCommand,
|
||||||
HashCommand,
|
HashCommand,
|
||||||
|
CompletionCommand,
|
||||||
HelpCommand,
|
HelpCommand,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_summaries(ignore_hidden=True, ordered=True):
|
def get_summaries(ordered=True):
|
||||||
"""Yields sorted (command name, command summary) tuples."""
|
"""Yields sorted (command name, command summary) tuples."""
|
||||||
|
|
||||||
if ordered:
|
if ordered:
|
||||||
|
@ -54,9 +55,6 @@ def get_summaries(ignore_hidden=True, ordered=True):
|
||||||
cmditems = commands_dict.items()
|
cmditems = commands_dict.items()
|
||||||
|
|
||||||
for name, command_class in cmditems:
|
for name, command_class in cmditems:
|
||||||
if ignore_hidden and command_class.hidden:
|
|
||||||
continue
|
|
||||||
|
|
||||||
yield (name, command_class.summary)
|
yield (name, command_class.summary)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,7 @@ compctl -K _pip_completion pip
|
||||||
class CompletionCommand(Command):
|
class CompletionCommand(Command):
|
||||||
"""A helper command to be used for command completion."""
|
"""A helper command to be used for command completion."""
|
||||||
name = 'completion'
|
name = 'completion'
|
||||||
summary = 'A helper command to be used for command completion'
|
summary = 'A helper command used for command completion'
|
||||||
hidden = True
|
|
||||||
|
|
||||||
def __init__(self, *args, **kw):
|
def __init__(self, *args, **kw):
|
||||||
super(CompletionCommand, self).__init__(*args, **kw)
|
super(CompletionCommand, self).__init__(*args, **kw)
|
||||||
|
|
|
@ -3,11 +3,15 @@ from __future__ import absolute_import
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import pip
|
import pip
|
||||||
|
from pip.compat import stdlib_pkgs
|
||||||
from pip.basecommand import Command
|
from pip.basecommand import Command
|
||||||
from pip.operations.freeze import freeze
|
from pip.operations.freeze import freeze
|
||||||
from pip.wheel import WheelCache
|
from pip.wheel import WheelCache
|
||||||
|
|
||||||
|
|
||||||
|
DEV_PKGS = ('pip', 'setuptools', 'distribute', 'wheel')
|
||||||
|
|
||||||
|
|
||||||
class FreezeCommand(Command):
|
class FreezeCommand(Command):
|
||||||
"""
|
"""
|
||||||
Output installed packages in requirements format.
|
Output installed packages in requirements format.
|
||||||
|
@ -52,12 +56,22 @@ class FreezeCommand(Command):
|
||||||
action='store_true',
|
action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help='Only output packages installed in user-site.')
|
help='Only output packages installed in user-site.')
|
||||||
|
self.cmd_opts.add_option(
|
||||||
|
'--all',
|
||||||
|
dest='freeze_all',
|
||||||
|
action='store_true',
|
||||||
|
help='Do not skip these packages in the output:'
|
||||||
|
' %s' % ', '.join(DEV_PKGS))
|
||||||
|
|
||||||
self.parser.insert_option_group(0, self.cmd_opts)
|
self.parser.insert_option_group(0, self.cmd_opts)
|
||||||
|
|
||||||
def run(self, options, args):
|
def run(self, options, args):
|
||||||
format_control = pip.index.FormatControl(set(), set())
|
format_control = pip.index.FormatControl(set(), set())
|
||||||
wheel_cache = WheelCache(options.cache_dir, format_control)
|
wheel_cache = WheelCache(options.cache_dir, format_control)
|
||||||
|
skip = set(stdlib_pkgs)
|
||||||
|
if not options.freeze_all:
|
||||||
|
skip.update(DEV_PKGS)
|
||||||
|
|
||||||
freeze_kwargs = dict(
|
freeze_kwargs = dict(
|
||||||
requirement=options.requirement,
|
requirement=options.requirement,
|
||||||
find_links=options.find_links,
|
find_links=options.find_links,
|
||||||
|
@ -65,7 +79,8 @@ class FreezeCommand(Command):
|
||||||
user_only=options.user,
|
user_only=options.user,
|
||||||
skip_regex=options.skip_requirements_regex,
|
skip_regex=options.skip_requirements_regex,
|
||||||
isolated=options.isolated_mode,
|
isolated=options.isolated_mode,
|
||||||
wheel_cache=wheel_cache)
|
wheel_cache=wheel_cache,
|
||||||
|
skip=skip)
|
||||||
|
|
||||||
for line in freeze(**freeze_kwargs):
|
for line in freeze(**freeze_kwargs):
|
||||||
sys.stdout.write(line + '\n')
|
sys.stdout.write(line + '\n')
|
||||||
|
|
|
@ -24,6 +24,7 @@ from pip.utils.deprecation import RemovedInPip10Warning
|
||||||
from pip.utils.filesystem import check_path_owner
|
from pip.utils.filesystem import check_path_owner
|
||||||
from pip.wheel import WheelCache, WheelBuilder
|
from pip.wheel import WheelCache, WheelBuilder
|
||||||
|
|
||||||
|
from pip.locations import running_under_virtualenv
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -54,6 +55,12 @@ class InstallCommand(RequirementCommand):
|
||||||
def __init__(self, *args, **kw):
|
def __init__(self, *args, **kw):
|
||||||
super(InstallCommand, self).__init__(*args, **kw)
|
super(InstallCommand, self).__init__(*args, **kw)
|
||||||
|
|
||||||
|
default_user = True
|
||||||
|
if running_under_virtualenv():
|
||||||
|
default_user = False
|
||||||
|
if os.geteuid() == 0:
|
||||||
|
default_user = False
|
||||||
|
|
||||||
cmd_opts = self.cmd_opts
|
cmd_opts = self.cmd_opts
|
||||||
|
|
||||||
cmd_opts.add_option(cmdoptions.constraints())
|
cmd_opts.add_option(cmdoptions.constraints())
|
||||||
|
@ -103,6 +110,7 @@ class InstallCommand(RequirementCommand):
|
||||||
'-I', '--ignore-installed',
|
'-I', '--ignore-installed',
|
||||||
dest='ignore_installed',
|
dest='ignore_installed',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
default=default_user,
|
||||||
help='Ignore the installed packages (reinstalling instead).')
|
help='Ignore the installed packages (reinstalling instead).')
|
||||||
|
|
||||||
cmd_opts.add_option(cmdoptions.no_deps())
|
cmd_opts.add_option(cmdoptions.no_deps())
|
||||||
|
@ -114,10 +122,20 @@ class InstallCommand(RequirementCommand):
|
||||||
'--user',
|
'--user',
|
||||||
dest='use_user_site',
|
dest='use_user_site',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
default=default_user,
|
||||||
help="Install to the Python user install directory for your "
|
help="Install to the Python user install directory for your "
|
||||||
"platform. Typically ~/.local/, or %APPDATA%\Python on "
|
"platform. Typically ~/.local/, or %APPDATA%\Python on "
|
||||||
"Windows. (See the Python documentation for site.USER_BASE "
|
"Windows. (See the Python documentation for site.USER_BASE "
|
||||||
"for full details.)")
|
"for full details.) On Debian systems, this is the "
|
||||||
|
"default when running outside of a virtual environment "
|
||||||
|
"and not as root.")
|
||||||
|
|
||||||
|
cmd_opts.add_option(
|
||||||
|
'--system',
|
||||||
|
dest='use_user_site',
|
||||||
|
action='store_false',
|
||||||
|
help="Install using the system scheme (overrides --user on "
|
||||||
|
"Debian systems)")
|
||||||
|
|
||||||
cmd_opts.add_option(
|
cmd_opts.add_option(
|
||||||
'--egg',
|
'--egg',
|
||||||
|
|
|
@ -105,11 +105,16 @@ def print_results(hits, name_column_width=None, terminal_width=None):
|
||||||
if not hits:
|
if not hits:
|
||||||
return
|
return
|
||||||
if name_column_width is None:
|
if name_column_width is None:
|
||||||
name_column_width = max((len(hit['name']) for hit in hits)) + 4
|
name_column_width = max([
|
||||||
|
len(hit['name']) + len(hit.get('versions', ['-'])[-1])
|
||||||
|
for hit in hits
|
||||||
|
]) + 4
|
||||||
|
|
||||||
installed_packages = [p.project_name for p in pkg_resources.working_set]
|
installed_packages = [p.project_name for p in pkg_resources.working_set]
|
||||||
for hit in hits:
|
for hit in hits:
|
||||||
name = hit['name']
|
name = hit['name']
|
||||||
summary = hit['summary'] or ''
|
summary = hit['summary'] or ''
|
||||||
|
version = hit.get('versions', ['-'])[-1]
|
||||||
if terminal_width is not None:
|
if terminal_width is not None:
|
||||||
# wrap and indent summary to fit terminal
|
# wrap and indent summary to fit terminal
|
||||||
summary = textwrap.wrap(
|
summary = textwrap.wrap(
|
||||||
|
@ -117,7 +122,9 @@ def print_results(hits, name_column_width=None, terminal_width=None):
|
||||||
terminal_width - name_column_width - 5,
|
terminal_width - name_column_width - 5,
|
||||||
)
|
)
|
||||||
summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
|
summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
|
||||||
line = '%s - %s' % (name.ljust(name_column_width), summary)
|
|
||||||
|
line = '%-*s - %s' % (name_column_width,
|
||||||
|
'%s (%s)' % (name, version), summary)
|
||||||
try:
|
try:
|
||||||
logger.info(line)
|
logger.info(line)
|
||||||
if name in installed_packages:
|
if name in installed_packages:
|
||||||
|
|
|
@ -85,6 +85,14 @@ def search_packages_info(query):
|
||||||
entry_points = dist.get_metadata_lines('entry_points.txt')
|
entry_points = dist.get_metadata_lines('entry_points.txt')
|
||||||
package['entry_points'] = entry_points
|
package['entry_points'] = entry_points
|
||||||
|
|
||||||
|
installer = None
|
||||||
|
if dist.has_metadata('INSTALLER'):
|
||||||
|
for line in dist.get_metadata_lines('INSTALLER'):
|
||||||
|
if line.strip():
|
||||||
|
installer = line.strip()
|
||||||
|
break
|
||||||
|
package['installer'] = installer
|
||||||
|
|
||||||
# @todo: Should pkg_resources.Distribution have a
|
# @todo: Should pkg_resources.Distribution have a
|
||||||
# `get_pkg_info` method?
|
# `get_pkg_info` method?
|
||||||
feed_parser = FeedParser()
|
feed_parser = FeedParser()
|
||||||
|
@ -94,6 +102,16 @@ def search_packages_info(query):
|
||||||
'home-page', 'author', 'author-email', 'license'):
|
'home-page', 'author', 'author-email', 'license'):
|
||||||
package[key] = pkg_info_dict.get(key)
|
package[key] = pkg_info_dict.get(key)
|
||||||
|
|
||||||
|
# It looks like FeedParser can not deal with repeated headers
|
||||||
|
classifiers = []
|
||||||
|
for line in metadata.splitlines():
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
# Classifier: License :: OSI Approved :: MIT License
|
||||||
|
if line.startswith('Classifier: '):
|
||||||
|
classifiers.append(line[len('Classifier: '):])
|
||||||
|
package['classifiers'] = classifiers
|
||||||
|
|
||||||
if file_list:
|
if file_list:
|
||||||
package['files'] = sorted(file_list)
|
package['files'] = sorted(file_list)
|
||||||
yield package
|
yield package
|
||||||
|
@ -114,9 +132,14 @@ def print_results(distributions, list_all_files):
|
||||||
logger.info("Home-page: %s", dist.get('home-page'))
|
logger.info("Home-page: %s", dist.get('home-page'))
|
||||||
logger.info("Author: %s", dist.get('author'))
|
logger.info("Author: %s", dist.get('author'))
|
||||||
logger.info("Author-email: %s", dist.get('author-email'))
|
logger.info("Author-email: %s", dist.get('author-email'))
|
||||||
|
if dist['installer'] is not None:
|
||||||
|
logger.info("Installer: %s", dist['installer'])
|
||||||
logger.info("License: %s", dist.get('license'))
|
logger.info("License: %s", dist.get('license'))
|
||||||
logger.info("Location: %s", dist['location'])
|
logger.info("Location: %s", dist['location'])
|
||||||
logger.info("Requires: %s", ', '.join(dist['requires']))
|
logger.info("Requires: %s", ', '.join(dist['requires']))
|
||||||
|
logger.info("Classifiers:")
|
||||||
|
for classifier in dist['classifiers']:
|
||||||
|
logger.info(" %s", classifier)
|
||||||
if list_all_files:
|
if list_all_files:
|
||||||
logger.info("Files:")
|
logger.info("Files:")
|
||||||
if 'files' in dist:
|
if 'files' in dist:
|
||||||
|
|
|
@ -12,6 +12,11 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from pip.compat.dictconfig import dictConfig as logging_dictConfig
|
from pip.compat.dictconfig import dictConfig as logging_dictConfig
|
||||||
|
|
||||||
|
try:
|
||||||
|
from collections import OrderedDict
|
||||||
|
except ImportError:
|
||||||
|
from pip.compat.ordereddict import OrderedDict
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import ipaddress
|
import ipaddress
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -45,7 +50,8 @@ except ImportError:
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"logging_dictConfig", "ipaddress", "uses_pycache", "console_to_str",
|
"logging_dictConfig", "ipaddress", "uses_pycache", "console_to_str",
|
||||||
"native_str", "get_path_uid", "stdlib_pkgs", "WINDOWS", "samefile"
|
"native_str", "get_path_uid", "stdlib_pkgs", "WINDOWS", "samefile",
|
||||||
|
"OrderedDict",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -138,9 +144,9 @@ def expanduser(path):
|
||||||
# dist.location (py27:`sysconfig.get_paths()['stdlib']`,
|
# dist.location (py27:`sysconfig.get_paths()['stdlib']`,
|
||||||
# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may
|
# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may
|
||||||
# make this ineffective, so hard-coding
|
# make this ineffective, so hard-coding
|
||||||
stdlib_pkgs = ['python', 'wsgiref']
|
stdlib_pkgs = ('python', 'wsgiref')
|
||||||
if sys.version_info >= (2, 7):
|
if sys.version_info >= (2, 7):
|
||||||
stdlib_pkgs.extend(['argparse'])
|
stdlib_pkgs += ('argparse',)
|
||||||
|
|
||||||
|
|
||||||
# windows detection, covers cpython and ironpython
|
# windows detection, covers cpython and ironpython
|
||||||
|
|
129
lib/python3.4/site-packages/pip/compat/ordereddict.py
Normal file
129
lib/python3.4/site-packages/pip/compat/ordereddict.py
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
# Copyright (c) 2009 Raymond Hettinger
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person
|
||||||
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
# (the "Software"), to deal in the Software without restriction,
|
||||||
|
# including without limitation the rights to use, copy, modify, merge,
|
||||||
|
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
# and to permit persons to whom the Software is furnished to do so,
|
||||||
|
# subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be
|
||||||
|
# included in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
# flake8: noqa
|
||||||
|
|
||||||
|
from UserDict import DictMixin
|
||||||
|
|
||||||
|
class OrderedDict(dict, DictMixin):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwds):
|
||||||
|
if len(args) > 1:
|
||||||
|
raise TypeError('expected at most 1 arguments, got %d' % len(args))
|
||||||
|
try:
|
||||||
|
self.__end
|
||||||
|
except AttributeError:
|
||||||
|
self.clear()
|
||||||
|
self.update(*args, **kwds)
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.__end = end = []
|
||||||
|
end += [None, end, end] # sentinel node for doubly linked list
|
||||||
|
self.__map = {} # key --> [key, prev, next]
|
||||||
|
dict.clear(self)
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
if key not in self:
|
||||||
|
end = self.__end
|
||||||
|
curr = end[1]
|
||||||
|
curr[2] = end[1] = self.__map[key] = [key, curr, end]
|
||||||
|
dict.__setitem__(self, key, value)
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
dict.__delitem__(self, key)
|
||||||
|
key, prev, next = self.__map.pop(key)
|
||||||
|
prev[2] = next
|
||||||
|
next[1] = prev
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
end = self.__end
|
||||||
|
curr = end[2]
|
||||||
|
while curr is not end:
|
||||||
|
yield curr[0]
|
||||||
|
curr = curr[2]
|
||||||
|
|
||||||
|
def __reversed__(self):
|
||||||
|
end = self.__end
|
||||||
|
curr = end[1]
|
||||||
|
while curr is not end:
|
||||||
|
yield curr[0]
|
||||||
|
curr = curr[1]
|
||||||
|
|
||||||
|
def popitem(self, last=True):
|
||||||
|
if not self:
|
||||||
|
raise KeyError('dictionary is empty')
|
||||||
|
if last:
|
||||||
|
key = reversed(self).next()
|
||||||
|
else:
|
||||||
|
key = iter(self).next()
|
||||||
|
value = self.pop(key)
|
||||||
|
return key, value
|
||||||
|
|
||||||
|
def __reduce__(self):
|
||||||
|
items = [[k, self[k]] for k in self]
|
||||||
|
tmp = self.__map, self.__end
|
||||||
|
del self.__map, self.__end
|
||||||
|
inst_dict = vars(self).copy()
|
||||||
|
self.__map, self.__end = tmp
|
||||||
|
if inst_dict:
|
||||||
|
return (self.__class__, (items,), inst_dict)
|
||||||
|
return self.__class__, (items,)
|
||||||
|
|
||||||
|
def keys(self):
|
||||||
|
return list(self)
|
||||||
|
|
||||||
|
setdefault = DictMixin.setdefault
|
||||||
|
update = DictMixin.update
|
||||||
|
pop = DictMixin.pop
|
||||||
|
values = DictMixin.values
|
||||||
|
items = DictMixin.items
|
||||||
|
iterkeys = DictMixin.iterkeys
|
||||||
|
itervalues = DictMixin.itervalues
|
||||||
|
iteritems = DictMixin.iteritems
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
if not self:
|
||||||
|
return '%s()' % (self.__class__.__name__,)
|
||||||
|
return '%s(%r)' % (self.__class__.__name__, self.items())
|
||||||
|
|
||||||
|
def copy(self):
|
||||||
|
return self.__class__(self)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def fromkeys(cls, iterable, value=None):
|
||||||
|
d = cls()
|
||||||
|
for key in iterable:
|
||||||
|
d[key] = value
|
||||||
|
return d
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
if isinstance(other, OrderedDict):
|
||||||
|
if len(self) != len(other):
|
||||||
|
return False
|
||||||
|
for p, q in zip(self.items(), other.items()):
|
||||||
|
if p != q:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
return dict.__eq__(self, other)
|
||||||
|
|
||||||
|
def __ne__(self, other):
|
||||||
|
return not self == other
|
|
@ -29,6 +29,7 @@ from pip.models import PyPI
|
||||||
from pip.utils import (splitext, rmtree, format_size, display_path,
|
from pip.utils import (splitext, rmtree, format_size, display_path,
|
||||||
backup_dir, ask_path_exists, unpack_file,
|
backup_dir, ask_path_exists, unpack_file,
|
||||||
ARCHIVE_EXTENSIONS, consume, call_subprocess)
|
ARCHIVE_EXTENSIONS, consume, call_subprocess)
|
||||||
|
from pip.utils.encoding import auto_decode
|
||||||
from pip.utils.filesystem import check_path_owner
|
from pip.utils.filesystem import check_path_owner
|
||||||
from pip.utils.logging import indent_log
|
from pip.utils.logging import indent_log
|
||||||
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
||||||
|
@ -38,7 +39,7 @@ from pip.vcs import vcs
|
||||||
from pip._vendor import requests, six
|
from pip._vendor import requests, six
|
||||||
from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter
|
from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter
|
||||||
from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth
|
from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth
|
||||||
from pip._vendor.requests.models import Response
|
from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response
|
||||||
from pip._vendor.requests.structures import CaseInsensitiveDict
|
from pip._vendor.requests.structures import CaseInsensitiveDict
|
||||||
from pip._vendor.requests.packages import urllib3
|
from pip._vendor.requests.packages import urllib3
|
||||||
from pip._vendor.cachecontrol import CacheControlAdapter
|
from pip._vendor.cachecontrol import CacheControlAdapter
|
||||||
|
@ -407,14 +408,10 @@ def get_file_content(url, comes_from=None, session=None):
|
||||||
# FIXME: catch some errors
|
# FIXME: catch some errors
|
||||||
resp = session.get(url)
|
resp = session.get(url)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
|
|
||||||
if six.PY3:
|
|
||||||
return resp.url, resp.text
|
return resp.url, resp.text
|
||||||
else:
|
|
||||||
return resp.url, resp.content
|
|
||||||
try:
|
try:
|
||||||
with open(url) as f:
|
with open(url, 'rb') as f:
|
||||||
content = f.read()
|
content = auto_decode(f.read())
|
||||||
except IOError as exc:
|
except IOError as exc:
|
||||||
raise InstallationError(
|
raise InstallationError(
|
||||||
'Could not open requirements file: %s' % str(exc)
|
'Could not open requirements file: %s' % str(exc)
|
||||||
|
@ -588,8 +585,12 @@ def _download_url(resp, link, content_file, hashes):
|
||||||
|
|
||||||
logger.debug('Downloading from URL %s', link)
|
logger.debug('Downloading from URL %s', link)
|
||||||
|
|
||||||
downloaded_chunks = written_chunks(progress_indicator(resp_read(4096),
|
downloaded_chunks = written_chunks(
|
||||||
4096))
|
progress_indicator(
|
||||||
|
resp_read(CONTENT_CHUNK_SIZE),
|
||||||
|
CONTENT_CHUNK_SIZE
|
||||||
|
)
|
||||||
|
)
|
||||||
if hashes:
|
if hashes:
|
||||||
hashes.check_against_chunks(downloaded_chunks)
|
hashes.check_against_chunks(downloaded_chunks)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -160,13 +160,16 @@ class HashMissing(HashError):
|
||||||
def body(self):
|
def body(self):
|
||||||
from pip.utils.hashes import FAVORITE_HASH # Dodge circular import.
|
from pip.utils.hashes import FAVORITE_HASH # Dodge circular import.
|
||||||
|
|
||||||
package_name = (self.req.req if self.req and
|
package = None
|
||||||
# In case someone feeds something
|
if self.req:
|
||||||
# downright stupid to
|
# In the case of URL-based requirements, display the original URL
|
||||||
# InstallRequirement's constructor:
|
# seen in the requirements file rather than the package name,
|
||||||
getattr(self.req, 'req', None)
|
# so the output can be directly copied into the requirements file.
|
||||||
else 'unknown package')
|
package = (self.req.original_link if self.req.original_link
|
||||||
return ' %s --hash=%s:%s' % (package_name,
|
# In case someone feeds something downright stupid
|
||||||
|
# to InstallRequirement's constructor.
|
||||||
|
else getattr(self.req, 'req', None))
|
||||||
|
return ' %s --hash=%s:%s' % (package or 'unknown package',
|
||||||
FAVORITE_HASH,
|
FAVORITE_HASH,
|
||||||
self.gotten_hash)
|
self.gotten_hash)
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,9 @@ from pip._vendor.six.moves.urllib import request as urllib_request
|
||||||
from pip.compat import ipaddress
|
from pip.compat import ipaddress
|
||||||
from pip.utils import (
|
from pip.utils import (
|
||||||
cached_property, splitext, normalize_path,
|
cached_property, splitext, normalize_path,
|
||||||
ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS, canonicalize_name)
|
ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS,
|
||||||
from pip.utils.deprecation import RemovedInPip9Warning
|
)
|
||||||
|
from pip.utils.deprecation import RemovedInPip9Warning, RemovedInPip10Warning
|
||||||
from pip.utils.logging import indent_log
|
from pip.utils.logging import indent_log
|
||||||
from pip.exceptions import (
|
from pip.exceptions import (
|
||||||
DistributionNotFound, BestVersionAlreadyInstalled, InvalidWheelFilename,
|
DistributionNotFound, BestVersionAlreadyInstalled, InvalidWheelFilename,
|
||||||
|
@ -30,6 +31,7 @@ from pip.wheel import Wheel, wheel_ext
|
||||||
from pip.pep425tags import supported_tags
|
from pip.pep425tags import supported_tags
|
||||||
from pip._vendor import html5lib, requests, six
|
from pip._vendor import html5lib, requests, six
|
||||||
from pip._vendor.packaging.version import parse as parse_version
|
from pip._vendor.packaging.version import parse as parse_version
|
||||||
|
from pip._vendor.packaging.utils import canonicalize_name
|
||||||
from pip._vendor.requests.exceptions import SSLError
|
from pip._vendor.requests.exceptions import SSLError
|
||||||
|
|
||||||
|
|
||||||
|
@ -291,7 +293,9 @@ class PackageFinder(object):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# We don't have both a valid address or a valid network, so
|
# We don't have both a valid address or a valid network, so
|
||||||
# we'll check this origin against hostnames.
|
# we'll check this origin against hostnames.
|
||||||
if origin[1] != secure_origin[1] and secure_origin[1] != "*":
|
if (origin[1] and
|
||||||
|
origin[1].lower() != secure_origin[1].lower() and
|
||||||
|
secure_origin[1] != "*"):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
# We have a valid address and network, so see if the address
|
# We have a valid address and network, so see if the address
|
||||||
|
@ -919,7 +923,7 @@ class Link(object):
|
||||||
scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url)
|
scheme, netloc, path, query, fragment = urllib_parse.urlsplit(self.url)
|
||||||
return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
|
return urllib_parse.urlunsplit((scheme, netloc, path, query, None))
|
||||||
|
|
||||||
_egg_fragment_re = re.compile(r'#egg=([^&]*)')
|
_egg_fragment_re = re.compile(r'[#&]egg=([^&]*)')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def egg_fragment(self):
|
def egg_fragment(self):
|
||||||
|
@ -928,6 +932,15 @@ class Link(object):
|
||||||
return None
|
return None
|
||||||
return match.group(1)
|
return match.group(1)
|
||||||
|
|
||||||
|
_subdirectory_fragment_re = re.compile(r'[#&]subdirectory=([^&]*)')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def subdirectory_fragment(self):
|
||||||
|
match = self._subdirectory_fragment_re.search(self.url)
|
||||||
|
if not match:
|
||||||
|
return None
|
||||||
|
return match.group(1)
|
||||||
|
|
||||||
_hash_re = re.compile(
|
_hash_re = re.compile(
|
||||||
r'(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)'
|
r'(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)'
|
||||||
)
|
)
|
||||||
|
@ -1019,7 +1032,7 @@ def fmt_ctl_no_use_wheel(fmt_ctl):
|
||||||
fmt_ctl_no_binary(fmt_ctl)
|
fmt_ctl_no_binary(fmt_ctl)
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
'--no-use-wheel is deprecated and will be removed in the future. '
|
'--no-use-wheel is deprecated and will be removed in the future. '
|
||||||
' Please use --no-binary :all: instead.', DeprecationWarning,
|
' Please use --no-binary :all: instead.', RemovedInPip10Warning,
|
||||||
stacklevel=2)
|
stacklevel=2)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,29 +4,27 @@ import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import pip
|
import pip
|
||||||
from pip.compat import stdlib_pkgs
|
|
||||||
from pip.req import InstallRequirement
|
from pip.req import InstallRequirement
|
||||||
from pip.utils import get_installed_distributions
|
from pip.utils import get_installed_distributions
|
||||||
from pip._vendor import pkg_resources
|
from pip._vendor import pkg_resources
|
||||||
|
from pip._vendor.packaging.utils import canonicalize_name
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# packages to exclude from freeze output
|
|
||||||
freeze_excludes = stdlib_pkgs + ['setuptools', 'pip', 'distribute']
|
|
||||||
|
|
||||||
|
|
||||||
def freeze(
|
def freeze(
|
||||||
requirement=None,
|
requirement=None,
|
||||||
find_links=None, local_only=None, user_only=None, skip_regex=None,
|
find_links=None, local_only=None, user_only=None, skip_regex=None,
|
||||||
default_vcs=None,
|
default_vcs=None,
|
||||||
isolated=False,
|
isolated=False,
|
||||||
wheel_cache=None):
|
wheel_cache=None,
|
||||||
|
skip=()):
|
||||||
find_links = find_links or []
|
find_links = find_links or []
|
||||||
skip_match = None
|
skip_match = None
|
||||||
|
|
||||||
if skip_regex:
|
if skip_regex:
|
||||||
skip_match = re.compile(skip_regex)
|
skip_match = re.compile(skip_regex).search
|
||||||
|
|
||||||
dependency_links = []
|
dependency_links = []
|
||||||
|
|
||||||
|
@ -42,7 +40,7 @@ def freeze(
|
||||||
yield '-f %s' % link
|
yield '-f %s' % link
|
||||||
installations = {}
|
installations = {}
|
||||||
for dist in get_installed_distributions(local_only=local_only,
|
for dist in get_installed_distributions(local_only=local_only,
|
||||||
skip=freeze_excludes,
|
skip=(),
|
||||||
user_only=user_only):
|
user_only=user_only):
|
||||||
req = pip.FrozenRequirement.from_dist(
|
req = pip.FrozenRequirement.from_dist(
|
||||||
dist,
|
dist,
|
||||||
|
@ -55,12 +53,15 @@ def freeze(
|
||||||
for line in req_file:
|
for line in req_file:
|
||||||
if (not line.strip() or
|
if (not line.strip() or
|
||||||
line.strip().startswith('#') or
|
line.strip().startswith('#') or
|
||||||
(skip_match and skip_match.search(line)) or
|
(skip_match and skip_match(line)) or
|
||||||
line.startswith((
|
line.startswith((
|
||||||
'-r', '--requirement',
|
'-r', '--requirement',
|
||||||
'-Z', '--always-unzip',
|
'-Z', '--always-unzip',
|
||||||
'-f', '--find-links',
|
'-f', '--find-links',
|
||||||
'-i', '--index-url',
|
'-i', '--index-url',
|
||||||
|
'--pre',
|
||||||
|
'--trusted-host',
|
||||||
|
'--process-dependency-links',
|
||||||
'--extra-index-url'))):
|
'--extra-index-url'))):
|
||||||
yield line.rstrip()
|
yield line.rstrip()
|
||||||
continue
|
continue
|
||||||
|
@ -109,4 +110,5 @@ def freeze(
|
||||||
)
|
)
|
||||||
for installation in sorted(
|
for installation in sorted(
|
||||||
installations.values(), key=lambda x: x.name.lower()):
|
installations.values(), key=lambda x: x.name.lower()):
|
||||||
|
if canonicalize_name(installation.name) not in skip:
|
||||||
yield str(installation).rstrip()
|
yield str(installation).rstrip()
|
||||||
|
|
|
@ -6,6 +6,7 @@ import sys
|
||||||
import warnings
|
import warnings
|
||||||
import platform
|
import platform
|
||||||
import logging
|
import logging
|
||||||
|
import ctypes
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import sysconfig
|
import sysconfig
|
||||||
|
@ -14,10 +15,11 @@ except ImportError: # pragma nocover
|
||||||
import distutils.sysconfig as sysconfig
|
import distutils.sysconfig as sysconfig
|
||||||
import distutils.util
|
import distutils.util
|
||||||
|
|
||||||
|
from pip.compat import OrderedDict
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
_osx_arch_pat = re.compile(r'(.+)_(\d+)_(\d+)_(.+)')
|
_osx_arch_pat = re.compile(r'(.+)_(\d+)_(\d+)_(.+)')
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,6 +116,10 @@ def get_abi_tag():
|
||||||
return abi
|
return abi
|
||||||
|
|
||||||
|
|
||||||
|
def _is_running_32bit():
|
||||||
|
return sys.maxsize == 2147483647
|
||||||
|
|
||||||
|
|
||||||
def get_platform():
|
def get_platform():
|
||||||
"""Return our platform name 'win32', 'linux_x86_64'"""
|
"""Return our platform name 'win32', 'linux_x86_64'"""
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
|
@ -122,9 +128,129 @@ def get_platform():
|
||||||
# be signficantly older than the user's current machine.
|
# be signficantly older than the user's current machine.
|
||||||
release, _, machine = platform.mac_ver()
|
release, _, machine = platform.mac_ver()
|
||||||
split_ver = release.split('.')
|
split_ver = release.split('.')
|
||||||
|
|
||||||
|
if machine == "x86_64" and _is_running_32bit():
|
||||||
|
machine = "i386"
|
||||||
|
elif machine == "ppc64" and _is_running_32bit():
|
||||||
|
machine = "ppc"
|
||||||
|
|
||||||
return 'macosx_{0}_{1}_{2}'.format(split_ver[0], split_ver[1], machine)
|
return 'macosx_{0}_{1}_{2}'.format(split_ver[0], split_ver[1], machine)
|
||||||
|
|
||||||
# XXX remove distutils dependency
|
# XXX remove distutils dependency
|
||||||
return distutils.util.get_platform().replace('.', '_').replace('-', '_')
|
result = distutils.util.get_platform().replace('.', '_').replace('-', '_')
|
||||||
|
if result == "linux_x86_64" and _is_running_32bit():
|
||||||
|
# 32 bit Python program (running on a 64 bit Linux): pip should only
|
||||||
|
# install and run 32 bit compiled extensions in that case.
|
||||||
|
result = "linux_i686"
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def is_manylinux1_compatible():
|
||||||
|
# Only Linux, and only x86-64 / i686
|
||||||
|
if get_platform() not in ("linux_x86_64", "linux_i686"):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Check for presence of _manylinux module
|
||||||
|
try:
|
||||||
|
import _manylinux
|
||||||
|
return bool(_manylinux.manylinux1_compatible)
|
||||||
|
except (ImportError, AttributeError):
|
||||||
|
# Fall through to heuristic check below
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Check glibc version. CentOS 5 uses glibc 2.5.
|
||||||
|
return have_compatible_glibc(2, 5)
|
||||||
|
|
||||||
|
|
||||||
|
def have_compatible_glibc(major, minimum_minor):
|
||||||
|
# ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
|
||||||
|
# manpage says, "If filename is NULL, then the returned handle is for the
|
||||||
|
# main program". This way we can let the linker do the work to figure out
|
||||||
|
# which libc our process is actually using.
|
||||||
|
process_namespace = ctypes.CDLL(None)
|
||||||
|
try:
|
||||||
|
gnu_get_libc_version = process_namespace.gnu_get_libc_version
|
||||||
|
except AttributeError:
|
||||||
|
# Symbol doesn't exist -> therefore, we are not linked to
|
||||||
|
# glibc.
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Call gnu_get_libc_version, which returns a string like "2.5".
|
||||||
|
gnu_get_libc_version.restype = ctypes.c_char_p
|
||||||
|
version_str = gnu_get_libc_version()
|
||||||
|
# py2 / py3 compatibility:
|
||||||
|
if not isinstance(version_str, str):
|
||||||
|
version_str = version_str.decode("ascii")
|
||||||
|
|
||||||
|
# Parse string and check against requested version.
|
||||||
|
version = [int(piece) for piece in version_str.split(".")]
|
||||||
|
if len(version) < 2:
|
||||||
|
warnings.warn("Expected glibc version with 2 components major.minor,"
|
||||||
|
" got: %s" % version_str, RuntimeWarning)
|
||||||
|
return False
|
||||||
|
return version[0] == major and version[1] >= minimum_minor
|
||||||
|
|
||||||
|
|
||||||
|
def get_darwin_arches(major, minor, machine):
|
||||||
|
"""Return a list of supported arches (including group arches) for
|
||||||
|
the given major, minor and machine architecture of an OS X machine.
|
||||||
|
"""
|
||||||
|
arches = []
|
||||||
|
|
||||||
|
def _supports_arch(major, minor, arch):
|
||||||
|
# Looking at the application support for OS X versions in the chart
|
||||||
|
# provided by https://en.wikipedia.org/wiki/OS_X#Versions it appears
|
||||||
|
# our timeline looks roughly like:
|
||||||
|
#
|
||||||
|
# 10.0 - Introduces ppc support.
|
||||||
|
# 10.4 - Introduces ppc64, i386, and x86_64 support, however the ppc64
|
||||||
|
# and x86_64 support is CLI only, and cannot be used for GUI
|
||||||
|
# applications.
|
||||||
|
# 10.5 - Extends ppc64 and x86_64 support to cover GUI applications.
|
||||||
|
# 10.6 - Drops support for ppc64
|
||||||
|
# 10.7 - Drops support for ppc
|
||||||
|
#
|
||||||
|
# Given that we do not know if we're installing a CLI or a GUI
|
||||||
|
# application, we must be conservative and assume it might be a GUI
|
||||||
|
# application and behave as if ppc64 and x86_64 support did not occur
|
||||||
|
# until 10.5.
|
||||||
|
#
|
||||||
|
# Note: The above information is taken from the "Application support"
|
||||||
|
# column in the chart not the "Processor support" since I believe
|
||||||
|
# that we care about what instruction sets an application can use
|
||||||
|
# not which processors the OS supports.
|
||||||
|
if arch == 'ppc':
|
||||||
|
return (major, minor) <= (10, 5)
|
||||||
|
if arch == 'ppc64':
|
||||||
|
return (major, minor) == (10, 5)
|
||||||
|
if arch == 'i386':
|
||||||
|
return (major, minor) >= (10, 4)
|
||||||
|
if arch == 'x86_64':
|
||||||
|
return (major, minor) >= (10, 5)
|
||||||
|
if arch in groups:
|
||||||
|
for garch in groups[arch]:
|
||||||
|
if _supports_arch(major, minor, garch):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
groups = OrderedDict([
|
||||||
|
("fat", ("i386", "ppc")),
|
||||||
|
("intel", ("x86_64", "i386")),
|
||||||
|
("fat64", ("x86_64", "ppc64")),
|
||||||
|
("fat32", ("x86_64", "i386", "ppc")),
|
||||||
|
])
|
||||||
|
|
||||||
|
if _supports_arch(major, minor, machine):
|
||||||
|
arches.append(machine)
|
||||||
|
|
||||||
|
for garch in groups:
|
||||||
|
if machine in groups[garch] and _supports_arch(major, minor, garch):
|
||||||
|
arches.append(garch)
|
||||||
|
|
||||||
|
arches.append('universal')
|
||||||
|
|
||||||
|
return arches
|
||||||
|
|
||||||
|
|
||||||
def get_supported(versions=None, noarch=False):
|
def get_supported(versions=None, noarch=False):
|
||||||
|
@ -170,25 +296,16 @@ def get_supported(versions=None, noarch=False):
|
||||||
match = _osx_arch_pat.match(arch)
|
match = _osx_arch_pat.match(arch)
|
||||||
if match:
|
if match:
|
||||||
name, major, minor, actual_arch = match.groups()
|
name, major, minor, actual_arch = match.groups()
|
||||||
actual_arches = [actual_arch]
|
|
||||||
if actual_arch in ('i386', 'ppc'):
|
|
||||||
actual_arches.append('fat')
|
|
||||||
if actual_arch in ('i386', 'x86_64'):
|
|
||||||
actual_arches.append('intel')
|
|
||||||
if actual_arch in ('ppc64', 'x86_64'):
|
|
||||||
actual_arches.append('fat64')
|
|
||||||
if actual_arch in ('i386', 'ppc', 'x86_64'):
|
|
||||||
actual_arches.append('fat32')
|
|
||||||
if actual_arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'):
|
|
||||||
actual_arches.append('universal')
|
|
||||||
tpl = '{0}_{1}_%i_%s'.format(name, major)
|
tpl = '{0}_{1}_%i_%s'.format(name, major)
|
||||||
arches = []
|
arches = []
|
||||||
for m in reversed(range(int(minor) + 1)):
|
for m in reversed(range(int(minor) + 1)):
|
||||||
for a in actual_arches:
|
for a in get_darwin_arches(int(major), m, actual_arch):
|
||||||
arches.append(tpl % (m, a))
|
arches.append(tpl % (m, a))
|
||||||
else:
|
else:
|
||||||
# arch pattern didn't match (?!)
|
# arch pattern didn't match (?!)
|
||||||
arches = [arch]
|
arches = [arch]
|
||||||
|
elif is_manylinux1_compatible():
|
||||||
|
arches = [arch.replace('linux', 'manylinux1'), arch]
|
||||||
else:
|
else:
|
||||||
arches = [arch]
|
arches = [arch]
|
||||||
|
|
||||||
|
@ -198,12 +315,11 @@ def get_supported(versions=None, noarch=False):
|
||||||
supported.append(('%s%s' % (impl, versions[0]), abi, arch))
|
supported.append(('%s%s' % (impl, versions[0]), abi, arch))
|
||||||
|
|
||||||
# Has binaries, does not use the Python API:
|
# Has binaries, does not use the Python API:
|
||||||
|
for arch in arches:
|
||||||
supported.append(('py%s' % (versions[0][0]), 'none', arch))
|
supported.append(('py%s' % (versions[0][0]), 'none', arch))
|
||||||
|
|
||||||
# No abi / arch, but requires our implementation:
|
# No abi / arch, but requires our implementation:
|
||||||
for i, version in enumerate(versions):
|
supported.append(('%s%s' % (impl, versions[0]), 'none', 'any'))
|
||||||
supported.append(('%s%s' % (impl, version), 'none', 'any'))
|
|
||||||
if i == 0:
|
|
||||||
# Tagged specifically as being cross-version compatible
|
# Tagged specifically as being cross-version compatible
|
||||||
# (with just the major version specified)
|
# (with just the major version specified)
|
||||||
supported.append(('%s%s' % (impl, versions[0][0]), 'none', 'any'))
|
supported.append(('%s%s' % (impl, versions[0][0]), 'none', 'any'))
|
||||||
|
|
|
@ -7,6 +7,7 @@ from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shlex
|
import shlex
|
||||||
|
import sys
|
||||||
import optparse
|
import optparse
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
|
@ -133,6 +134,9 @@ def process_line(line, filename, line_number, finder=None, comes_from=None,
|
||||||
# `finder.format_control` will be updated during parsing
|
# `finder.format_control` will be updated during parsing
|
||||||
defaults.format_control = finder.format_control
|
defaults.format_control = finder.format_control
|
||||||
args_str, options_str = break_args_options(line)
|
args_str, options_str = break_args_options(line)
|
||||||
|
if sys.version_info < (2, 7, 3):
|
||||||
|
# Priori to 2.7.3, shlex can not deal with unicode entries
|
||||||
|
options_str = options_str.encode('utf8')
|
||||||
opts, _ = parser.parse_args(shlex.split(options_str), defaults)
|
opts, _ = parser.parse_args(shlex.split(options_str), defaults)
|
||||||
|
|
||||||
# preserve for the nested code path
|
# preserve for the nested code path
|
||||||
|
|
|
@ -17,6 +17,7 @@ from email.parser import FeedParser
|
||||||
from pip._vendor import pkg_resources, six
|
from pip._vendor import pkg_resources, six
|
||||||
from pip._vendor.distlib.markers import interpret as markers_interpret
|
from pip._vendor.distlib.markers import interpret as markers_interpret
|
||||||
from pip._vendor.packaging import specifiers
|
from pip._vendor.packaging import specifiers
|
||||||
|
from pip._vendor.packaging.utils import canonicalize_name
|
||||||
from pip._vendor.six.moves import configparser
|
from pip._vendor.six.moves import configparser
|
||||||
|
|
||||||
import pip.wheel
|
import pip.wheel
|
||||||
|
@ -33,11 +34,11 @@ from pip.utils import (
|
||||||
display_path, rmtree, ask_path_exists, backup_dir, is_installable_dir,
|
display_path, rmtree, ask_path_exists, backup_dir, is_installable_dir,
|
||||||
dist_in_usersite, dist_in_site_packages, egg_link_path,
|
dist_in_usersite, dist_in_site_packages, egg_link_path,
|
||||||
call_subprocess, read_text_file, FakeFile, _make_build_dir, ensure_dir,
|
call_subprocess, read_text_file, FakeFile, _make_build_dir, ensure_dir,
|
||||||
get_installed_version, canonicalize_name, normalize_path, dist_is_local,
|
get_installed_version, normalize_path, dist_is_local,
|
||||||
)
|
)
|
||||||
|
|
||||||
from pip.utils.hashes import Hashes
|
from pip.utils.hashes import Hashes
|
||||||
from pip.utils.deprecation import RemovedInPip10Warning
|
from pip.utils.deprecation import RemovedInPip9Warning, RemovedInPip10Warning
|
||||||
from pip.utils.logging import indent_log
|
from pip.utils.logging import indent_log
|
||||||
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
||||||
from pip.utils.ui import open_spinner
|
from pip.utils.ui import open_spinner
|
||||||
|
@ -67,7 +68,7 @@ def _strip_extras(path):
|
||||||
class InstallRequirement(object):
|
class InstallRequirement(object):
|
||||||
|
|
||||||
def __init__(self, req, comes_from, source_dir=None, editable=False,
|
def __init__(self, req, comes_from, source_dir=None, editable=False,
|
||||||
link=None, as_egg=False, update=True, editable_options=None,
|
link=None, as_egg=False, update=True,
|
||||||
pycompile=True, markers=None, isolated=False, options=None,
|
pycompile=True, markers=None, isolated=False, options=None,
|
||||||
wheel_cache=None, constraint=False):
|
wheel_cache=None, constraint=False):
|
||||||
self.extras = ()
|
self.extras = ()
|
||||||
|
@ -91,10 +92,6 @@ class InstallRequirement(object):
|
||||||
self.source_dir = source_dir
|
self.source_dir = source_dir
|
||||||
self.editable = editable
|
self.editable = editable
|
||||||
|
|
||||||
if editable_options is None:
|
|
||||||
editable_options = {}
|
|
||||||
|
|
||||||
self.editable_options = editable_options
|
|
||||||
self._wheel_cache = wheel_cache
|
self._wheel_cache = wheel_cache
|
||||||
self.link = self.original_link = link
|
self.link = self.original_link = link
|
||||||
self.as_egg = as_egg
|
self.as_egg = as_egg
|
||||||
|
@ -135,7 +132,7 @@ class InstallRequirement(object):
|
||||||
constraint=False):
|
constraint=False):
|
||||||
from pip.index import Link
|
from pip.index import Link
|
||||||
|
|
||||||
name, url, extras_override, editable_options = parse_editable(
|
name, url, extras_override = parse_editable(
|
||||||
editable_req, default_vcs)
|
editable_req, default_vcs)
|
||||||
if url.startswith('file:'):
|
if url.startswith('file:'):
|
||||||
source_dir = url_to_path(url)
|
source_dir = url_to_path(url)
|
||||||
|
@ -146,7 +143,6 @@ class InstallRequirement(object):
|
||||||
editable=True,
|
editable=True,
|
||||||
link=Link(url),
|
link=Link(url),
|
||||||
constraint=constraint,
|
constraint=constraint,
|
||||||
editable_options=editable_options,
|
|
||||||
isolated=isolated,
|
isolated=isolated,
|
||||||
options=options if options else {},
|
options=options if options else {},
|
||||||
wheel_cache=wheel_cache)
|
wheel_cache=wheel_cache)
|
||||||
|
@ -368,6 +364,12 @@ class InstallRequirement(object):
|
||||||
return None
|
return None
|
||||||
return native_str(self.req.project_name)
|
return native_str(self.req.project_name)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def setup_py_dir(self):
|
||||||
|
return os.path.join(
|
||||||
|
self.source_dir,
|
||||||
|
self.link and self.link.subdirectory_fragment or '')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def setup_py(self):
|
def setup_py(self):
|
||||||
assert self.source_dir, "No source dir for %s" % self
|
assert self.source_dir, "No source dir for %s" % self
|
||||||
|
@ -384,15 +386,7 @@ class InstallRequirement(object):
|
||||||
"install from a source distribution.\n%s" % add_msg
|
"install from a source distribution.\n%s" % add_msg
|
||||||
)
|
)
|
||||||
|
|
||||||
setup_file = 'setup.py'
|
setup_py = os.path.join(self.setup_py_dir, 'setup.py')
|
||||||
|
|
||||||
if self.editable_options and 'subdirectory' in self.editable_options:
|
|
||||||
setup_py = os.path.join(self.source_dir,
|
|
||||||
self.editable_options['subdirectory'],
|
|
||||||
setup_file)
|
|
||||||
|
|
||||||
else:
|
|
||||||
setup_py = os.path.join(self.source_dir, setup_file)
|
|
||||||
|
|
||||||
# Python2 __file__ should not be unicode
|
# Python2 __file__ should not be unicode
|
||||||
if six.PY2 and isinstance(setup_py, six.text_type):
|
if six.PY2 and isinstance(setup_py, six.text_type):
|
||||||
|
@ -425,16 +419,12 @@ class InstallRequirement(object):
|
||||||
if self.editable:
|
if self.editable:
|
||||||
egg_base_option = []
|
egg_base_option = []
|
||||||
else:
|
else:
|
||||||
egg_info_dir = os.path.join(self.source_dir, 'pip-egg-info')
|
egg_info_dir = os.path.join(self.setup_py_dir, 'pip-egg-info')
|
||||||
ensure_dir(egg_info_dir)
|
ensure_dir(egg_info_dir)
|
||||||
egg_base_option = ['--egg-base', 'pip-egg-info']
|
egg_base_option = ['--egg-base', 'pip-egg-info']
|
||||||
cwd = self.source_dir
|
|
||||||
if self.editable_options and \
|
|
||||||
'subdirectory' in self.editable_options:
|
|
||||||
cwd = os.path.join(cwd, self.editable_options['subdirectory'])
|
|
||||||
call_subprocess(
|
call_subprocess(
|
||||||
egg_info_cmd + egg_base_option,
|
egg_info_cmd + egg_base_option,
|
||||||
cwd=cwd,
|
cwd=self.setup_py_dir,
|
||||||
show_stdout=False,
|
show_stdout=False,
|
||||||
command_level=logging.DEBUG,
|
command_level=logging.DEBUG,
|
||||||
command_desc='python setup.py egg_info')
|
command_desc='python setup.py egg_info')
|
||||||
|
@ -481,7 +471,7 @@ class InstallRequirement(object):
|
||||||
if self.editable:
|
if self.editable:
|
||||||
base = self.source_dir
|
base = self.source_dir
|
||||||
else:
|
else:
|
||||||
base = os.path.join(self.source_dir, 'pip-egg-info')
|
base = os.path.join(self.setup_py_dir, 'pip-egg-info')
|
||||||
filenames = os.listdir(base)
|
filenames = os.listdir(base)
|
||||||
if self.editable:
|
if self.editable:
|
||||||
filenames = []
|
filenames = []
|
||||||
|
@ -727,7 +717,11 @@ class InstallRequirement(object):
|
||||||
|
|
||||||
# find console_scripts
|
# find console_scripts
|
||||||
if dist.has_metadata('entry_points.txt'):
|
if dist.has_metadata('entry_points.txt'):
|
||||||
config = configparser.SafeConfigParser()
|
if six.PY2:
|
||||||
|
options = {}
|
||||||
|
else:
|
||||||
|
options = {"delimiters": ('=', )}
|
||||||
|
config = configparser.SafeConfigParser(**options)
|
||||||
config.readfp(
|
config.readfp(
|
||||||
FakeFile(dist.get_metadata_lines('entry_points.txt'))
|
FakeFile(dist.get_metadata_lines('entry_points.txt'))
|
||||||
)
|
)
|
||||||
|
@ -795,7 +789,7 @@ class InstallRequirement(object):
|
||||||
archive_path, 'w', zipfile.ZIP_DEFLATED,
|
archive_path, 'w', zipfile.ZIP_DEFLATED,
|
||||||
allowZip64=True
|
allowZip64=True
|
||||||
)
|
)
|
||||||
dir = os.path.normcase(os.path.abspath(self.source_dir))
|
dir = os.path.normcase(os.path.abspath(self.setup_py_dir))
|
||||||
for dirpath, dirnames, filenames in os.walk(dir):
|
for dirpath, dirnames, filenames in os.walk(dir):
|
||||||
if 'pip-egg-info' in dirnames:
|
if 'pip-egg-info' in dirnames:
|
||||||
dirnames.remove('pip-egg-info')
|
dirnames.remove('pip-egg-info')
|
||||||
|
@ -885,7 +879,7 @@ class InstallRequirement(object):
|
||||||
with indent_log():
|
with indent_log():
|
||||||
call_subprocess(
|
call_subprocess(
|
||||||
install_args + install_options,
|
install_args + install_options,
|
||||||
cwd=self.source_dir,
|
cwd=self.setup_py_dir,
|
||||||
show_stdout=False,
|
show_stdout=False,
|
||||||
spinner=spinner,
|
spinner=spinner,
|
||||||
)
|
)
|
||||||
|
@ -977,10 +971,6 @@ class InstallRequirement(object):
|
||||||
|
|
||||||
with indent_log():
|
with indent_log():
|
||||||
# FIXME: should we do --install-headers here too?
|
# FIXME: should we do --install-headers here too?
|
||||||
cwd = self.source_dir
|
|
||||||
if self.editable_options and \
|
|
||||||
'subdirectory' in self.editable_options:
|
|
||||||
cwd = os.path.join(cwd, self.editable_options['subdirectory'])
|
|
||||||
call_subprocess(
|
call_subprocess(
|
||||||
[
|
[
|
||||||
sys.executable,
|
sys.executable,
|
||||||
|
@ -991,7 +981,7 @@ class InstallRequirement(object):
|
||||||
['develop', '--no-deps'] +
|
['develop', '--no-deps'] +
|
||||||
list(install_options),
|
list(install_options),
|
||||||
|
|
||||||
cwd=cwd,
|
cwd=self.setup_py_dir,
|
||||||
show_stdout=False)
|
show_stdout=False)
|
||||||
|
|
||||||
self.install_succeeded = True
|
self.install_succeeded = True
|
||||||
|
@ -1100,33 +1090,19 @@ def _build_req_from_url(url):
|
||||||
parts = [p for p in url.split('#', 1)[0].split('/') if p]
|
parts = [p for p in url.split('#', 1)[0].split('/') if p]
|
||||||
|
|
||||||
req = None
|
req = None
|
||||||
if parts[-2] in ('tags', 'branches', 'tag', 'branch'):
|
if len(parts) > 2 and parts[-2] in ('tags', 'branches', 'tag', 'branch'):
|
||||||
req = parts[-3]
|
req = parts[-3]
|
||||||
elif parts[-1] == 'trunk':
|
elif len(parts) > 1 and parts[-1] == 'trunk':
|
||||||
req = parts[-2]
|
req = parts[-2]
|
||||||
|
if req:
|
||||||
|
warnings.warn(
|
||||||
|
'Sniffing the requirement name from the url is deprecated and '
|
||||||
|
'will be removed in the future. Please specify an #egg segment '
|
||||||
|
'instead.', RemovedInPip9Warning,
|
||||||
|
stacklevel=2)
|
||||||
return req
|
return req
|
||||||
|
|
||||||
|
|
||||||
def _build_editable_options(req):
|
|
||||||
|
|
||||||
"""
|
|
||||||
This method generates a dictionary of the query string
|
|
||||||
parameters contained in a given editable URL.
|
|
||||||
"""
|
|
||||||
regexp = re.compile(r"[\?#&](?P<name>[^&=]+)=(?P<value>[^&=]+)")
|
|
||||||
matched = regexp.findall(req)
|
|
||||||
|
|
||||||
if matched:
|
|
||||||
ret = dict()
|
|
||||||
for option in matched:
|
|
||||||
(name, value) = option
|
|
||||||
if name in ret:
|
|
||||||
raise Exception("%s option already defined" % name)
|
|
||||||
ret[name] = value
|
|
||||||
return ret
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def parse_editable(editable_req, default_vcs=None):
|
def parse_editable(editable_req, default_vcs=None):
|
||||||
"""Parses an editable requirement into:
|
"""Parses an editable requirement into:
|
||||||
- a requirement name
|
- a requirement name
|
||||||
|
@ -1169,10 +1145,9 @@ def parse_editable(editable_req, default_vcs=None):
|
||||||
pkg_resources.Requirement.parse(
|
pkg_resources.Requirement.parse(
|
||||||
'__placeholder__' + extras
|
'__placeholder__' + extras
|
||||||
).extras,
|
).extras,
|
||||||
{},
|
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return package_name, url_no_extras, None, {}
|
return package_name, url_no_extras, None
|
||||||
|
|
||||||
for version_control in vcs:
|
for version_control in vcs:
|
||||||
if url.lower().startswith('%s:' % version_control):
|
if url.lower().startswith('%s:' % version_control):
|
||||||
|
@ -1197,21 +1172,12 @@ def parse_editable(editable_req, default_vcs=None):
|
||||||
' is currently supported'
|
' is currently supported'
|
||||||
raise InstallationError(error_message)
|
raise InstallationError(error_message)
|
||||||
|
|
||||||
try:
|
package_name = Link(url).egg_fragment
|
||||||
options = _build_editable_options(editable_req)
|
if not package_name:
|
||||||
except Exception as exc:
|
package_name = _build_req_from_url(editable_req)
|
||||||
raise InstallationError(
|
if not package_name:
|
||||||
'--editable=%s error in editable options:%s' % (editable_req, exc)
|
|
||||||
)
|
|
||||||
if not options or 'egg' not in options:
|
|
||||||
req = _build_req_from_url(editable_req)
|
|
||||||
if not req:
|
|
||||||
raise InstallationError(
|
raise InstallationError(
|
||||||
'--editable=%s is not the right format; it must have '
|
'--editable=%s is not the right format; it must have '
|
||||||
'#egg=Package' % editable_req
|
'#egg=Package' % editable_req
|
||||||
)
|
)
|
||||||
else:
|
return _strip_postfix(package_name), url, None
|
||||||
req = options['egg']
|
|
||||||
|
|
||||||
package = _strip_postfix(req)
|
|
||||||
return package, url, None, options
|
|
||||||
|
|
|
@ -242,7 +242,8 @@ class RequirementSet(object):
|
||||||
existing_req = None
|
existing_req = None
|
||||||
if (parent_req_name is None and existing_req and not
|
if (parent_req_name is None and existing_req and not
|
||||||
existing_req.constraint and
|
existing_req.constraint and
|
||||||
existing_req.extras == install_req.extras):
|
existing_req.extras == install_req.extras and not
|
||||||
|
existing_req.req.specs == install_req.req.specs):
|
||||||
raise InstallationError(
|
raise InstallationError(
|
||||||
'Double requirement given: %s (already in %s, name=%r)'
|
'Double requirement given: %s (already in %s, name=%r)'
|
||||||
% (install_req, existing_req, name))
|
% (install_req, existing_req, name))
|
||||||
|
|
|
@ -3,6 +3,7 @@ from __future__ import absolute_import
|
||||||
from collections import deque
|
from collections import deque
|
||||||
import contextlib
|
import contextlib
|
||||||
import errno
|
import errno
|
||||||
|
import io
|
||||||
import locale
|
import locale
|
||||||
# we have a submodule named 'logging' which would shadow this if we used the
|
# we have a submodule named 'logging' which would shadow this if we used the
|
||||||
# regular name:
|
# regular name:
|
||||||
|
@ -38,7 +39,7 @@ __all__ = ['rmtree', 'display_path', 'backup_dir',
|
||||||
'format_size', 'is_installable_dir',
|
'format_size', 'is_installable_dir',
|
||||||
'is_svn_page', 'file_contents',
|
'is_svn_page', 'file_contents',
|
||||||
'split_leading_dir', 'has_leading_dir',
|
'split_leading_dir', 'has_leading_dir',
|
||||||
'normalize_path', 'canonicalize_name',
|
'normalize_path',
|
||||||
'renames', 'get_terminal_size', 'get_prog',
|
'renames', 'get_terminal_size', 'get_prog',
|
||||||
'unzip_file', 'untar_file', 'unpack_file', 'call_subprocess',
|
'unzip_file', 'untar_file', 'unpack_file', 'call_subprocess',
|
||||||
'captured_stdout', 'remove_tracebacks', 'ensure_dir',
|
'captured_stdout', 'remove_tracebacks', 'ensure_dir',
|
||||||
|
@ -199,7 +200,7 @@ def file_contents(filename):
|
||||||
return fp.read().decode('utf-8')
|
return fp.read().decode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
def read_chunks(file, size=4096):
|
def read_chunks(file, size=io.DEFAULT_BUFFER_SIZE):
|
||||||
"""Yield pieces of data from a file-like object until EOF."""
|
"""Yield pieces of data from a file-like object until EOF."""
|
||||||
while True:
|
while True:
|
||||||
chunk = file.read(size)
|
chunk = file.read(size)
|
||||||
|
@ -653,6 +654,31 @@ def call_subprocess(cmd, show_stdout=True, cwd=None,
|
||||||
on_returncode='raise',
|
on_returncode='raise',
|
||||||
command_level=std_logging.DEBUG, command_desc=None,
|
command_level=std_logging.DEBUG, command_desc=None,
|
||||||
extra_environ=None, spinner=None):
|
extra_environ=None, spinner=None):
|
||||||
|
# This function's handling of subprocess output is confusing and I
|
||||||
|
# previously broke it terribly, so as penance I will write a long comment
|
||||||
|
# explaining things.
|
||||||
|
#
|
||||||
|
# The obvious thing that affects output is the show_stdout=
|
||||||
|
# kwarg. show_stdout=True means, let the subprocess write directly to our
|
||||||
|
# stdout. Even though it is nominally the default, it is almost never used
|
||||||
|
# inside pip (and should not be used in new code without a very good
|
||||||
|
# reason); as of 2016-02-22 it is only used in a few places inside the VCS
|
||||||
|
# wrapper code. Ideally we should get rid of it entirely, because it
|
||||||
|
# creates a lot of complexity here for a rarely used feature.
|
||||||
|
#
|
||||||
|
# Most places in pip set show_stdout=False. What this means is:
|
||||||
|
# - We connect the child stdout to a pipe, which we read.
|
||||||
|
# - By default, we hide the output but show a spinner -- unless the
|
||||||
|
# subprocess exits with an error, in which case we show the output.
|
||||||
|
# - If the --verbose option was passed (= loglevel is DEBUG), then we show
|
||||||
|
# the output unconditionally. (But in this case we don't want to show
|
||||||
|
# the output a second time if it turns out that there was an error.)
|
||||||
|
#
|
||||||
|
# stderr is always merged with stdout (even if show_stdout=True).
|
||||||
|
if show_stdout:
|
||||||
|
stdout = None
|
||||||
|
else:
|
||||||
|
stdout = subprocess.PIPE
|
||||||
if command_desc is None:
|
if command_desc is None:
|
||||||
cmd_parts = []
|
cmd_parts = []
|
||||||
for part in cmd:
|
for part in cmd:
|
||||||
|
@ -666,13 +692,14 @@ def call_subprocess(cmd, show_stdout=True, cwd=None,
|
||||||
env.update(extra_environ)
|
env.update(extra_environ)
|
||||||
try:
|
try:
|
||||||
proc = subprocess.Popen(
|
proc = subprocess.Popen(
|
||||||
cmd, stderr=subprocess.STDOUT, stdin=None, stdout=subprocess.PIPE,
|
cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
|
||||||
cwd=cwd, env=env)
|
cwd=cwd, env=env)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logger.critical(
|
logger.critical(
|
||||||
"Error %s while executing command %s", exc, command_desc,
|
"Error %s while executing command %s", exc, command_desc,
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
|
if stdout is not None:
|
||||||
all_output = []
|
all_output = []
|
||||||
while True:
|
while True:
|
||||||
line = console_to_str(proc.stdout.readline())
|
line = console_to_str(proc.stdout.readline())
|
||||||
|
@ -680,8 +707,11 @@ def call_subprocess(cmd, show_stdout=True, cwd=None,
|
||||||
break
|
break
|
||||||
line = line.rstrip()
|
line = line.rstrip()
|
||||||
all_output.append(line + '\n')
|
all_output.append(line + '\n')
|
||||||
if show_stdout:
|
if logger.getEffectiveLevel() <= std_logging.DEBUG:
|
||||||
|
# Show the line immediately
|
||||||
logger.debug(line)
|
logger.debug(line)
|
||||||
|
else:
|
||||||
|
# Update the spinner
|
||||||
if spinner is not None:
|
if spinner is not None:
|
||||||
spinner.spin()
|
spinner.spin()
|
||||||
proc.wait()
|
proc.wait()
|
||||||
|
@ -692,7 +722,8 @@ def call_subprocess(cmd, show_stdout=True, cwd=None,
|
||||||
spinner.finish("done")
|
spinner.finish("done")
|
||||||
if proc.returncode:
|
if proc.returncode:
|
||||||
if on_returncode == 'raise':
|
if on_returncode == 'raise':
|
||||||
if all_output:
|
if (logger.getEffectiveLevel() > std_logging.DEBUG and
|
||||||
|
not show_stdout):
|
||||||
logger.info(
|
logger.info(
|
||||||
'Complete output from command %s:', command_desc,
|
'Complete output from command %s:', command_desc,
|
||||||
)
|
)
|
||||||
|
@ -842,11 +873,6 @@ def get_installed_version(dist_name):
|
||||||
return dist.version if dist else None
|
return dist.version if dist else None
|
||||||
|
|
||||||
|
|
||||||
def canonicalize_name(name):
|
|
||||||
"""Convert an arbitrary string to a canonical name used for comparison"""
|
|
||||||
return pkg_resources.safe_name(name).lower()
|
|
||||||
|
|
||||||
|
|
||||||
def consume(iterator):
|
def consume(iterator):
|
||||||
"""Consume an iterable at C speed."""
|
"""Consume an iterable at C speed."""
|
||||||
deque(iterator, maxlen=0)
|
deque(iterator, maxlen=0)
|
||||||
|
|
|
@ -11,23 +11,20 @@ class PipDeprecationWarning(Warning):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class RemovedInPip9Warning(PipDeprecationWarning, DeprecationWarning):
|
class Pending(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class RemovedInPip10Warning(PipDeprecationWarning, PendingDeprecationWarning):
|
class RemovedInPip9Warning(PipDeprecationWarning):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Python26DeprecationWarning(
|
class RemovedInPip10Warning(PipDeprecationWarning, Pending):
|
||||||
PipDeprecationWarning, PendingDeprecationWarning
|
|
||||||
):
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
DEPRECATIONS = [
|
class Python26DeprecationWarning(PipDeprecationWarning, Pending):
|
||||||
RemovedInPip9Warning, RemovedInPip10Warning, Python26DeprecationWarning
|
pass
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# Warnings <-> Logging Integration
|
# Warnings <-> Logging Integration
|
||||||
|
@ -53,15 +50,15 @@ def _showwarning(message, category, filename, lineno, file=None, line=None):
|
||||||
# want it to appear as if someone typed this entire message out.
|
# want it to appear as if someone typed this entire message out.
|
||||||
log_message = "DEPRECATION: %s" % message
|
log_message = "DEPRECATION: %s" % message
|
||||||
|
|
||||||
# Things that are DeprecationWarnings will be removed in the very
|
# PipDeprecationWarnings that are Pending still have at least 2
|
||||||
# next version of pip. We want these to be more obvious so we
|
# versions to go until they are removed so they can just be
|
||||||
# use the ERROR logging level while the PendingDeprecationWarnings
|
# warnings. Otherwise, they will be removed in the very next
|
||||||
# are still have at least 2 versions to go until they are removed
|
# version of pip. We want these to be more obvious so we use the
|
||||||
# so they can just be warnings.
|
# ERROR logging level.
|
||||||
if issubclass(category, DeprecationWarning):
|
if issubclass(category, Pending):
|
||||||
logger.error(log_message)
|
|
||||||
else:
|
|
||||||
logger.warning(log_message)
|
logger.warning(log_message)
|
||||||
|
else:
|
||||||
|
logger.error(log_message)
|
||||||
else:
|
else:
|
||||||
_warnings_showwarning(
|
_warnings_showwarning(
|
||||||
message, category, filename, lineno, file, line,
|
message, category, filename, lineno, file, line,
|
||||||
|
@ -69,6 +66,9 @@ def _showwarning(message, category, filename, lineno, file=None, line=None):
|
||||||
|
|
||||||
|
|
||||||
def install_warning_logger():
|
def install_warning_logger():
|
||||||
|
# Enable our Deprecation Warnings
|
||||||
|
warnings.simplefilter("default", PipDeprecationWarning, append=True)
|
||||||
|
|
||||||
global _warnings_showwarning
|
global _warnings_showwarning
|
||||||
|
|
||||||
if _warnings_showwarning is None:
|
if _warnings_showwarning is None:
|
||||||
|
|
31
lib/python3.4/site-packages/pip/utils/encoding.py
Normal file
31
lib/python3.4/site-packages/pip/utils/encoding.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import codecs
|
||||||
|
import locale
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
BOMS = [
|
||||||
|
(codecs.BOM_UTF8, 'utf8'),
|
||||||
|
(codecs.BOM_UTF16, 'utf16'),
|
||||||
|
(codecs.BOM_UTF16_BE, 'utf16-be'),
|
||||||
|
(codecs.BOM_UTF16_LE, 'utf16-le'),
|
||||||
|
(codecs.BOM_UTF32, 'utf32'),
|
||||||
|
(codecs.BOM_UTF32_BE, 'utf32-be'),
|
||||||
|
(codecs.BOM_UTF32_LE, 'utf32-le'),
|
||||||
|
]
|
||||||
|
|
||||||
|
ENCODING_RE = re.compile(b'coding[:=]\s*([-\w.]+)')
|
||||||
|
|
||||||
|
|
||||||
|
def auto_decode(data):
|
||||||
|
"""Check a bytes string for a BOM to correctly detect the encoding
|
||||||
|
|
||||||
|
Fallback to locale.getpreferredencoding(False) like open() on Python3"""
|
||||||
|
for bom, encoding in BOMS:
|
||||||
|
if data.startswith(bom):
|
||||||
|
return data[len(bom):].decode(encoding)
|
||||||
|
# Lets check the first two lines as in PEP263
|
||||||
|
for line in data.split(b'\n')[:2]:
|
||||||
|
if line[0:1] == b'#' and ENCODING_RE.search(line):
|
||||||
|
encoding = ENCODING_RE.search(line).groups()[0].decode('ascii')
|
||||||
|
return data.decode(encoding)
|
||||||
|
return data.decode(locale.getpreferredencoding(False))
|
|
@ -219,6 +219,11 @@ def hidden_cursor(file):
|
||||||
# even via colorama. So don't even try.
|
# even via colorama. So don't even try.
|
||||||
if WINDOWS:
|
if WINDOWS:
|
||||||
yield
|
yield
|
||||||
|
# We don't want to clutter the output with control characters if we're
|
||||||
|
# writing to a file, or if the user is running with --quiet.
|
||||||
|
# See https://github.com/pypa/pip/issues/3418
|
||||||
|
elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO:
|
||||||
|
yield
|
||||||
else:
|
else:
|
||||||
file.write(HIDE_CURSOR)
|
file.write(HIDE_CURSOR)
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -135,9 +135,12 @@ class Git(VersionControl):
|
||||||
self.update_submodules(dest)
|
self.update_submodules(dest)
|
||||||
|
|
||||||
def get_url(self, location):
|
def get_url(self, location):
|
||||||
url = self.run_command(
|
"""Return URL of the first remote encountered."""
|
||||||
['config', 'remote.origin.url'],
|
remotes = self.run_command(
|
||||||
|
['config', '--get-regexp', 'remote\..*\.url'],
|
||||||
show_stdout=False, cwd=location)
|
show_stdout=False, cwd=location)
|
||||||
|
first_remote = remotes.splitlines()[0]
|
||||||
|
url = first_remote.split(' ')[1]
|
||||||
return url.strip()
|
return url.strip()
|
||||||
|
|
||||||
def get_revision(self, location):
|
def get_revision(self, location):
|
||||||
|
|
|
@ -31,13 +31,14 @@ from pip.exceptions import (
|
||||||
from pip.locations import distutils_scheme, PIP_DELETE_MARKER_FILENAME
|
from pip.locations import distutils_scheme, PIP_DELETE_MARKER_FILENAME
|
||||||
from pip import pep425tags
|
from pip import pep425tags
|
||||||
from pip.utils import (
|
from pip.utils import (
|
||||||
call_subprocess, ensure_dir, captured_stdout, rmtree, canonicalize_name,
|
call_subprocess, ensure_dir, captured_stdout, rmtree, read_chunks,
|
||||||
read_chunks)
|
)
|
||||||
from pip.utils.ui import open_spinner
|
from pip.utils.ui import open_spinner
|
||||||
from pip.utils.logging import indent_log
|
from pip.utils.logging import indent_log
|
||||||
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
|
||||||
from pip._vendor.distlib.scripts import ScriptMaker
|
from pip._vendor.distlib.scripts import ScriptMaker
|
||||||
from pip._vendor import pkg_resources
|
from pip._vendor import pkg_resources
|
||||||
|
from pip._vendor.packaging.utils import canonicalize_name
|
||||||
from pip._vendor.six.moves import configparser
|
from pip._vendor.six.moves import configparser
|
||||||
|
|
||||||
|
|
||||||
|
@ -519,7 +520,7 @@ if __name__ == '__main__':
|
||||||
writer.writerow(row)
|
writer.writerow(row)
|
||||||
for f in generated:
|
for f in generated:
|
||||||
h, l = rehash(f)
|
h, l = rehash(f)
|
||||||
writer.writerow((f, h, l))
|
writer.writerow((normpath(f, lib_dir), h, l))
|
||||||
for f in installed:
|
for f in installed:
|
||||||
writer.writerow((installed[f], '', ''))
|
writer.writerow((installed[f], '', ''))
|
||||||
shutil.move(temp_record, record)
|
shutil.move(temp_record, record)
|
||||||
|
@ -715,7 +716,7 @@ class WheelBuilder(object):
|
||||||
wheel_args += ["--python-tag", python_tag]
|
wheel_args += ["--python-tag", python_tag]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
call_subprocess(wheel_args, cwd=req.source_dir,
|
call_subprocess(wheel_args, cwd=req.setup_py_dir,
|
||||||
show_stdout=False, spinner=spinner)
|
show_stdout=False, spinner=spinner)
|
||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -0,0 +1,13 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: pkg_resources
|
||||||
|
Version: 0.0.0
|
||||||
|
Summary: UNKNOWN
|
||||||
|
Home-page: UNKNOWN
|
||||||
|
Author: UNKNOWN
|
||||||
|
Author-email: UNKNOWN
|
||||||
|
License: UNKNOWN
|
||||||
|
Platform: UNKNOWN
|
||||||
|
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
pkg_resources/__init__.py,sha256=bucu_98c11mzrGldEJeqxArn14F7ZmURsb-8CaNSbVo,108616
|
||||||
|
pkg_resources/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pkg_resources/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
|
||||||
|
pkg_resources/_vendor/packaging/__about__.py,sha256=YzdrW-1lWmyCBDyrcNkZbJo4tiDWXpoiqPjfyCYMzIE,1073
|
||||||
|
pkg_resources/_vendor/packaging/__init__.py,sha256=2V8n-eEpSgBuXlV8hlMmhU7ZklpsrrusWMZNp2gC4Hs,906
|
||||||
|
pkg_resources/_vendor/packaging/_compat.py,sha256=wofog8iYo_zudt_10i6JiXKHDs5GhCuXC09hCuSJiv4,1253
|
||||||
|
pkg_resources/_vendor/packaging/_structures.py,sha256=93YvgrEE2HgFp8AdXy0pwCRVnZeutRHO_-puJ7T0cPw,1809
|
||||||
|
pkg_resources/_vendor/packaging/specifiers.py,sha256=UV9T01_kKloA8PSeMI3HTYBSJ_4KLs00yLvrlciZ3yU,28079
|
||||||
|
pkg_resources/_vendor/packaging/version.py,sha256=dEGrWZJZ6sef1xMxSfDCego2hS3Q86by0hUIFVk-AGc,11949
|
||||||
|
pkg_resources/extern/__init__.py,sha256=azKvXDutMVFe3c641wdiwndjtku92Bl3_iGVAIMKnsM,2461
|
||||||
|
pkg_resources-0.0.0.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10
|
||||||
|
pkg_resources-0.0.0.dist-info/METADATA,sha256=FOYDX6cmnDUkWo-yhqWQYtjKIMZR2IW2G1GFZhA6gUQ,177
|
||||||
|
pkg_resources-0.0.0.dist-info/RECORD,,
|
||||||
|
pkg_resources-0.0.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
|
pkg_resources-0.0.0.dist-info/metadata.json,sha256=8ZVRFU96pY_wnWouockCkvXw981Y0iDB5nQFFGq8ZiY,221
|
||||||
|
pkg_resources-0.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
pkg_resources/extern/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-34.pyc,,
|
||||||
|
pkg_resources/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/version.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/__pycache__/six.cpython-34.pyc,,
|
|
@ -0,0 +1,6 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"extensions": {"python.details": {"document_names": {"description": "DESCRIPTION.rst"}}}, "generator": "bdist_wheel (0.29.0)", "metadata_version": "2.0", "name": "pkg_resources", "summary": "UNKNOWN", "version": "0.0.0"}
|
|
@ -0,0 +1,273 @@
|
||||||
|
# This file is dual licensed under the terms of the Apache License, Version
|
||||||
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
||||||
|
# for complete details.
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
import operator
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from pkg_resources.extern.pyparsing import ParseException, ParseResults, stringStart, stringEnd
|
||||||
|
from pkg_resources.extern.pyparsing import ZeroOrMore, Group, Forward, QuotedString
|
||||||
|
from pkg_resources.extern.pyparsing import Literal as L # noqa
|
||||||
|
|
||||||
|
from ._compat import string_types
|
||||||
|
from .specifiers import Specifier, InvalidSpecifier
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"InvalidMarker", "UndefinedComparison", "UndefinedEnvironmentName",
|
||||||
|
"Marker", "default_environment",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class InvalidMarker(ValueError):
|
||||||
|
"""
|
||||||
|
An invalid marker was found, users should refer to PEP 508.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class UndefinedComparison(ValueError):
|
||||||
|
"""
|
||||||
|
An invalid operation was attempted on a value that doesn't support it.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class UndefinedEnvironmentName(ValueError):
|
||||||
|
"""
|
||||||
|
A name was attempted to be used that does not exist inside of the
|
||||||
|
environment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class Node(object):
|
||||||
|
|
||||||
|
def __init__(self, value):
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str(self.value)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<{0}({1!r})>".format(self.__class__.__name__, str(self))
|
||||||
|
|
||||||
|
|
||||||
|
class Variable(Node):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Value(Node):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
VARIABLE = (
|
||||||
|
L("implementation_version") |
|
||||||
|
L("platform_python_implementation") |
|
||||||
|
L("implementation_name") |
|
||||||
|
L("python_full_version") |
|
||||||
|
L("platform_release") |
|
||||||
|
L("platform_version") |
|
||||||
|
L("platform_machine") |
|
||||||
|
L("platform_system") |
|
||||||
|
L("python_version") |
|
||||||
|
L("sys_platform") |
|
||||||
|
L("os_name") |
|
||||||
|
L("extra")
|
||||||
|
)
|
||||||
|
VARIABLE.setParseAction(lambda s, l, t: Variable(t[0]))
|
||||||
|
|
||||||
|
VERSION_CMP = (
|
||||||
|
L("===") |
|
||||||
|
L("==") |
|
||||||
|
L(">=") |
|
||||||
|
L("<=") |
|
||||||
|
L("!=") |
|
||||||
|
L("~=") |
|
||||||
|
L(">") |
|
||||||
|
L("<")
|
||||||
|
)
|
||||||
|
|
||||||
|
MARKER_OP = VERSION_CMP | L("not in") | L("in")
|
||||||
|
|
||||||
|
MARKER_VALUE = QuotedString("'") | QuotedString('"')
|
||||||
|
MARKER_VALUE.setParseAction(lambda s, l, t: Value(t[0]))
|
||||||
|
|
||||||
|
BOOLOP = L("and") | L("or")
|
||||||
|
|
||||||
|
MARKER_VAR = VARIABLE | MARKER_VALUE
|
||||||
|
|
||||||
|
MARKER_ITEM = Group(MARKER_VAR + MARKER_OP + MARKER_VAR)
|
||||||
|
MARKER_ITEM.setParseAction(lambda s, l, t: tuple(t[0]))
|
||||||
|
|
||||||
|
LPAREN = L("(").suppress()
|
||||||
|
RPAREN = L(")").suppress()
|
||||||
|
|
||||||
|
MARKER_EXPR = Forward()
|
||||||
|
MARKER_ATOM = MARKER_ITEM | Group(LPAREN + MARKER_EXPR + RPAREN)
|
||||||
|
MARKER_EXPR << MARKER_ATOM + ZeroOrMore(BOOLOP + MARKER_EXPR)
|
||||||
|
|
||||||
|
MARKER = stringStart + MARKER_EXPR + stringEnd
|
||||||
|
|
||||||
|
|
||||||
|
def _coerce_parse_result(results):
|
||||||
|
if isinstance(results, ParseResults):
|
||||||
|
return [_coerce_parse_result(i) for i in results]
|
||||||
|
else:
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def _format_marker(marker, first=True):
|
||||||
|
assert isinstance(marker, (list, tuple, string_types))
|
||||||
|
|
||||||
|
# Sometimes we have a structure like [[...]] which is a single item list
|
||||||
|
# where the single item is itself it's own list. In that case we want skip
|
||||||
|
# the rest of this function so that we don't get extraneous () on the
|
||||||
|
# outside.
|
||||||
|
if (isinstance(marker, list) and len(marker) == 1 and
|
||||||
|
isinstance(marker[0], (list, tuple))):
|
||||||
|
return _format_marker(marker[0])
|
||||||
|
|
||||||
|
if isinstance(marker, list):
|
||||||
|
inner = (_format_marker(m, first=False) for m in marker)
|
||||||
|
if first:
|
||||||
|
return " ".join(inner)
|
||||||
|
else:
|
||||||
|
return "(" + " ".join(inner) + ")"
|
||||||
|
elif isinstance(marker, tuple):
|
||||||
|
return '{0} {1} "{2}"'.format(*marker)
|
||||||
|
else:
|
||||||
|
return marker
|
||||||
|
|
||||||
|
|
||||||
|
_operators = {
|
||||||
|
"in": lambda lhs, rhs: lhs in rhs,
|
||||||
|
"not in": lambda lhs, rhs: lhs not in rhs,
|
||||||
|
"<": operator.lt,
|
||||||
|
"<=": operator.le,
|
||||||
|
"==": operator.eq,
|
||||||
|
"!=": operator.ne,
|
||||||
|
">=": operator.ge,
|
||||||
|
">": operator.gt,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _eval_op(lhs, op, rhs):
|
||||||
|
try:
|
||||||
|
spec = Specifier("".join([op, rhs]))
|
||||||
|
except InvalidSpecifier:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
return spec.contains(lhs)
|
||||||
|
|
||||||
|
oper = _operators.get(op)
|
||||||
|
if oper is None:
|
||||||
|
raise UndefinedComparison(
|
||||||
|
"Undefined {0!r} on {1!r} and {2!r}.".format(op, lhs, rhs)
|
||||||
|
)
|
||||||
|
|
||||||
|
return oper(lhs, rhs)
|
||||||
|
|
||||||
|
|
||||||
|
_undefined = object()
|
||||||
|
|
||||||
|
|
||||||
|
def _get_env(environment, name):
|
||||||
|
value = environment.get(name, _undefined)
|
||||||
|
|
||||||
|
if value is _undefined:
|
||||||
|
raise UndefinedEnvironmentName(
|
||||||
|
"{0!r} does not exist in evaluation environment.".format(name)
|
||||||
|
)
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def _evaluate_markers(markers, environment):
|
||||||
|
groups = [[]]
|
||||||
|
|
||||||
|
for marker in markers:
|
||||||
|
assert isinstance(marker, (list, tuple, string_types))
|
||||||
|
|
||||||
|
if isinstance(marker, list):
|
||||||
|
groups[-1].append(_evaluate_markers(marker, environment))
|
||||||
|
elif isinstance(marker, tuple):
|
||||||
|
lhs, op, rhs = marker
|
||||||
|
|
||||||
|
if isinstance(lhs, Variable):
|
||||||
|
lhs_value = _get_env(environment, lhs.value)
|
||||||
|
rhs_value = rhs.value
|
||||||
|
else:
|
||||||
|
lhs_value = lhs.value
|
||||||
|
rhs_value = _get_env(environment, rhs.value)
|
||||||
|
|
||||||
|
groups[-1].append(_eval_op(lhs_value, op, rhs_value))
|
||||||
|
else:
|
||||||
|
assert marker in ["and", "or"]
|
||||||
|
if marker == "or":
|
||||||
|
groups.append([])
|
||||||
|
|
||||||
|
return any(all(item) for item in groups)
|
||||||
|
|
||||||
|
|
||||||
|
def format_full_version(info):
|
||||||
|
version = '{0.major}.{0.minor}.{0.micro}'.format(info)
|
||||||
|
kind = info.releaselevel
|
||||||
|
if kind != 'final':
|
||||||
|
version += kind[0] + str(info.serial)
|
||||||
|
return version
|
||||||
|
|
||||||
|
|
||||||
|
def default_environment():
|
||||||
|
if hasattr(sys, 'implementation'):
|
||||||
|
iver = format_full_version(sys.implementation.version)
|
||||||
|
implementation_name = sys.implementation.name
|
||||||
|
else:
|
||||||
|
iver = '0'
|
||||||
|
implementation_name = ''
|
||||||
|
|
||||||
|
return {
|
||||||
|
"implementation_name": implementation_name,
|
||||||
|
"implementation_version": iver,
|
||||||
|
"os_name": os.name,
|
||||||
|
"platform_machine": platform.machine(),
|
||||||
|
"platform_release": platform.release(),
|
||||||
|
"platform_system": platform.system(),
|
||||||
|
"platform_version": platform.version(),
|
||||||
|
"python_full_version": platform.python_version(),
|
||||||
|
"platform_python_implementation": platform.python_implementation(),
|
||||||
|
"python_version": platform.python_version()[:3],
|
||||||
|
"sys_platform": sys.platform,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Marker(object):
|
||||||
|
|
||||||
|
def __init__(self, marker):
|
||||||
|
try:
|
||||||
|
self._markers = _coerce_parse_result(MARKER.parseString(marker))
|
||||||
|
except ParseException as e:
|
||||||
|
err_str = "Invalid marker: {0!r}, parse error at {1!r}".format(
|
||||||
|
marker, marker[e.loc:e.loc + 8])
|
||||||
|
raise InvalidMarker(err_str)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return _format_marker(self._markers)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Marker({0!r})>".format(str(self))
|
||||||
|
|
||||||
|
def evaluate(self, environment=None):
|
||||||
|
"""Evaluate a marker.
|
||||||
|
|
||||||
|
Return the boolean from evaluating the given marker against the
|
||||||
|
environment. environment is an optional argument to override all or
|
||||||
|
part of the determined environment.
|
||||||
|
|
||||||
|
The environment is determined from the current Python process.
|
||||||
|
"""
|
||||||
|
current_environment = default_environment()
|
||||||
|
if environment is not None:
|
||||||
|
current_environment.update(environment)
|
||||||
|
|
||||||
|
return _evaluate_markers(self._markers, current_environment)
|
|
@ -0,0 +1,127 @@
|
||||||
|
# This file is dual licensed under the terms of the Apache License, Version
|
||||||
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
||||||
|
# for complete details.
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
import string
|
||||||
|
import re
|
||||||
|
|
||||||
|
from pkg_resources.extern.pyparsing import stringStart, stringEnd, originalTextFor, ParseException
|
||||||
|
from pkg_resources.extern.pyparsing import ZeroOrMore, Word, Optional, Regex, Combine
|
||||||
|
from pkg_resources.extern.pyparsing import Literal as L # noqa
|
||||||
|
from pkg_resources.extern.six.moves.urllib import parse as urlparse
|
||||||
|
|
||||||
|
from .markers import MARKER_EXPR, Marker
|
||||||
|
from .specifiers import LegacySpecifier, Specifier, SpecifierSet
|
||||||
|
|
||||||
|
|
||||||
|
class InvalidRequirement(ValueError):
|
||||||
|
"""
|
||||||
|
An invalid requirement was found, users should refer to PEP 508.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
ALPHANUM = Word(string.ascii_letters + string.digits)
|
||||||
|
|
||||||
|
LBRACKET = L("[").suppress()
|
||||||
|
RBRACKET = L("]").suppress()
|
||||||
|
LPAREN = L("(").suppress()
|
||||||
|
RPAREN = L(")").suppress()
|
||||||
|
COMMA = L(",").suppress()
|
||||||
|
SEMICOLON = L(";").suppress()
|
||||||
|
AT = L("@").suppress()
|
||||||
|
|
||||||
|
PUNCTUATION = Word("-_.")
|
||||||
|
IDENTIFIER_END = ALPHANUM | (ZeroOrMore(PUNCTUATION) + ALPHANUM)
|
||||||
|
IDENTIFIER = Combine(ALPHANUM + ZeroOrMore(IDENTIFIER_END))
|
||||||
|
|
||||||
|
NAME = IDENTIFIER("name")
|
||||||
|
EXTRA = IDENTIFIER
|
||||||
|
|
||||||
|
URI = Regex(r'[^ ]+')("url")
|
||||||
|
URL = (AT + URI)
|
||||||
|
|
||||||
|
EXTRAS_LIST = EXTRA + ZeroOrMore(COMMA + EXTRA)
|
||||||
|
EXTRAS = (LBRACKET + Optional(EXTRAS_LIST) + RBRACKET)("extras")
|
||||||
|
|
||||||
|
VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE)
|
||||||
|
VERSION_LEGACY = Regex(LegacySpecifier._regex_str, re.VERBOSE | re.IGNORECASE)
|
||||||
|
|
||||||
|
VERSION_ONE = VERSION_PEP440 ^ VERSION_LEGACY
|
||||||
|
VERSION_MANY = Combine(VERSION_ONE + ZeroOrMore(COMMA + VERSION_ONE),
|
||||||
|
joinString=",", adjacent=False)("_raw_spec")
|
||||||
|
_VERSION_SPEC = Optional(((LPAREN + VERSION_MANY + RPAREN) | VERSION_MANY))
|
||||||
|
_VERSION_SPEC.setParseAction(lambda s, l, t: t._raw_spec or '')
|
||||||
|
|
||||||
|
VERSION_SPEC = originalTextFor(_VERSION_SPEC)("specifier")
|
||||||
|
VERSION_SPEC.setParseAction(lambda s, l, t: t[1])
|
||||||
|
|
||||||
|
MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
|
||||||
|
MARKER_EXPR.setParseAction(
|
||||||
|
lambda s, l, t: Marker(s[t._original_start:t._original_end])
|
||||||
|
)
|
||||||
|
MARKER_SEPERATOR = SEMICOLON
|
||||||
|
MARKER = MARKER_SEPERATOR + MARKER_EXPR
|
||||||
|
|
||||||
|
VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER)
|
||||||
|
URL_AND_MARKER = URL + Optional(MARKER)
|
||||||
|
|
||||||
|
NAMED_REQUIREMENT = \
|
||||||
|
NAME + Optional(EXTRAS) + (URL_AND_MARKER | VERSION_AND_MARKER)
|
||||||
|
|
||||||
|
REQUIREMENT = stringStart + NAMED_REQUIREMENT + stringEnd
|
||||||
|
|
||||||
|
|
||||||
|
class Requirement(object):
|
||||||
|
"""Parse a requirement.
|
||||||
|
|
||||||
|
Parse a given requirement string into its parts, such as name, specifier,
|
||||||
|
URL, and extras. Raises InvalidRequirement on a badly-formed requirement
|
||||||
|
string.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# TODO: Can we test whether something is contained within a requirement?
|
||||||
|
# If so how do we do that? Do we need to test against the _name_ of
|
||||||
|
# the thing as well as the version? What about the markers?
|
||||||
|
# TODO: Can we normalize the name and extra name?
|
||||||
|
|
||||||
|
def __init__(self, requirement_string):
|
||||||
|
try:
|
||||||
|
req = REQUIREMENT.parseString(requirement_string)
|
||||||
|
except ParseException as e:
|
||||||
|
raise InvalidRequirement(
|
||||||
|
"Invalid requirement, parse error at \"{0!r}\"".format(
|
||||||
|
requirement_string[e.loc:e.loc + 8]))
|
||||||
|
|
||||||
|
self.name = req.name
|
||||||
|
if req.url:
|
||||||
|
parsed_url = urlparse.urlparse(req.url)
|
||||||
|
if not (parsed_url.scheme and parsed_url.netloc) or (
|
||||||
|
not parsed_url.scheme and not parsed_url.netloc):
|
||||||
|
raise InvalidRequirement("Invalid URL given")
|
||||||
|
self.url = req.url
|
||||||
|
else:
|
||||||
|
self.url = None
|
||||||
|
self.extras = set(req.extras.asList() if req.extras else [])
|
||||||
|
self.specifier = SpecifierSet(req.specifier)
|
||||||
|
self.marker = req.marker if req.marker else None
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
parts = [self.name]
|
||||||
|
|
||||||
|
if self.extras:
|
||||||
|
parts.append("[{0}]".format(",".join(sorted(self.extras))))
|
||||||
|
|
||||||
|
if self.specifier:
|
||||||
|
parts.append(str(self.specifier))
|
||||||
|
|
||||||
|
if self.url:
|
||||||
|
parts.append("@ {0}".format(self.url))
|
||||||
|
|
||||||
|
if self.marker:
|
||||||
|
parts.append("; {0}".format(self.marker))
|
||||||
|
|
||||||
|
return "".join(parts)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Requirement({0!r})>".format(str(self))
|
|
@ -0,0 +1,14 @@
|
||||||
|
# This file is dual licensed under the terms of the Apache License, Version
|
||||||
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
||||||
|
# for complete details.
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
_canonicalize_regex = re.compile(r"[-_.]+")
|
||||||
|
|
||||||
|
|
||||||
|
def canonicalize_name(name):
|
||||||
|
# This is taken from PEP 503.
|
||||||
|
return _canonicalize_regex.sub("-", name).lower()
|
3805
lib/python3.4/site-packages/pkg_resources/_vendor/pyparsing.py
Normal file
3805
lib/python3.4/site-packages/pkg_resources/_vendor/pyparsing.py
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
||||||
{"generator": "bdist_wheel (0.26.0)", "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.details": {"project_urls": {"Home": "https://bitbucket.org/pypa/setuptools"}, "contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}, "python.exports": {"console_scripts": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}, "distutils.commands": {"alias": "setuptools.command.alias:alias", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "build_ext": "setuptools.command.build_ext:build_ext", "build_py": "setuptools.command.build_py:build_py", "develop": "setuptools.command.develop:develop", "easy_install": "setuptools.command.easy_install:easy_install", "egg_info": "setuptools.command.egg_info:egg_info", "install": "setuptools.command.install:install", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "install_lib": "setuptools.command.install_lib:install_lib", "install_scripts": "setuptools.command.install_scripts:install_scripts", "register": "setuptools.command.register:register", "rotate": "setuptools.command.rotate:rotate", "saveopts": "setuptools.command.saveopts:saveopts", "sdist": "setuptools.command.sdist:sdist", "setopt": "setuptools.command.setopt:setopt", "test": "setuptools.command.test:test", "upload": "setuptools.command.upload:upload", "upload_docs": "setuptools.command.upload_docs:upload_docs"}, "distutils.setup_keywords": {"convert_2to3_doctests": "setuptools.dist:assert_string_list", "dependency_links": "setuptools.dist:assert_string_list", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "exclude_package_data": "setuptools.dist:check_package_data", "extras_require": "setuptools.dist:check_extras", "include_package_data": "setuptools.dist:assert_bool", "install_requires": "setuptools.dist:check_requirements", "namespace_packages": "setuptools.dist:check_nsp", "package_data": "setuptools.dist:check_package_data", "packages": "setuptools.dist:check_packages", "setup_requires": "setuptools.dist:check_requirements", "test_loader": "setuptools.dist:check_importable", "test_runner": "setuptools.dist:check_importable", "test_suite": "setuptools.dist:check_test_suite", "tests_require": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool"}, "egg_info.writers": {"PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "requires.txt": "setuptools.command.egg_info:write_requirements", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}}, "python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}}}, "keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "metadata_version": "2.0", "name": "setuptools", "extras": ["certs", "ssl"], "run_requires": [{"requires": ["certifi (==2015.11.20)"], "extra": "certs"}, {"requires": ["wincertstore (==0.2)"], "extra": "ssl", "environment": "sys_platform=='win32'"}], "version": "20.1.1", "test_requires": [{"requires": ["pytest (>=2.8)", "setuptools[ssl]"]}]}
|
|
|
@ -0,0 +1,238 @@
|
||||||
|
===============================
|
||||||
|
Installing and Using Setuptools
|
||||||
|
===============================
|
||||||
|
|
||||||
|
.. contents:: **Table of Contents**
|
||||||
|
|
||||||
|
|
||||||
|
`Change History <https://pythonhosted.org/setuptools/history.html>`_.
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
Installation Instructions
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The recommended way to bootstrap setuptools on any system is to download
|
||||||
|
`ez_setup.py`_ and run it using the target Python environment. Different
|
||||||
|
operating systems have different recommended techniques to accomplish this
|
||||||
|
basic routine, so below are some examples to get you started.
|
||||||
|
|
||||||
|
Setuptools requires Python 2.6 or later. To install setuptools
|
||||||
|
on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
|
||||||
|
<https://bitbucket.org/pypa/setuptools/raw/bootstrap-py24/ez_setup.py>`_.
|
||||||
|
|
||||||
|
The link provided to ez_setup.py is a bookmark to bootstrap script for the
|
||||||
|
latest known stable release.
|
||||||
|
|
||||||
|
.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
|
||||||
|
|
||||||
|
Windows (Powershell 3 or later)
|
||||||
|
===============================
|
||||||
|
|
||||||
|
For best results, uninstall previous versions FIRST (see `Uninstalling`_).
|
||||||
|
|
||||||
|
Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
|
||||||
|
with PowerShell 3 installed, it's possible to install with one simple
|
||||||
|
Powershell command. Start up Powershell and paste this command::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
|
||||||
|
|
||||||
|
You must start the Powershell with Administrative privileges or you may choose
|
||||||
|
to install a user-local installation::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
|
||||||
|
|
||||||
|
If you have Python 3.3 or later, you can use the ``py`` command to install to
|
||||||
|
different Python versions. For example, to install to Python 3.3 if you have
|
||||||
|
Python 2.7 installed::
|
||||||
|
|
||||||
|
> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
|
||||||
|
|
||||||
|
The recommended way to install setuptools on Windows is to download
|
||||||
|
`ez_setup.py`_ and run it. The script will download the appropriate
|
||||||
|
distribution file and install it for you.
|
||||||
|
|
||||||
|
Once installation is complete, you will find an ``easy_install`` program in
|
||||||
|
your Python ``Scripts`` subdirectory. For simple invocation and best results,
|
||||||
|
add this directory to your ``PATH`` environment variable, if it is not already
|
||||||
|
present. If you did a user-local install, the ``Scripts`` subdirectory is
|
||||||
|
``$env:APPDATA\Python\Scripts``.
|
||||||
|
|
||||||
|
|
||||||
|
Windows (simplified)
|
||||||
|
====================
|
||||||
|
|
||||||
|
For Windows without PowerShell 3 or for installation without a command-line,
|
||||||
|
download `ez_setup.py`_ using your preferred web browser or other technique
|
||||||
|
and "run" that file.
|
||||||
|
|
||||||
|
|
||||||
|
Unix (wget)
|
||||||
|
===========
|
||||||
|
|
||||||
|
Most Linux distributions come with wget.
|
||||||
|
|
||||||
|
Download `ez_setup.py`_ and run it using the target Python version. The script
|
||||||
|
will download the appropriate version and install it for you::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python
|
||||||
|
|
||||||
|
Note that you will may need to invoke the command with superuser privileges to
|
||||||
|
install to the system Python::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
|
||||||
|
|
||||||
|
Alternatively, Setuptools may be installed to a user-local path::
|
||||||
|
|
||||||
|
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
|
||||||
|
|
||||||
|
Note that on some older systems (noted on Debian 6 and CentOS 5 installations),
|
||||||
|
`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net`
|
||||||
|
does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using
|
||||||
|
`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the
|
||||||
|
host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget`
|
||||||
|
(see `Issue 59 <https://bitbucket.org/pypa/pypi/issue/59#comment-5881915>`_). If you happen to encounter them,
|
||||||
|
install Setuptools as follows::
|
||||||
|
|
||||||
|
> wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
|
||||||
|
> python ez_setup.py --insecure
|
||||||
|
|
||||||
|
|
||||||
|
Unix including Mac OS X (curl)
|
||||||
|
==============================
|
||||||
|
|
||||||
|
If your system has curl installed, follow the ``wget`` instructions but
|
||||||
|
replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
|
||||||
|
|
||||||
|
> curl https://bootstrap.pypa.io/ez_setup.py -o - | python
|
||||||
|
|
||||||
|
|
||||||
|
Advanced Installation
|
||||||
|
=====================
|
||||||
|
|
||||||
|
For more advanced installation options, such as installing to custom
|
||||||
|
locations or prefixes, download and extract the source
|
||||||
|
tarball from `Setuptools on PyPI <https://pypi.python.org/pypi/setuptools>`_
|
||||||
|
and run setup.py with any supported distutils and Setuptools options.
|
||||||
|
For example::
|
||||||
|
|
||||||
|
setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
|
||||||
|
|
||||||
|
Use ``--help`` to get a full options list, but we recommend consulting
|
||||||
|
the `EasyInstall manual`_ for detailed instructions, especially `the section
|
||||||
|
on custom installation locations`_.
|
||||||
|
|
||||||
|
.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
|
||||||
|
.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
|
||||||
|
|
||||||
|
|
||||||
|
Downloads
|
||||||
|
=========
|
||||||
|
|
||||||
|
All setuptools downloads can be found at `the project's home page in the Python
|
||||||
|
Package Index`_. Scroll to the very bottom of the page to find the links.
|
||||||
|
|
||||||
|
.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
|
||||||
|
|
||||||
|
In addition to the PyPI downloads, the development version of ``setuptools``
|
||||||
|
is available from the `Bitbucket repo`_, and in-development versions of the
|
||||||
|
`0.6 branch`_ are available as well.
|
||||||
|
|
||||||
|
.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
|
||||||
|
.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
|
||||||
|
|
||||||
|
Uninstalling
|
||||||
|
============
|
||||||
|
|
||||||
|
On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
|
||||||
|
installer, simply use the uninstall feature of "Add/Remove Programs" in the
|
||||||
|
Control Panel.
|
||||||
|
|
||||||
|
Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
|
||||||
|
version, delete all ``setuptools*`` and ``distribute*`` files and
|
||||||
|
directories from your system's ``site-packages`` directory
|
||||||
|
(and any other ``sys.path`` directories) FIRST.
|
||||||
|
|
||||||
|
If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
|
||||||
|
nothing further needs to be done. If you want to completely remove Setuptools,
|
||||||
|
you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
|
||||||
|
and associated executables installed to the Python scripts directory.
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
Using Setuptools and EasyInstall
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Here are some of the available manuals, tutorials, and other resources for
|
||||||
|
learning about Setuptools, Python Eggs, and EasyInstall:
|
||||||
|
|
||||||
|
* `The EasyInstall user's guide and reference manual`_
|
||||||
|
* `The setuptools Developer's Guide`_
|
||||||
|
* `The pkg_resources API reference`_
|
||||||
|
* `The Internal Structure of Python Eggs`_
|
||||||
|
|
||||||
|
Questions, comments, and bug reports should be directed to the `distutils-sig
|
||||||
|
mailing list`_. If you have written (or know of) any tutorials, documentation,
|
||||||
|
plug-ins, or other resources for setuptools users, please let us know about
|
||||||
|
them there, so this reference list can be updated. If you have working,
|
||||||
|
*tested* patches to correct problems or add features, you may submit them to
|
||||||
|
the `setuptools bug tracker`_.
|
||||||
|
|
||||||
|
.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
|
||||||
|
.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
|
||||||
|
.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
|
||||||
|
.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
|
||||||
|
.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
|
||||||
|
.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
|
||||||
|
|
||||||
|
|
||||||
|
-------
|
||||||
|
Credits
|
||||||
|
-------
|
||||||
|
|
||||||
|
* The original design for the ``.egg`` format and the ``pkg_resources`` API was
|
||||||
|
co-created by Phillip Eby and Bob Ippolito. Bob also implemented the first
|
||||||
|
version of ``pkg_resources``, and supplied the OS X operating system version
|
||||||
|
compatibility algorithm.
|
||||||
|
|
||||||
|
* Ian Bicking implemented many early "creature comfort" features of
|
||||||
|
easy_install, including support for downloading via Sourceforge and
|
||||||
|
Subversion repositories. Ian's comments on the Web-SIG about WSGI
|
||||||
|
application deployment also inspired the concept of "entry points" in eggs,
|
||||||
|
and he has given talks at PyCon and elsewhere to inform and educate the
|
||||||
|
community about eggs and setuptools.
|
||||||
|
|
||||||
|
* Jim Fulton contributed time and effort to build automated tests of various
|
||||||
|
aspects of ``easy_install``, and supplied the doctests for the command-line
|
||||||
|
``.exe`` wrappers on Windows.
|
||||||
|
|
||||||
|
* Phillip J. Eby is the seminal author of setuptools, and
|
||||||
|
first proposed the idea of an importable binary distribution format for
|
||||||
|
Python application plug-ins.
|
||||||
|
|
||||||
|
* Significant parts of the implementation of setuptools were funded by the Open
|
||||||
|
Source Applications Foundation, to provide a plug-in infrastructure for the
|
||||||
|
Chandler PIM application. In addition, many OSAF staffers (such as Mike
|
||||||
|
"Code Bear" Taylor) contributed their time and stress as guinea pigs for the
|
||||||
|
use of eggs and setuptools, even before eggs were "cool". (Thanks, guys!)
|
||||||
|
|
||||||
|
* Tarek Ziadé is the principal author of the Distribute fork, which
|
||||||
|
re-invigorated the community on the project, encouraged renewed innovation,
|
||||||
|
and addressed many defects.
|
||||||
|
|
||||||
|
* Since the merge with Distribute, Jason R. Coombs is the
|
||||||
|
maintainer of setuptools. The project is maintained in coordination with
|
||||||
|
the Python Packaging Authority (PyPA) and the larger Python community.
|
||||||
|
|
||||||
|
.. _files:
|
||||||
|
|
||||||
|
|
||||||
|
---------------
|
||||||
|
Code of Conduct
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Everyone interacting in the setuptools project's codebases, issue trackers,
|
||||||
|
chat rooms, and mailing lists is expected to follow the
|
||||||
|
`PyPA Code of Conduct`_.
|
||||||
|
|
||||||
|
.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -1,6 +1,6 @@
|
||||||
Metadata-Version: 2.0
|
Metadata-Version: 2.0
|
||||||
Name: setuptools
|
Name: setuptools
|
||||||
Version: 20.1.1
|
Version: 20.3.1
|
||||||
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
||||||
Home-page: https://bitbucket.org/pypa/setuptools
|
Home-page: https://bitbucket.org/pypa/setuptools
|
||||||
Author: Python Packaging Authority
|
Author: Python Packaging Authority
|
|
@ -1,16 +1,18 @@
|
||||||
easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126
|
easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126
|
||||||
_markerlib/__init__.py,sha256=GSmhZqvAitLJHhSgtqqusfq2nJ_ClP3oy3Lm0uZLIsU,552
|
pkg_resources/__init__.py,sha256=QyiRSbbmXDCq2O3AIG9V-AjGJinvd3ImWCKsaucVneA,100439
|
||||||
_markerlib/markers.py,sha256=YuFp0-osufFIoqnzG3L0Z2fDCx4Vln3VUDeXJ2DA_1I,3979
|
|
||||||
pkg_resources/__init__.py,sha256=bucu_98c11mzrGldEJeqxArn14F7ZmURsb-8CaNSbVo,108616
|
|
||||||
pkg_resources/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
pkg_resources/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pkg_resources/_vendor/pyparsing.py,sha256=ic8qmDPiq8Li-Y0PeZcI56rEyMqevKNBK6hr6FbyVBc,160425
|
||||||
pkg_resources/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
|
pkg_resources/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
|
||||||
pkg_resources/_vendor/packaging/__about__.py,sha256=YzdrW-1lWmyCBDyrcNkZbJo4tiDWXpoiqPjfyCYMzIE,1073
|
pkg_resources/_vendor/packaging/__about__.py,sha256=AEwkfVSNgMMAAugtYao7b7wah9XryokeoXBuIw4h6d8,720
|
||||||
pkg_resources/_vendor/packaging/__init__.py,sha256=2V8n-eEpSgBuXlV8hlMmhU7ZklpsrrusWMZNp2gC4Hs,906
|
pkg_resources/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513
|
||||||
pkg_resources/_vendor/packaging/_compat.py,sha256=wofog8iYo_zudt_10i6JiXKHDs5GhCuXC09hCuSJiv4,1253
|
pkg_resources/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860
|
||||||
pkg_resources/_vendor/packaging/_structures.py,sha256=93YvgrEE2HgFp8AdXy0pwCRVnZeutRHO_-puJ7T0cPw,1809
|
pkg_resources/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416
|
||||||
pkg_resources/_vendor/packaging/specifiers.py,sha256=UV9T01_kKloA8PSeMI3HTYBSJ_4KLs00yLvrlciZ3yU,28079
|
pkg_resources/_vendor/packaging/markers.py,sha256=0Z2in1kNfYn93n9uJj0hNEmu-sJpEQpa_qAbxpYXdS4,7359
|
||||||
pkg_resources/_vendor/packaging/version.py,sha256=dEGrWZJZ6sef1xMxSfDCego2hS3Q86by0hUIFVk-AGc,11949
|
pkg_resources/_vendor/packaging/requirements.py,sha256=SikL2UynbsT0qtY9ltqngndha_sfo0w6XGFhAhoSoaQ,4355
|
||||||
pkg_resources/extern/__init__.py,sha256=azKvXDutMVFe3c641wdiwndjtku92Bl3_iGVAIMKnsM,2461
|
pkg_resources/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025
|
||||||
|
pkg_resources/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421
|
||||||
|
pkg_resources/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556
|
||||||
|
pkg_resources/extern/__init__.py,sha256=rMBTxKimjNg8plSH94cB-y52pKO0zmM-AkFL30lZGfY,2474
|
||||||
setuptools/__init__.py,sha256=WEGb6BRGN2dz3eJTbNRUfInUAhb6_OZJyYAndPGJm6w,5440
|
setuptools/__init__.py,sha256=WEGb6BRGN2dz3eJTbNRUfInUAhb6_OZJyYAndPGJm6w,5440
|
||||||
setuptools/archive_util.py,sha256=N30WE5ZQjkytzhAodAXw4FkK-9J5AP1ChrClHnZthOA,6609
|
setuptools/archive_util.py,sha256=N30WE5ZQjkytzhAodAXw4FkK-9J5AP1ChrClHnZthOA,6609
|
||||||
setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
|
setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
|
||||||
|
@ -38,7 +40,7 @@ setuptools/site-patch.py,sha256=K-0-cAx36mX_PG-qPZwosG9ZLCliRjquKQ4nHiJvvzg,2389
|
||||||
setuptools/ssl_support.py,sha256=tAFeeyFPVle_GgarPkNrdfnCJgP9PyN_QYGXTgypoyc,8119
|
setuptools/ssl_support.py,sha256=tAFeeyFPVle_GgarPkNrdfnCJgP9PyN_QYGXTgypoyc,8119
|
||||||
setuptools/unicode_utils.py,sha256=8zVyrL_MFc6P5AmErs21rr7z-3N1pZ_NkOcDC7BPElU,995
|
setuptools/unicode_utils.py,sha256=8zVyrL_MFc6P5AmErs21rr7z-3N1pZ_NkOcDC7BPElU,995
|
||||||
setuptools/utils.py,sha256=08Z7mt-9mvrx-XvmS5EyKoRn2lxNTlgFsUwBU3Eq9JQ,293
|
setuptools/utils.py,sha256=08Z7mt-9mvrx-XvmS5EyKoRn2lxNTlgFsUwBU3Eq9JQ,293
|
||||||
setuptools/version.py,sha256=E3F8rAlTgCNpmTTY2YGy4T_1iQn3gKsePB7TVIcObu0,23
|
setuptools/version.py,sha256=xArPY4wg3eOL9kWjMciQnbhiJsQ73H8SieeRtCDrSsU,23
|
||||||
setuptools/windows_support.py,sha256=5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE,714
|
setuptools/windows_support.py,sha256=5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE,714
|
||||||
setuptools/command/__init__.py,sha256=1AM3hv_zCixE7kTXA-onWfK_2KF8GC8fUw3WSxzi5Fg,564
|
setuptools/command/__init__.py,sha256=1AM3hv_zCixE7kTXA-onWfK_2KF8GC8fUw3WSxzi5Fg,564
|
||||||
setuptools/command/alias.py,sha256=KjpE0sz_SDIHv3fpZcIQK-sCkJz-SrC6Gmug6b9Nkc8,2426
|
setuptools/command/alias.py,sha256=KjpE0sz_SDIHv3fpZcIQK-sCkJz-SrC6Gmug6b9Nkc8,2426
|
||||||
|
@ -48,7 +50,7 @@ setuptools/command/bdist_wininst.py,sha256=_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-j
|
||||||
setuptools/command/build_ext.py,sha256=pkQ8xp3YPVGGLkGv-SvfxC_GqFpboph1AFEoMFOgQMo,11964
|
setuptools/command/build_ext.py,sha256=pkQ8xp3YPVGGLkGv-SvfxC_GqFpboph1AFEoMFOgQMo,11964
|
||||||
setuptools/command/build_py.py,sha256=HvJ88JuougDccaowYlfMV12kYtd0GLahg2DR2vQRqL4,7983
|
setuptools/command/build_py.py,sha256=HvJ88JuougDccaowYlfMV12kYtd0GLahg2DR2vQRqL4,7983
|
||||||
setuptools/command/develop.py,sha256=VxSYbpM2jQqtRBn5klIjPVBo3sWKNZMlSbHHiRLUlZo,7383
|
setuptools/command/develop.py,sha256=VxSYbpM2jQqtRBn5klIjPVBo3sWKNZMlSbHHiRLUlZo,7383
|
||||||
setuptools/command/easy_install.py,sha256=w3rYTMOEAxMPNMQ6A3RWgaFNL6y1Ms2TFrgHqAxMrlE,86096
|
setuptools/command/easy_install.py,sha256=_rqkt0iWctAjMn7Z2wEYTICMntcUaV28iN6cfKrpQ28,85913
|
||||||
setuptools/command/egg_info.py,sha256=0_8eI8hgLAlGt8Xk5kiodY_d9lxG6_RSescJISKBJgA,16890
|
setuptools/command/egg_info.py,sha256=0_8eI8hgLAlGt8Xk5kiodY_d9lxG6_RSescJISKBJgA,16890
|
||||||
setuptools/command/install.py,sha256=QwaFiZRU3ytIHoPh8uJ9EqV3Fu9C4ca4B7UGAo95tws,4685
|
setuptools/command/install.py,sha256=QwaFiZRU3ytIHoPh8uJ9EqV3Fu9C4ca4B7UGAo95tws,4685
|
||||||
setuptools/command/install_egg_info.py,sha256=8J_cH4VbOJv-9Wey8Ijw5SnNI7YS_CA2IKYX569mP5Q,4035
|
setuptools/command/install_egg_info.py,sha256=8J_cH4VbOJv-9Wey8Ijw5SnNI7YS_CA2IKYX569mP5Q,4035
|
||||||
|
@ -64,70 +66,72 @@ setuptools/command/test.py,sha256=N2f5RwxkjwU3YQzFYHtzHr636-pdX9XJDuPg5Y92kSo,68
|
||||||
setuptools/command/upload.py,sha256=OjAryq4ZoARZiaTN_MpuG1X8Pu9CJNCKmmbMg-gab5I,649
|
setuptools/command/upload.py,sha256=OjAryq4ZoARZiaTN_MpuG1X8Pu9CJNCKmmbMg-gab5I,649
|
||||||
setuptools/command/upload_docs.py,sha256=htXpASci5gKP0RIrGZRRmbll7RnTRuwvKWZkYsBlDMM,6815
|
setuptools/command/upload_docs.py,sha256=htXpASci5gKP0RIrGZRRmbll7RnTRuwvKWZkYsBlDMM,6815
|
||||||
setuptools/extern/__init__.py,sha256=mTrrj4yLMdFeEwwnqKnSuvZM5RM-HPZ1iXLgaYDlB9o,132
|
setuptools/extern/__init__.py,sha256=mTrrj4yLMdFeEwwnqKnSuvZM5RM-HPZ1iXLgaYDlB9o,132
|
||||||
setuptools-20.1.1.dist-info/DESCRIPTION.rst,sha256=MDsJej8DPV2OKpAKpu74g-2xksRd-uGTeZn4W7D1dnI,9940
|
setuptools-20.3.1.dist-info/DESCRIPTION.rst,sha256=MDsJej8DPV2OKpAKpu74g-2xksRd-uGTeZn4W7D1dnI,9940
|
||||||
setuptools-20.1.1.dist-info/METADATA,sha256=mXcb68OjP3H_wq0JMNyeX3nYGlTPDi74cndXOowhZps,11173
|
setuptools-20.3.1.dist-info/METADATA,sha256=c4yrbKrKA0BxICkR7iP79IHXigHPhWNy70y-Fq-ybKs,11173
|
||||||
setuptools-20.1.1.dist-info/RECORD,,
|
setuptools-20.3.1.dist-info/RECORD,,
|
||||||
setuptools-20.1.1.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
|
setuptools-20.3.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
setuptools-20.1.1.dist-info/dependency_links.txt,sha256=oUNXJEArClXFiSSvfFwUKY8TYjeIXhuFfCpXn5K0DCE,226
|
setuptools-20.3.1.dist-info/dependency_links.txt,sha256=oUNXJEArClXFiSSvfFwUKY8TYjeIXhuFfCpXn5K0DCE,226
|
||||||
setuptools-20.1.1.dist-info/entry_points.txt,sha256=revbaRBbkZ2b1B-hZlAXo_18J9GjdYHgA4DoW8wdTOU,2835
|
setuptools-20.3.1.dist-info/entry_points.txt,sha256=revbaRBbkZ2b1B-hZlAXo_18J9GjdYHgA4DoW8wdTOU,2835
|
||||||
setuptools-20.1.1.dist-info/metadata.json,sha256=NVNudLLjxdP9rz5vqMErRBQTdpX1tTEbp9EhBRSCQ8U,4636
|
setuptools-20.3.1.dist-info/metadata.json,sha256=Kj9x1vkm8jQKLu3ywdXgeNTtyBmWFbp6KvF528_C5N4,4636
|
||||||
setuptools-20.1.1.dist-info/top_level.txt,sha256=7780fzudMJkykiTcIrAQ8m8Lll6kot3EEePye3VJgEE,49
|
setuptools-20.3.1.dist-info/top_level.txt,sha256=2HUXVVwA4Pff1xgTFr3GsTXXKaPaO6vlG6oNJ_4u4Tg,38
|
||||||
setuptools-20.1.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
setuptools-20.3.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/easy_install,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
../../../bin/easy_install,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/easy_install-3.4,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
../../../bin/easy_install-3.4,sha256=LopKneUXvnG_dqCSZe6amF-Bf4WEh1ny0uo28w2_nQ0,299
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/setuptools-20.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
setuptools-20.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
setuptools/command/__pycache__/install_lib.cpython-34.pyc,,
|
setuptools/command/__pycache__/bdist_wininst.cpython-34.pyc,,
|
||||||
setuptools/__pycache__/unicode_utils.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/version.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/test.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/upload.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/rotate.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/dist.cpython-34.pyc,,
|
setuptools/__pycache__/dist.cpython-34.pyc,,
|
||||||
pkg_resources/_vendor/__pycache__/__init__.cpython-34.pyc,,
|
pkg_resources/_vendor/__pycache__/__init__.cpython-34.pyc,,
|
||||||
pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/egg_info.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/site-patch.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/saveopts.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/bdist_wininst.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/py27compat.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/archive_util.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/register.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/install.cpython-34.pyc,,
|
|
||||||
pkg_resources/_vendor/packaging/__pycache__/version.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/utils.cpython-34.pyc,,
|
|
||||||
pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pkg_resources/_vendor/__pycache__/six.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/easy_install.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/install_egg_info.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/bdist_rpm.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/setopt.cpython-34.pyc,,
|
|
||||||
pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-34.pyc,,
|
|
||||||
_markerlib/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/alias.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/launch.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/py31compat.cpython-34.pyc,,
|
|
||||||
_markerlib/__pycache__/markers.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/lib2to3_ex.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/build_ext.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/sandbox.cpython-34.pyc,,
|
|
||||||
pkg_resources/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/bdist_egg.cpython-34.pyc,,
|
|
||||||
setuptools/extern/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/extension.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/develop.cpython-34.pyc,,
|
|
||||||
__pycache__/easy_install.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/package_index.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/ssl_support.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/install_scripts.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/py26compat.cpython-34.pyc,,
|
|
||||||
setuptools/__pycache__/depends.cpython-34.pyc,,
|
|
||||||
setuptools/command/__pycache__/sdist.cpython-34.pyc,,
|
setuptools/command/__pycache__/sdist.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/launch.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/version.cpython-34.pyc,,
|
||||||
|
setuptools/extern/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/saveopts.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/easy_install.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/rotate.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/develop.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/markers.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/build_ext.cpython-34.pyc,,
|
||||||
|
__pycache__/easy_install.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/egg_info.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/utils.cpython-34.pyc,,
|
||||||
pkg_resources/extern/__pycache__/__init__.cpython-34.pyc,,
|
pkg_resources/extern/__pycache__/__init__.cpython-34.pyc,,
|
||||||
setuptools/__pycache__/windows_support.cpython-34.pyc,,
|
setuptools/__pycache__/windows_support.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/py26compat.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/bdist_rpm.cpython-34.pyc,,
|
||||||
setuptools/__pycache__/__init__.cpython-34.pyc,,
|
setuptools/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/extension.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/__init__.cpython-34.pyc,,
|
||||||
setuptools/__pycache__/msvc9_support.cpython-34.pyc,,
|
setuptools/__pycache__/msvc9_support.cpython-34.pyc,,
|
||||||
setuptools/command/__pycache__/build_py.cpython-34.pyc,,
|
setuptools/__pycache__/py27compat.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/__pycache__/six.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/ssl_support.cpython-34.pyc,,
|
||||||
setuptools/command/__pycache__/upload_docs.cpython-34.pyc,,
|
setuptools/command/__pycache__/upload_docs.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_scripts.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/build_py.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/sandbox.cpython-34.pyc,,
|
||||||
|
pkg_resources/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install.cpython-34.pyc,,
|
||||||
pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-34.pyc,,
|
pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/alias.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_egg_info.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/unicode_utils.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/__pycache__/pyparsing.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/depends.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/site-patch.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/setopt.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/register.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/upload.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/lib2to3_ex.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/install_lib.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/version.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/py31compat.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/test.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/archive_util.cpython-34.pyc,,
|
||||||
|
setuptools/__pycache__/package_index.cpython-34.pyc,,
|
||||||
|
setuptools/command/__pycache__/bdist_egg.cpython-34.pyc,,
|
||||||
|
pkg_resources/_vendor/packaging/__pycache__/utils.cpython-34.pyc,,
|
|
@ -0,0 +1,6 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
https://pypi.python.org/packages/source/c/certifi/certifi-2015.11.20.tar.gz#md5=25134646672c695c1ff1593c2dd75d08
|
||||||
|
https://pypi.python.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}}, "python.details": {"contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/pypa/setuptools"}}, "python.exports": {"console_scripts": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}, "distutils.commands": {"alias": "setuptools.command.alias:alias", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "build_ext": "setuptools.command.build_ext:build_ext", "build_py": "setuptools.command.build_py:build_py", "develop": "setuptools.command.develop:develop", "easy_install": "setuptools.command.easy_install:easy_install", "egg_info": "setuptools.command.egg_info:egg_info", "install": "setuptools.command.install:install", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "install_lib": "setuptools.command.install_lib:install_lib", "install_scripts": "setuptools.command.install_scripts:install_scripts", "register": "setuptools.command.register:register", "rotate": "setuptools.command.rotate:rotate", "saveopts": "setuptools.command.saveopts:saveopts", "sdist": "setuptools.command.sdist:sdist", "setopt": "setuptools.command.setopt:setopt", "test": "setuptools.command.test:test", "upload": "setuptools.command.upload:upload", "upload_docs": "setuptools.command.upload_docs:upload_docs"}, "distutils.setup_keywords": {"convert_2to3_doctests": "setuptools.dist:assert_string_list", "dependency_links": "setuptools.dist:assert_string_list", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "exclude_package_data": "setuptools.dist:check_package_data", "extras_require": "setuptools.dist:check_extras", "include_package_data": "setuptools.dist:assert_bool", "install_requires": "setuptools.dist:check_requirements", "namespace_packages": "setuptools.dist:check_nsp", "package_data": "setuptools.dist:check_package_data", "packages": "setuptools.dist:check_packages", "setup_requires": "setuptools.dist:check_requirements", "test_loader": "setuptools.dist:check_importable", "test_runner": "setuptools.dist:check_importable", "test_suite": "setuptools.dist:check_test_suite", "tests_require": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool"}, "egg_info.writers": {"PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "requires.txt": "setuptools.command.egg_info:write_requirements", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}}}, "extras": ["certs", "ssl"], "generator": "bdist_wheel (0.29.0)", "keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "metadata_version": "2.0", "name": "setuptools", "run_requires": [{"extra": "certs", "requires": ["certifi (==2015.11.20)"]}, {"environment": "sys_platform=='win32'", "extra": "ssl", "requires": ["wincertstore (==0.2)"]}], "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "test_requires": [{"requires": ["pytest (>=2.8)", "setuptools[ssl]"]}], "version": "20.3.1"}
|
|
@ -0,0 +1,3 @@
|
||||||
|
easy_install
|
||||||
|
pkg_resources
|
||||||
|
setuptools
|
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -136,13 +136,15 @@ class easy_install(Command):
|
||||||
('local-snapshots-ok', 'l',
|
('local-snapshots-ok', 'l',
|
||||||
"allow building eggs from local checkouts"),
|
"allow building eggs from local checkouts"),
|
||||||
('version', None, "print version information and exit"),
|
('version', None, "print version information and exit"),
|
||||||
|
('install-layout=', None, "installation layout to choose (known values: deb)"),
|
||||||
|
('force-installation-into-system-dir', '0', "force installation into /usr"),
|
||||||
('no-find-links', None,
|
('no-find-links', None,
|
||||||
"Don't load find-links defined in packages being installed")
|
"Don't load find-links defined in packages being installed")
|
||||||
]
|
]
|
||||||
boolean_options = [
|
boolean_options = [
|
||||||
'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
|
'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
|
||||||
'editable',
|
'editable',
|
||||||
'no-deps', 'local-snapshots-ok', 'version'
|
'no-deps', 'local-snapshots-ok', 'version', 'force-installation-into-system-dir'
|
||||||
]
|
]
|
||||||
|
|
||||||
if site.ENABLE_USER_SITE:
|
if site.ENABLE_USER_SITE:
|
||||||
|
@ -190,6 +192,11 @@ class easy_install(Command):
|
||||||
self.site_dirs = None
|
self.site_dirs = None
|
||||||
self.installed_projects = {}
|
self.installed_projects = {}
|
||||||
self.sitepy_installed = False
|
self.sitepy_installed = False
|
||||||
|
# enable custom installation, known values: deb
|
||||||
|
self.install_layout = None
|
||||||
|
self.force_installation_into_system_dir = None
|
||||||
|
self.multiarch = None
|
||||||
|
|
||||||
# Always read easy_install options, even if we are subclassed, or have
|
# Always read easy_install options, even if we are subclassed, or have
|
||||||
# an independent instance created. This ensures that defaults will
|
# an independent instance created. This ensures that defaults will
|
||||||
# always come from the standard configuration file(s)' "easy_install"
|
# always come from the standard configuration file(s)' "easy_install"
|
||||||
|
@ -258,6 +265,13 @@ class easy_install(Command):
|
||||||
self.expand_basedirs()
|
self.expand_basedirs()
|
||||||
self.expand_dirs()
|
self.expand_dirs()
|
||||||
|
|
||||||
|
if self.install_layout:
|
||||||
|
if not self.install_layout.lower() in ['deb']:
|
||||||
|
raise DistutilsOptionError("unknown value for --install-layout")
|
||||||
|
self.install_layout = self.install_layout.lower()
|
||||||
|
import sysconfig
|
||||||
|
if sys.version_info[:2] >= (3, 3):
|
||||||
|
self.multiarch = sysconfig.get_config_var('MULTIARCH')
|
||||||
self._expand('install_dir', 'script_dir', 'build_directory',
|
self._expand('install_dir', 'script_dir', 'build_directory',
|
||||||
'site_dirs')
|
'site_dirs')
|
||||||
# If a non-default installation directory was specified, default the
|
# If a non-default installation directory was specified, default the
|
||||||
|
@ -282,6 +296,15 @@ class easy_install(Command):
|
||||||
if self.user and self.install_purelib:
|
if self.user and self.install_purelib:
|
||||||
self.install_dir = self.install_purelib
|
self.install_dir = self.install_purelib
|
||||||
self.script_dir = self.install_scripts
|
self.script_dir = self.install_scripts
|
||||||
|
|
||||||
|
if self.prefix == '/usr' and not self.force_installation_into_system_dir:
|
||||||
|
raise DistutilsOptionError("""installation into /usr
|
||||||
|
|
||||||
|
Trying to install into the system managed parts of the file system. Please
|
||||||
|
consider to install to another location, or use the option
|
||||||
|
--force-installation-into-system-dir to overwrite this warning.
|
||||||
|
""")
|
||||||
|
|
||||||
# default --record from the install command
|
# default --record from the install command
|
||||||
self.set_undefined_options('install', ('record', 'record'))
|
self.set_undefined_options('install', ('record', 'record'))
|
||||||
# Should this be moved to the if statement below? It's not used
|
# Should this be moved to the if statement below? It's not used
|
||||||
|
@ -1277,11 +1300,28 @@ class easy_install(Command):
|
||||||
self.debug_print("os.makedirs('%s', 0o700)" % path)
|
self.debug_print("os.makedirs('%s', 0o700)" % path)
|
||||||
os.makedirs(path, 0o700)
|
os.makedirs(path, 0o700)
|
||||||
|
|
||||||
|
if sys.version[:3] in ('2.3', '2.4', '2.5') or 'real_prefix' in sys.__dict__:
|
||||||
|
sitedir_name = 'site-packages'
|
||||||
|
else:
|
||||||
|
sitedir_name = 'dist-packages'
|
||||||
|
|
||||||
INSTALL_SCHEMES = dict(
|
INSTALL_SCHEMES = dict(
|
||||||
posix=dict(
|
posix=dict(
|
||||||
install_dir='$base/lib/python$py_version_short/site-packages',
|
install_dir='$base/lib/python$py_version_short/site-packages',
|
||||||
script_dir='$base/bin',
|
script_dir='$base/bin',
|
||||||
),
|
),
|
||||||
|
unix_local = dict(
|
||||||
|
install_dir = '$base/local/lib/python$py_version_short/%s' % sitedir_name,
|
||||||
|
script_dir = '$base/local/bin',
|
||||||
|
),
|
||||||
|
posix_local = dict(
|
||||||
|
install_dir = '$base/local/lib/python$py_version_short/%s' % sitedir_name,
|
||||||
|
script_dir = '$base/local/bin',
|
||||||
|
),
|
||||||
|
deb_system = dict(
|
||||||
|
install_dir = '$base/lib/python3/%s' % sitedir_name,
|
||||||
|
script_dir = '$base/bin',
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
DEFAULT_SCHEME = dict(
|
DEFAULT_SCHEME = dict(
|
||||||
|
@ -1292,11 +1332,18 @@ class easy_install(Command):
|
||||||
def _expand(self, *attrs):
|
def _expand(self, *attrs):
|
||||||
config_vars = self.get_finalized_command('install').config_vars
|
config_vars = self.get_finalized_command('install').config_vars
|
||||||
|
|
||||||
if self.prefix:
|
if self.prefix or self.install_layout:
|
||||||
|
if self.install_layout and self.install_layout in ['deb']:
|
||||||
|
scheme_name = "deb_system"
|
||||||
|
self.prefix = '/usr'
|
||||||
|
elif self.prefix or 'real_prefix' in sys.__dict__:
|
||||||
|
scheme_name = os.name
|
||||||
|
else:
|
||||||
|
scheme_name = "posix_local"
|
||||||
# Set default install_dir/scripts from --prefix
|
# Set default install_dir/scripts from --prefix
|
||||||
config_vars = config_vars.copy()
|
config_vars = config_vars.copy()
|
||||||
config_vars['base'] = self.prefix
|
config_vars['base'] = self.prefix
|
||||||
scheme = self.INSTALL_SCHEMES.get(os.name, self.DEFAULT_SCHEME)
|
scheme = self.INSTALL_SCHEMES.get(scheme_name,self.DEFAULT_SCHEME)
|
||||||
for attr, val in scheme.items():
|
for attr, val in scheme.items():
|
||||||
if getattr(self, attr, None) is None:
|
if getattr(self, attr, None) is None:
|
||||||
setattr(self, attr, val)
|
setattr(self, attr, val)
|
||||||
|
@ -1330,8 +1377,13 @@ def get_site_dirs():
|
||||||
"site-packages"),
|
"site-packages"),
|
||||||
os.path.join(prefix, "lib", "site-python")])
|
os.path.join(prefix, "lib", "site-python")])
|
||||||
else:
|
else:
|
||||||
|
if sys.version[:3] in ('2.3', '2.4', '2.5'):
|
||||||
|
sdir = "site-packages"
|
||||||
|
else:
|
||||||
|
sdir = "dist-packages"
|
||||||
sitedirs.extend(
|
sitedirs.extend(
|
||||||
[prefix, os.path.join(prefix, "lib", "site-packages")]
|
[os.path.join(prefix, "local/lib", "python" + sys.version[:3], sdir),
|
||||||
|
os.path.join(prefix, "lib", "python" + sys.version[:3], sdir)]
|
||||||
)
|
)
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
# for framework builds *only* we add the standard Apple
|
# for framework builds *only* we add the standard Apple
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from distutils import log, dir_util
|
from distutils import log, dir_util
|
||||||
import os
|
import os, sys
|
||||||
|
|
||||||
from setuptools.extern.six.moves import map
|
from setuptools.extern.six.moves import map
|
||||||
|
|
||||||
|
@ -19,14 +19,31 @@ class install_egg_info(Command):
|
||||||
|
|
||||||
def initialize_options(self):
|
def initialize_options(self):
|
||||||
self.install_dir = None
|
self.install_dir = None
|
||||||
|
self.install_layout = None
|
||||||
|
self.prefix_option = None
|
||||||
|
|
||||||
def finalize_options(self):
|
def finalize_options(self):
|
||||||
self.set_undefined_options('install_lib',
|
self.set_undefined_options('install_lib',
|
||||||
('install_dir', 'install_dir'))
|
('install_dir', 'install_dir'))
|
||||||
|
self.set_undefined_options('install',('install_layout','install_layout'))
|
||||||
|
if sys.hexversion > 0x2060000:
|
||||||
|
self.set_undefined_options('install',('prefix_option','prefix_option'))
|
||||||
ei_cmd = self.get_finalized_command("egg_info")
|
ei_cmd = self.get_finalized_command("egg_info")
|
||||||
basename = pkg_resources.Distribution(
|
basename = pkg_resources.Distribution(
|
||||||
None, None, ei_cmd.egg_name, ei_cmd.egg_version
|
None, None, ei_cmd.egg_name, ei_cmd.egg_version
|
||||||
).egg_name() + '.egg-info'
|
).egg_name() + '.egg-info'
|
||||||
|
|
||||||
|
if self.install_layout:
|
||||||
|
if not self.install_layout.lower() in ['deb']:
|
||||||
|
raise DistutilsOptionError("unknown value for --install-layout")
|
||||||
|
self.install_layout = self.install_layout.lower()
|
||||||
|
basename = basename.replace('-py%s' % pkg_resources.PY_MAJOR, '')
|
||||||
|
elif self.prefix_option or 'real_prefix' in sys.__dict__:
|
||||||
|
# don't modify for virtualenv
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
basename = basename.replace('-py%s' % pkg_resources.PY_MAJOR, '')
|
||||||
|
|
||||||
self.source = ei_cmd.egg_info
|
self.source = ei_cmd.egg_info
|
||||||
self.target = os.path.join(self.install_dir, basename)
|
self.target = os.path.join(self.install_dir, basename)
|
||||||
self.outputs = []
|
self.outputs = []
|
||||||
|
@ -56,6 +73,9 @@ class install_egg_info(Command):
|
||||||
for skip in '.svn/', 'CVS/':
|
for skip in '.svn/', 'CVS/':
|
||||||
if src.startswith(skip) or '/' + skip in src:
|
if src.startswith(skip) or '/' + skip in src:
|
||||||
return None
|
return None
|
||||||
|
if self.install_layout and self.install_layout in ['deb'] and src.startswith('SOURCES.txt'):
|
||||||
|
log.info("Skipping SOURCES.txt")
|
||||||
|
return None
|
||||||
self.outputs.append(dst)
|
self.outputs.append(dst)
|
||||||
log.debug("Copying %s to %s", src, dst)
|
log.debug("Copying %s to %s", src, dst)
|
||||||
return dst
|
return dst
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import imp
|
import imp
|
||||||
from itertools import product, starmap
|
from itertools import product, starmap
|
||||||
import distutils.command.install_lib as orig
|
import distutils.command.install_lib as orig
|
||||||
|
@ -6,6 +7,18 @@ import distutils.command.install_lib as orig
|
||||||
class install_lib(orig.install_lib):
|
class install_lib(orig.install_lib):
|
||||||
"""Don't add compiled flags to filenames of non-Python files"""
|
"""Don't add compiled flags to filenames of non-Python files"""
|
||||||
|
|
||||||
|
def initialize_options(self):
|
||||||
|
orig.install_lib.initialize_options(self)
|
||||||
|
self.multiarch = None
|
||||||
|
self.install_layout = None
|
||||||
|
|
||||||
|
def finalize_options(self):
|
||||||
|
orig.install_lib.finalize_options(self)
|
||||||
|
self.set_undefined_options('install',('install_layout','install_layout'))
|
||||||
|
if self.install_layout == 'deb' and sys.version_info[:2] >= (3, 3):
|
||||||
|
import sysconfig
|
||||||
|
self.multiarch = sysconfig.get_config_var('MULTIARCH')
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.build()
|
self.build()
|
||||||
outfiles = self.install()
|
outfiles = self.install()
|
||||||
|
@ -90,6 +103,8 @@ class install_lib(orig.install_lib):
|
||||||
exclude = self.get_exclusions()
|
exclude = self.get_exclusions()
|
||||||
|
|
||||||
if not exclude:
|
if not exclude:
|
||||||
|
import distutils.dir_util
|
||||||
|
distutils.dir_util._multiarch = self.multiarch
|
||||||
return orig.install_lib.copy_tree(self, infile, outfile)
|
return orig.install_lib.copy_tree(self, infile, outfile)
|
||||||
|
|
||||||
# Exclude namespace package __init__.py* files from the output
|
# Exclude namespace package __init__.py* files from the output
|
||||||
|
@ -99,12 +114,24 @@ class install_lib(orig.install_lib):
|
||||||
|
|
||||||
outfiles = []
|
outfiles = []
|
||||||
|
|
||||||
|
if self.multiarch:
|
||||||
|
import sysconfig
|
||||||
|
ext_suffix = sysconfig.get_config_var ('EXT_SUFFIX')
|
||||||
|
if ext_suffix.endswith(self.multiarch + ext_suffix[-3:]):
|
||||||
|
new_suffix = None
|
||||||
|
else:
|
||||||
|
new_suffix = "%s-%s%s" % (ext_suffix[:-3], self.multiarch, ext_suffix[-3:])
|
||||||
|
|
||||||
def pf(src, dst):
|
def pf(src, dst):
|
||||||
if dst in exclude:
|
if dst in exclude:
|
||||||
log.warn("Skipping installation of %s (namespace package)",
|
log.warn("Skipping installation of %s (namespace package)",
|
||||||
dst)
|
dst)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if self.multiarch and new_suffix and dst.endswith(ext_suffix) and not dst.endswith(new_suffix):
|
||||||
|
dst = dst.replace(ext_suffix, new_suffix)
|
||||||
|
log.info("renaming extension to %s", os.path.basename(dst))
|
||||||
|
|
||||||
log.info("copying %s -> %s", src, os.path.dirname(dst))
|
log.info("copying %s -> %s", src, os.path.dirname(dst))
|
||||||
outfiles.append(dst)
|
outfiles.append(dst)
|
||||||
return dst
|
return dst
|
||||||
|
|
|
@ -5,5 +5,5 @@ six-1.10.0.dist-info/RECORD,,
|
||||||
six-1.10.0.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
|
six-1.10.0.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
|
||||||
six-1.10.0.dist-info/metadata.json,sha256=jtOeeTBubYDChl_5Ql5ZPlKoHgg6rdqRIjOz1e5Ek2U,658
|
six-1.10.0.dist-info/metadata.json,sha256=jtOeeTBubYDChl_5Ql5ZPlKoHgg6rdqRIjOz1e5Ek2U,658
|
||||||
six-1.10.0.dist-info/top_level.txt,sha256=_iVH_iYEtEXnD8nYGQYpYFUvkUW9sEO1GYbkeKSAais,4
|
six-1.10.0.dist-info/top_level.txt,sha256=_iVH_iYEtEXnD8nYGQYpYFUvkUW9sEO1GYbkeKSAais,4
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/six-1.10.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
six-1.10.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
__pycache__/six.cpython-34.pyc,,
|
__pycache__/six.cpython-34.pyc,,
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
"wheel" copyright (c) 2012-2014 Daniel Holth <dholth@fastmail.fm> and
|
|
||||||
contributors.
|
|
||||||
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -18,7 +18,7 @@ wheel/signatures/ed25519py.py,sha256=SeTxiMZ7kmoMdIurBSaKb8Ku-amGnf6ZTRGElLzV8iI
|
||||||
wheel/signatures/keys.py,sha256=x3g4sAcs7KbIHM-5V8KWdMc24_VK7VeD-pjCyktNnYo,3320
|
wheel/signatures/keys.py,sha256=x3g4sAcs7KbIHM-5V8KWdMc24_VK7VeD-pjCyktNnYo,3320
|
||||||
wheel/test/__init__.py,sha256=M0NZuQ7-112l8K2h1eayVvSmvQrufrOcD5AYKgIf_Is,1
|
wheel/test/__init__.py,sha256=M0NZuQ7-112l8K2h1eayVvSmvQrufrOcD5AYKgIf_Is,1
|
||||||
wheel/test/pydist-schema.json,sha256=ynEvNvThC1zRa7FioMsW3k-9nl98ytEoo1_3xbOP2eo,11483
|
wheel/test/pydist-schema.json,sha256=ynEvNvThC1zRa7FioMsW3k-9nl98ytEoo1_3xbOP2eo,11483
|
||||||
wheel/test/test-1.0-py2.py3-none-win32.whl,sha256=JC_UXTN5KlLrdu43uH4caZSUyzrtPcUsRe-vTMunplE,5226
|
wheel/test/test-1.0-py2.py3-none-win32.whl,sha256=tCbefJJ7RpQJReRQaSRiwnTDM-YDlBpbcX9Rjcv9bf4,5224
|
||||||
wheel/test/test_basic.py,sha256=2DIvjApcshiLpXVsEhXvN3l62ZrwS0jJcWK8SyASoNU,6405
|
wheel/test/test_basic.py,sha256=2DIvjApcshiLpXVsEhXvN3l62ZrwS0jJcWK8SyASoNU,6405
|
||||||
wheel/test/test_install.py,sha256=c0EECXPkVIGhCD9V5ad2qsBPRPYb1ehhaS0k6Gv5JQc,1866
|
wheel/test/test_install.py,sha256=c0EECXPkVIGhCD9V5ad2qsBPRPYb1ehhaS0k6Gv5JQc,1866
|
||||||
wheel/test/test_keys.py,sha256=5mBc9tf2TwC3TCpx1ySTYsCe5yvd6kMK64AlUUCcKEY,2575
|
wheel/test/test_keys.py,sha256=5mBc9tf2TwC3TCpx1ySTYsCe5yvd6kMK64AlUUCcKEY,2575
|
||||||
|
@ -37,46 +37,45 @@ wheel/test/simple.dist/setup.py,sha256=8zWen71Um-iN_A5thot6VFogrkWs_RGVO-jr_MxkF
|
||||||
wheel/test/simple.dist/simpledist/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
wheel/test/simple.dist/simpledist/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
wheel/tool/__init__.py,sha256=anweXjmIg4EIHPkH0kOgcTx-gyOmzE4ieRe2yk-aHDA,13229
|
wheel/tool/__init__.py,sha256=anweXjmIg4EIHPkH0kOgcTx-gyOmzE4ieRe2yk-aHDA,13229
|
||||||
wheel-0.29.0.dist-info/DESCRIPTION.rst,sha256=JH6mogUIatQVQewIh4GB1ywCxuWbm7G4TjI_63dURp8,9813
|
wheel-0.29.0.dist-info/DESCRIPTION.rst,sha256=JH6mogUIatQVQewIh4GB1ywCxuWbm7G4TjI_63dURp8,9813
|
||||||
wheel-0.29.0.dist-info/LICENSE.txt,sha256=zKniDGrx_Pv2lAjzd3aShsvuvN7TNhAMm0o_NfvmNeQ,1125
|
|
||||||
wheel-0.29.0.dist-info/METADATA,sha256=SA310hLnZJJFgp1TRwFLCIiXurVwKpIq2w3KWhMdgdo,11019
|
wheel-0.29.0.dist-info/METADATA,sha256=SA310hLnZJJFgp1TRwFLCIiXurVwKpIq2w3KWhMdgdo,11019
|
||||||
wheel-0.29.0.dist-info/RECORD,,
|
wheel-0.29.0.dist-info/RECORD,,
|
||||||
wheel-0.29.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
wheel-0.29.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
wheel-0.29.0.dist-info/entry_points.txt,sha256=2LFQDKAUKNMG-2zNtbLscfirPr9BEqBuwc-JALCv-D0,107
|
wheel-0.29.0.dist-info/entry_points.txt,sha256=2LFQDKAUKNMG-2zNtbLscfirPr9BEqBuwc-JALCv-D0,107
|
||||||
wheel-0.29.0.dist-info/metadata.json,sha256=kNhUbqu0cIQt0fnVbbbNZer4avDz8L4xhg0rPFL6Lqk,1621
|
wheel-0.29.0.dist-info/metadata.json,sha256=dxlCIm4231kQk4VlVdiN5ABz3l0nWY3gQ9HPoDammlU,1510
|
||||||
wheel-0.29.0.dist-info/top_level.txt,sha256=HxSBIbgEstMPe4eFawhA66Mq-QYHMopXVoAncfjb_1c,6
|
wheel-0.29.0.dist-info/top_level.txt,sha256=HxSBIbgEstMPe4eFawhA66Mq-QYHMopXVoAncfjb_1c,6
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/bin/wheel,sha256=9AId6sAKuD-WAQ9mDTPhEG_pesWmjL2UuvKmOR8tOTo,278
|
../../../bin/wheel,sha256=9AId6sAKuD-WAQ9mDTPhEG_pesWmjL2UuvKmOR8tOTo,278
|
||||||
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform_linux64/p34/lib/python3.4/site-packages/wheel-0.29.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
wheel-0.29.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
wheel/__pycache__/decorator.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/test_tagopt.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/metadata.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/install.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/__main__.cpython-34.pyc,,
|
|
||||||
wheel/test/simple.dist/simpledist/__pycache__/__init__.cpython-34.pyc,,
|
wheel/test/simple.dist/simpledist/__pycache__/__init__.cpython-34.pyc,,
|
||||||
wheel/signatures/__pycache__/ed25519py.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/test_basic.cpython-34.pyc,,
|
|
||||||
wheel/test/headers.dist/__pycache__/setup.cpython-34.pyc,,
|
|
||||||
wheel/test/simple.dist/__pycache__/setup.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
wheel/signatures/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/wininst2wheel.cpython-34.pyc,,
|
wheel/__pycache__/wininst2wheel.cpython-34.pyc,,
|
||||||
wheel/test/__pycache__/test_keys.cpython-34.pyc,,
|
wheel/test/headers.dist/__pycache__/headersdist.cpython-34.pyc,,
|
||||||
wheel/__pycache__/egg2wheel.cpython-34.pyc,,
|
wheel/__pycache__/__main__.cpython-34.pyc,,
|
||||||
wheel/test/complex-dist/__pycache__/setup.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/test_ranking.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/test_tool.cpython-34.pyc,,
|
wheel/test/__pycache__/test_tool.cpython-34.pyc,,
|
||||||
wheel/test/__pycache__/test_signatures.cpython-34.pyc,,
|
wheel/__pycache__/metadata.cpython-34.pyc,,
|
||||||
|
wheel/test/complex-dist/__pycache__/setup.cpython-34.pyc,,
|
||||||
wheel/signatures/__pycache__/djbec.cpython-34.pyc,,
|
wheel/signatures/__pycache__/djbec.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/__init__.cpython-34.pyc,,
|
||||||
wheel/signatures/__pycache__/keys.cpython-34.pyc,,
|
wheel/signatures/__pycache__/keys.cpython-34.pyc,,
|
||||||
wheel/__pycache__/util.cpython-34.pyc,,
|
wheel/test/__pycache__/test_signatures.cpython-34.pyc,,
|
||||||
wheel/__pycache__/pkginfo.cpython-34.pyc,,
|
|
||||||
wheel/__pycache__/pep425tags.cpython-34.pyc,,
|
|
||||||
wheel/test/complex-dist/complexdist/__pycache__/__init__.cpython-34.pyc,,
|
|
||||||
wheel/tool/__pycache__/__init__.cpython-34.pyc,,
|
wheel/tool/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
wheel/test/simple.dist/__pycache__/setup.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/test_keys.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/archive.cpython-34.pyc,,
|
||||||
|
wheel/test/headers.dist/__pycache__/setup.cpython-34.pyc,,
|
||||||
|
wheel/test/complex-dist/complexdist/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/pkginfo.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/bdist_wheel.cpython-34.pyc,,
|
||||||
|
wheel/signatures/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/util.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/test_ranking.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/test_basic.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/install.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/decorator.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/test_install.cpython-34.pyc,,
|
||||||
|
wheel/signatures/__pycache__/ed25519py.cpython-34.pyc,,
|
||||||
|
wheel/test/__pycache__/test_tagopt.cpython-34.pyc,,
|
||||||
wheel/test/__pycache__/test_wheelfile.cpython-34.pyc,,
|
wheel/test/__pycache__/test_wheelfile.cpython-34.pyc,,
|
||||||
|
wheel/__pycache__/pep425tags.cpython-34.pyc,,
|
||||||
wheel/test/__pycache__/test_paths.cpython-34.pyc,,
|
wheel/test/__pycache__/test_paths.cpython-34.pyc,,
|
||||||
wheel/__pycache__/paths.cpython-34.pyc,,
|
wheel/__pycache__/paths.cpython-34.pyc,,
|
||||||
wheel/__pycache__/bdist_wheel.cpython-34.pyc,,
|
wheel/__pycache__/egg2wheel.cpython-34.pyc,,
|
||||||
wheel/__pycache__/archive.cpython-34.pyc,,
|
|
||||||
wheel/test/__pycache__/test_install.cpython-34.pyc,,
|
|
||||||
wheel/test/headers.dist/__pycache__/headersdist.cpython-34.pyc,,
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4"], "extensions": {"python.commands": {"wrap_console": {"wheel": "wheel.tool:main"}}, "python.details": {"contacts": [{"email": "dholth@fastmail.fm", "name": "Daniel Holth", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://bitbucket.org/pypa/wheel/"}}, "python.exports": {"console_scripts": {"wheel": "wheel.tool:main"}, "distutils.commands": {"bdist_wheel": "wheel.bdist_wheel:bdist_wheel"}}}, "extras": ["faster-signatures", "signatures", "tool"], "generator": "bdist_wheel (0.29.0)", "keywords": ["wheel", "packaging"], "license": "MIT", "metadata_version": "2.0", "name": "wheel", "run_requires": [{"extra": "faster-signatures", "requires": ["ed25519ll"]}, {"extra": "signatures", "requires": ["keyring", "keyrings.alt"]}, {"environment": "python_version==\"2.6\"", "requires": ["argparse"]}, {"environment": "python_version==\"2.6\"", "extra": "signatures", "requires": ["importlib"]}, {"environment": "sys_platform!=\"win32\"", "extra": "signatures", "requires": ["pyxdg"]}], "summary": "A built-package format for Python.", "test_requires": [{"requires": ["coverage", "jsonschema", "pytest", "pytest-cov"]}], "version": "0.29.0"}
|
{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4"], "extensions": {"python.commands": {"wrap_console": {"wheel": "wheel.tool:main"}}, "python.details": {"contacts": [{"email": "dholth@fastmail.fm", "name": "Daniel Holth", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/pypa/wheel/"}}, "python.exports": {"console_scripts": {"wheel": "wheel.tool:main"}, "distutils.commands": {"bdist_wheel": "wheel.bdist_wheel:bdist_wheel"}}}, "extras": ["faster-signatures", "signatures", "tool"], "generator": "bdist_wheel (0.29.0)", "keywords": ["wheel", "packaging"], "license": "MIT", "metadata_version": "2.0", "name": "wheel", "run_requires": [{"extra": "faster-signatures", "requires": ["ed25519ll"]}, {"extra": "signatures", "requires": ["keyring", "keyrings.alt"]}, {"environment": "python_version==\"2.6\"", "requires": ["argparse"]}, {"environment": "python_version==\"2.6\"", "extra": "signatures", "requires": ["importlib"]}, {"environment": "sys_platform!=\"win32\"", "extra": "signatures", "requires": ["pyxdg"]}], "summary": "A built-package format for Python.", "version": "0.29.0"}
|
Binary file not shown.
Loading…
Reference in a new issue