Chris Hunt
4acc059cfd
Remove unused argument
2020-02-04 21:55:42 -05:00
Chris Hunt
c825c53f76
Rename unpack_{file,http}_url since they no longer unpack
2020-02-04 21:55:12 -05:00
Chris Hunt
ada2f55f13
Inline file variable
2020-02-04 21:49:42 -05:00
Chris Hunt
135f2ac0ef
Move unpacking into unpack_url
2020-02-04 21:49:42 -05:00
Chris Hunt
35a52c1397
Hold file in intermediate variable in unpack_url
2020-02-04 21:49:42 -05:00
Chris Hunt
71eaa4658f
Return File from unpack_* functions
...
Since we need both the file path and content type to unpack, and we want
to move unpacking out of the lower-level functions, return all the
information needed so it's easier to move the unpacking out.
2020-02-04 21:49:42 -05:00
Chris Hunt
791725aad9
Move directory handling from unpack_file_url to unpack_url
2020-02-04 21:49:42 -05:00
Chris Hunt
395787bebc
Inline link.file_path in unpack_file_url
2020-02-04 21:49:42 -05:00
Chris Hunt
062ccf9dba
Use early-return style in unpack_url
...
This will make it easier to move directory handling up to unpack_url.
2020-02-04 21:49:42 -05:00
Chris Hunt
71e0ea19af
Assert req.source_dir is None during linked requirement preparation
...
req.source_dir is only set by:
1. `InstallRequirement.__init__`
2. `InstallRequirement.ensure_has_source_dir`
`InstallRequirement.__init__` is only called with source_dir for
editable requirements, for which we would not call
`RequirementPreparer.prepare_linked_requirement` (only
`prepare_editable_requirement`).
We will use this assertion for justifying later refactoring.
2020-01-08 20:11:28 -05:00
Stéphane Bidoul (ACSONE)
68e49b9613
Remove redundant expanduser for download_dir in preparer
...
Since
- download_dir is only set by the download command
- download_dir is
normalized at the beginning of the download command
- path normalization includes expanduser
Therefore expanduser in the preparer is redundant
2020-01-01 18:54:08 +01:00
Stéphane Bidoul (ACSONE)
a6d212383b
Remove redundant path normalization in preparer
...
wheel_download_dir is normalized at the
beginning of the wheel command
2019-12-31 05:32:42 +01:00
Chris Hunt
ce9ddbb600
Move download file copying out of unpacking functions
...
Now our "unpacking" functions aren't also for sometimes populating
the download directory.
2019-12-26 11:12:17 -05:00
Chris Hunt
5c90145462
Switch conditions
2019-12-24 16:59:24 -05:00
Chris Hunt
554db9230d
Move directory requirement download logging out of unpack_file_url
...
One less use of `download_dir` in `unpack_file_url`, which will make it
easier to factor out.
2019-12-24 16:56:24 -05:00
Christopher Hunt
ab12706aaa
Merge pull request #7478 from chrahunt/refactor/make-functional-download-tests
...
Make unpack_* unit tests into functional tests
2019-12-17 07:55:29 +08:00
Chris Hunt
327c295554
Keep path to downloaded archive on InstallRequirement
...
Now we'll be able to transition other parts of the code to use
pre-existing archives directly instead of relying on unpacked sources.
2019-12-14 11:59:42 -05:00
Christopher Hunt
fedde5fa2c
Do not cleanup archive download tempdir immediately ( #7479 )
...
* Do not cleanup download tempdir immediately
The previous logic forced us to handle populating the download directory
in this function right next to the download and hash checking. By
extending the lifetime of the directory we can more easily separate the
code.
This also allows for additional optimizations later: by using metadata
from wheels directly instead of unpacking them, we can avoid extracting
wheels unnecessarily. Unpacked files can be easily 3x larger than the
archives themselves, so this should reduce disk utilization and general
IO significantly.
2019-12-14 23:19:25 +08:00
Chris Hunt
d30f406c37
Check file actually used against hashes
...
This makes the behavior of this function easier to test, since we can
use a different file to distinguish the already-downloaded case from the
existing-file-hash-failed case.
2019-12-13 20:30:45 -05:00
Chris Hunt
7dea92e5b3
Replace already_downloaded_path with existence check
...
These statements are equivalent, so we exchange them. This will make it
easier to factor the download_dir concerns out of these functions.
2019-12-13 00:46:44 -05:00
Chris Hunt
6b0a79501c
Assert that target file does not exist
...
_check_download_dir will only return a falsy value if either:
* the provided path does not exist
* the hash does not match - in which case the file is unlinked
so the file cannot exist at either of these points.
2019-12-12 21:18:03 -05:00
Maxim Kurnikov
b69560661b
remove disallow_untyped_defs=False for pip._internal.distributions, pip._internal.operations.prepare
2019-12-12 21:35:37 +01:00
Chris Hunt
cf743dd245
Remove unnecessary unlink in unpack_http_url
...
The file is downloaded into a TempDirectory which will get cleaned up at
the end of the `with` block, so no need to explicitly unlink the file.
2019-12-08 22:33:51 +01:00
Chris Hunt
24d2f1e719
Remove unused arguments
2019-12-05 20:29:43 -05:00
Chris Hunt
7db57478a2
Construct Downloader outside RequirementPreparer
...
Reduces RequirementPreparer responsibilities, and will let us get rid of
some constructor arguments.
2019-12-05 20:26:53 -05:00
Chris Hunt
78a221cf71
Move Downloader to network.download
...
This will help us move Downloader construction out of
RequirementPreparer, reducing its concerns and making it easier to test
in isolation.
2019-12-04 18:31:53 -05:00
Chris Hunt
3a2ff979de
Move _http_get_download to network.download
2019-12-04 18:31:53 -05:00
Chris Hunt
e354b728dc
Move _get_http_response_filename to network.download
2019-12-04 18:31:53 -05:00
Chris Hunt
762e4a0817
Move parse_content_disposition to network.download
2019-12-04 18:31:53 -05:00
Chris Hunt
32b0fc23ab
Move sanitize_content_filename to network.download
2019-12-04 18:31:53 -05:00
Chris Hunt
3fbc991f0c
Move _prepare_download to network.download
2019-12-04 18:31:53 -05:00
Chris Hunt
864f78bd96
Add network.download module
...
This will be home to Dowloader, Download, and associated helper
functions. Since this is an abstraction over PipSession, it makes
sense to keep these functions in a separate module.
Also move a helper function here from operations.prepare.
2019-12-04 18:30:27 -05:00
Chris Hunt
aaabdfc2f7
Switch to early-return in _prepare_download
...
Makes this function simpler by removing a local variable and reduces
overall lines of code.
2019-11-29 10:26:37 -05:00
Chris Hunt
d279807a0e
Extract chunks into separate variable
2019-11-29 10:24:56 -05:00
Chris Hunt
46adcc89a6
Remove outdated comment in operations.prepare
...
There are several reasons why we don't trace progress as indicated a few
lines above.
2019-11-29 10:21:24 -05:00
Xavier Fernandez
db1a2754bb
Fix logging of cached response
...
Cached responses often (always ?) provide a length meaning they were
never logged as such.
2019-11-25 23:15:00 +01:00
Chris Hunt
59f22068d4
Move Downloader construction to RequirementPreparer.__init__
...
Just one step away from pulling this out of operations.prepare
altogether.
2019-11-21 19:11:46 -05:00
Chris Hunt
3c8be92c32
Move Downloader out of unpack_url
...
This simplifies the work done in the operations.prepare helper functions
and also opens up the door to remove session and progress_bar from
RequirementPreparer itself.
2019-11-21 19:11:46 -05:00
Chris Hunt
19806574e5
Move Downloader out of unpack_http_url
...
Reduces scope of session and progress_bar.
2019-11-21 19:11:46 -05:00
Chris Hunt
4be0a5445a
Move Downloader up out of _download_http_url
...
Reduces exposure of session and progress_bar.
2019-11-21 19:11:46 -05:00
Chris Hunt
3ce317890e
Introduce Downloader for progress-showing downloads
2019-11-21 19:05:42 -05:00
Chris Hunt
e4d2d34fe1
Represent download as its own type
...
This abstraction will let us hide details about the actual downloading
and display of progress from most of operations.prepare.
2019-11-21 19:04:28 -05:00
Chris Hunt
e706af20fe
Simplify writing file chunks
...
A plain loop is easier to follow than chained generators consumed by
a helper function, and reduces the number of objects being passed around
just to download a file.
2019-11-19 17:06:18 -05:00
Chris Hunt
dca556fdaa
Check hashes after download is complete
...
Instead of computing hashes on-the-fly we do it after fully downloading
the file. This step will let us move hash checking to a higher-level
function without introducing a lot of complexity.
2019-11-19 17:06:18 -05:00
Christopher Hunt
9ae2e6440d
Merge pull request #7365 from chrahunt/refactor/cleanup-prepare-2
...
Cleanup operations.prepare download functions
2019-11-20 06:05:25 +08:00
Ahilya
5051c74d5e
Redact passwords from index-url during download
...
Made changes in _download_url so that it relies on
redact_auth_from_url from misc to redact passwords.
Closes https://github.com/pypa/pip/issues/6783
2019-11-17 20:54:32 +05:30
Chris Hunt
09b19dbbb8
Move actual session.get call into separate function
...
By moving this call (and its long explanation) to a separate function,
diffs for later refactoring will be easier to review.
2019-11-16 12:37:47 -05:00
Chris Hunt
a9997127b9
Don't pass explicit step size to progress indicator
...
Now the place we construct the progress indicator doesn't need to know
about our strategy for consuming the response, freeing us to extract the
chunk iterator construction into the caller.
2019-11-16 12:37:47 -05:00
Chris Hunt
6e68c8d9ba
Retrieve HTTP response size in separate function
...
Also use `None` as the "no size available" indicator value, which is
already compatible with all of its current uses.
2019-11-16 12:37:44 -05:00
Chris Hunt
dd08330ac3
Construct download name in separate function
...
Later, we will use this to make a dedicated object that represents
our download.
2019-11-16 12:26:54 -05:00
Chris Hunt
f5f1761aba
Inline content-type retrieval
...
This makes it easier to factor out the filename calculation.
2019-11-16 12:26:14 -05:00
Pradyun Gedam
ccd2ced9bc
Add disallow_any_generics = True to mypy configuration ( #7110 )
2019-11-14 20:46:21 +05:30
Maxim Kurnikov
d1452ffabd
add global disallow_any_generics=True
2019-11-12 21:08:48 +03:00
Chris Hunt
16ffd1a9c4
Normalize style
2019-11-11 22:36:46 -05:00
Chris Hunt
95375a5213
Make session a required parameter in operations.prepare
2019-11-11 22:34:52 -05:00
Pradyun Gedam
11b3fc2265
Drop use_user_site argument from prepare_editable_requirement
2019-11-10 13:51:36 +05:30
Pradyun Gedam
c9606b86e1
Add use_user_site to RequirementPreparer
2019-11-10 13:51:29 +05:30
Pradyun Gedam
0612685e7e
Stop passing require_hashes to Resolver directly
2019-11-10 01:52:03 +05:30
Pradyun Gedam
c0afe5c81d
Add require_hashes to RequirementPreparer
2019-11-09 12:13:29 +05:30
Chris Hunt
deac2343dc
Don't pass PackageFinder to Preparer from Resolver
...
Preparer's overall responsibilities align more with having its own
reference to finder, which will help us remove it from resolver later.
2019-11-05 20:57:14 -05:00
Christopher Hunt
a0ff620240
Merge pull request #7291 from chrahunt/refactor/cleanup-prepare-1
...
Cleanup operations.prepare
2019-11-04 19:39:24 +08:00
Chris Hunt
54efa9dbdb
Reorder operations.prepare._download_url
2019-11-03 16:26:37 -05:00
Chris Hunt
b873df49b0
Factor from_cache check into separate function
2019-11-03 15:29:19 -05:00
Chris Hunt
e8976af4e1
Show download size if available
...
This simplifies the logic for displaying output.
2019-11-03 15:25:59 -05:00
Chris Hunt
5da6abf60d
Move resp_chunks to network.utils
...
This generic piece of code only clutters operations.prepare, making it
harder to refactor.
2019-11-03 15:16:42 -05:00
Chris Hunt
44cc3aeb0a
Use session from RequirePreparer, not Resolver
2019-11-03 14:26:47 -05:00
Christopher Hunt
de736c661e
Merge pull request #7178 from Desetude/fix/use-str-format
...
Replace %-format with str#format
2019-11-03 01:34:14 +08:00
Stéphane Bidoul (ACSONE)
18a58815a1
Refactor _get_used_vcs_backend
2019-11-01 12:53:54 +01:00
Pradyun Gedam
2db6f428bf
Update imports to {index -> index.package_finder}
2019-10-19 22:24:01 +05:30
Chris Hunt
6eb83c6d3a
Move remaining functions in download to operations.prepare
...
The only user of this module is operations.prepare.RequirementPreparer.
Moving the functionality to the single using module means that
refactoring will be easier (since all the mess is in one place). This
also removes a mis-named module from the top-level of the repository.
2019-10-16 21:29:06 -04:00
Desetude
7e4e8eea40
Replace %-format with str#format
2019-10-12 17:08:10 +01:00
Maxim Kurnikov
3692097cca
add per-file disallow_untyped_defs=False, and set it to True globally
2019-09-29 23:31:15 +02:00
Chris Hunt
cf7ebdbbc2
Move PipSession to network.session
2019-09-27 01:02:52 -04:00
Chris Hunt
892b58f244
Move helper functions into Link
2019-09-22 00:08:10 -04:00
Pradyun Gedam
ab6d550592
Remove link.is_artifact
2019-09-21 14:30:14 +05:30
Chris Hunt
ee8cc0e648
Use unpack_file instead of unpack_file_url in wheel
2019-09-19 20:19:24 -04:00
Chris Hunt
59b0a79bde
Add Link.file_path property
2019-09-19 20:14:10 -04:00
Chris Jerdonek
3303c11828
Remove index.py and req/constructors.py's dependence on download.py.
2019-09-13 09:57:04 -07:00
Chris Hunt
997c9b71b3
Move non-throwing code outside try/except.
2019-09-06 19:55:57 -04:00
Chris Hunt
b72d9f1477
Move autodelete_unpacked to more logical place.
2019-09-06 19:55:57 -04:00
Chris Hunt
a20a06cd34
Move unpack_url above irrelevant checks.
2019-09-06 19:55:57 -04:00
Chris Hunt
aef01d25cc
Remove unused argument from unpack_url.
2019-09-06 19:55:57 -04:00
Chris Hunt
45283a332f
Move delete marker file creation from unpack_url to caller.
2019-09-06 19:55:38 -04:00
Pradyun Gedam
a217f550e1
Remove duplicate line in comment. ( #6965 )
2019-09-05 13:03:24 +05:30
Christopher Hunt
0a246b98a9
Update src/pip/_internal/operations/prepare.py
...
Co-Authored-By: Pradyun Gedam <pradyunsg@gmail.com>
2019-09-04 02:54:23 -04:00
Chris Hunt
efd43fd0fe
Minor comment typo.
2019-09-02 19:37:33 -04:00
Chris Hunt
b719cc0033
Fix indentation: fix indentation
2019-09-02 19:36:57 -04:00
Chris Hunt
b1978bc608
Fix indentation: move expanduser to constructor
2019-09-02 19:36:00 -04:00
Chris Hunt
d45a544b47
Remove duplicate line in comment.
2019-09-02 15:52:26 -04:00
Stéphane Bidoul (ACSONE)
2e1dfbef76
consolidate vcs link detection
2019-08-16 08:14:33 +02:00
Pradyun Gedam
476606425a
Add mypy's no-strict-optional configuration inline ( #6750 )
2019-08-04 21:59:42 +05:30
Pradyun Gedam
f18ec526db
Unify calls to prepare_distribution_metadata to one callsite
2019-08-04 11:16:16 +05:30
Pradyun Gedam
f377148f6d
Use mypy's inline configuration syntax for opt-outs
2019-07-30 12:39:51 +05:30
Pradyun Gedam
b43c71cbc7
Simplify references to req.link
2019-07-29 20:30:55 +05:30
Pradyun Gedam
ec725cb1a0
Populate InstallRequirement.link before preparing it
2019-07-29 20:29:34 +05:30
Pradyun Gedam
537b0fca12
Change isort multi_line_output to 3
2019-07-22 10:15:27 +05:30
Pradyun Gedam
a0670a9c98
Rename AbstractDistribution.prep_for_dist()
...
Use a better name prepare_distribution_metadata()
2019-06-16 05:29:00 +05:30
Pradyun Gedam
534a102564
Rename make_abstract_dist
...
Use a more descriptive name make_distribution_for_install_requirement()
2019-06-16 05:23:16 +05:30
Pradyun Gedam
d43e31802b
Add distributions sub-package for holding build logic
...
This moves the DistAbstraction logic into a dedicated 'distributions'
sub-package, with separated modules for the concrete implementations of
various distribution handling logic.
2019-06-14 23:27:42 +05:30
Pradyun Gedam
d3987fe114
Sort imports
2019-06-14 23:27:42 +05:30