Venkat.R commited on
Commit
f301576
1 Parent(s): 9f91e91

tech: clean up the unneccassary transactify directory

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. transactify/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt +0 -760
  2. transactify/Lib/site-packages/pip-24.0.dist-info/INSTALLER +0 -1
  3. transactify/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt +0 -20
  4. transactify/Lib/site-packages/pip-24.0.dist-info/METADATA +0 -88
  5. transactify/Lib/site-packages/pip-24.0.dist-info/RECORD +0 -1024
  6. transactify/Lib/site-packages/pip-24.0.dist-info/REQUESTED +0 -0
  7. transactify/Lib/site-packages/pip-24.0.dist-info/WHEEL +0 -5
  8. transactify/Lib/site-packages/pip-24.0.dist-info/entry_points.txt +0 -4
  9. transactify/Lib/site-packages/pip-24.0.dist-info/top_level.txt +0 -1
  10. transactify/Lib/site-packages/pip/__init__.py +0 -13
  11. transactify/Lib/site-packages/pip/__main__.py +0 -24
  12. transactify/Lib/site-packages/pip/__pip-runner__.py +0 -50
  13. transactify/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc +0 -0
  14. transactify/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc +0 -0
  15. transactify/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc +0 -0
  16. transactify/Lib/site-packages/pip/_internal/__init__.py +0 -18
  17. transactify/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc +0 -0
  18. transactify/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc +0 -0
  19. transactify/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc +0 -0
  20. transactify/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc +0 -0
  21. transactify/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc +0 -0
  22. transactify/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc +0 -0
  23. transactify/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc +0 -0
  24. transactify/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc +0 -0
  25. transactify/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc +0 -0
  26. transactify/Lib/site-packages/pip/_internal/build_env.py +0 -311
  27. transactify/Lib/site-packages/pip/_internal/cache.py +0 -290
  28. transactify/Lib/site-packages/pip/_internal/cli/__init__.py +0 -4
  29. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  30. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc +0 -0
  31. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc +0 -0
  32. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc +0 -0
  33. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc +0 -0
  34. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc +0 -0
  35. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc +0 -0
  36. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc +0 -0
  37. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc +0 -0
  38. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc +0 -0
  39. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc +0 -0
  40. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc +0 -0
  41. transactify/Lib/site-packages/pip/_internal/cli/autocompletion.py +0 -172
  42. transactify/Lib/site-packages/pip/_internal/cli/base_command.py +0 -236
  43. transactify/Lib/site-packages/pip/_internal/cli/cmdoptions.py +0 -1074
  44. transactify/Lib/site-packages/pip/_internal/cli/command_context.py +0 -27
  45. transactify/Lib/site-packages/pip/_internal/cli/main.py +0 -79
  46. transactify/Lib/site-packages/pip/_internal/cli/main_parser.py +0 -134
  47. transactify/Lib/site-packages/pip/_internal/cli/parser.py +0 -294
  48. transactify/Lib/site-packages/pip/_internal/cli/progress_bars.py +0 -68
  49. transactify/Lib/site-packages/pip/_internal/cli/req_command.py +0 -505
  50. transactify/Lib/site-packages/pip/_internal/cli/spinners.py +0 -159
transactify/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt DELETED
@@ -1,760 +0,0 @@
1
- @Switch01
2
- A_Rog
3
- Aakanksha Agrawal
4
- Abhinav Sagar
5
- ABHYUDAY PRATAP SINGH
6
- abs51295
7
- AceGentile
8
- Adam Chainz
9
- Adam Tse
10
- Adam Wentz
11
- admin
12
- Adrien Morison
13
- ahayrapetyan
14
- Ahilya
15
- AinsworthK
16
- Akash Srivastava
17
- Alan Yee
18
- Albert Tugushev
19
- Albert-Guan
20
- albertg
21
- Alberto Sottile
22
- Aleks Bunin
23
- Ales Erjavec
24
- Alethea Flowers
25
- Alex Gaynor
26
- Alex Grönholm
27
- Alex Hedges
28
- Alex Loosley
29
- Alex Morega
30
- Alex Stachowiak
31
- Alexander Shtyrov
32
- Alexandre Conrad
33
- Alexey Popravka
34
- Aleš Erjavec
35
- Alli
36
- Ami Fischman
37
- Ananya Maiti
38
- Anatoly Techtonik
39
- Anders Kaseorg
40
- Andre Aguiar
41
- Andreas Lutro
42
- Andrei Geacar
43
- Andrew Gaul
44
- Andrew Shymanel
45
- Andrey Bienkowski
46
- Andrey Bulgakov
47
- Andrés Delfino
48
- Andy Freeland
49
- Andy Kluger
50
- Ani Hayrapetyan
51
- Aniruddha Basak
52
- Anish Tambe
53
- Anrs Hu
54
- Anthony Sottile
55
- Antoine Musso
56
- Anton Ovchinnikov
57
- Anton Patrushev
58
- Antonio Alvarado Hernandez
59
- Antony Lee
60
- Antti Kaihola
61
- Anubhav Patel
62
- Anudit Nagar
63
- Anuj Godase
64
- AQNOUCH Mohammed
65
- AraHaan
66
- Arindam Choudhury
67
- Armin Ronacher
68
- Artem
69
- Arun Babu Neelicattu
70
- Ashley Manton
71
- Ashwin Ramaswami
72
- atse
73
- Atsushi Odagiri
74
- Avinash Karhana
75
- Avner Cohen
76
- Awit (Ah-Wit) Ghirmai
77
- Baptiste Mispelon
78
- Barney Gale
79
- barneygale
80
- Bartek Ogryczak
81
- Bastian Venthur
82
- Ben Bodenmiller
83
- Ben Darnell
84
- Ben Hoyt
85
- Ben Mares
86
- Ben Rosser
87
- Bence Nagy
88
- Benjamin Peterson
89
- Benjamin VanEvery
90
- Benoit Pierre
91
- Berker Peksag
92
- Bernard
93
- Bernard Tyers
94
- Bernardo B. Marques
95
- Bernhard M. Wiedemann
96
- Bertil Hatt
97
- Bhavam Vidyarthi
98
- Blazej Michalik
99
- Bogdan Opanchuk
100
- BorisZZZ
101
- Brad Erickson
102
- Bradley Ayers
103
- Brandon L. Reiss
104
- Brandt Bucher
105
- Brett Randall
106
- Brett Rosen
107
- Brian Cristante
108
- Brian Rosner
109
- briantracy
110
- BrownTruck
111
- Bruno Oliveira
112
- Bruno Renié
113
- Bruno S
114
- Bstrdsmkr
115
- Buck Golemon
116
- burrows
117
- Bussonnier Matthias
118
- bwoodsend
119
- c22
120
- Caleb Martinez
121
- Calvin Smith
122
- Carl Meyer
123
- Carlos Liam
124
- Carol Willing
125
- Carter Thayer
126
- Cass
127
- Chandrasekhar Atina
128
- Chih-Hsuan Yen
129
- Chris Brinker
130
- Chris Hunt
131
- Chris Jerdonek
132
- Chris Kuehl
133
- Chris McDonough
134
- Chris Pawley
135
- Chris Pryer
136
- Chris Wolfe
137
- Christian Clauss
138
- Christian Heimes
139
- Christian Oudard
140
- Christoph Reiter
141
- Christopher Hunt
142
- Christopher Snyder
143
- cjc7373
144
- Clark Boylan
145
- Claudio Jolowicz
146
- Clay McClure
147
- Cody
148
- Cody Soyland
149
- Colin Watson
150
- Collin Anderson
151
- Connor Osborn
152
- Cooper Lees
153
- Cooper Ry Lees
154
- Cory Benfield
155
- Cory Wright
156
- Craig Kerstiens
157
- Cristian Sorinel
158
- Cristina
159
- Cristina Muñoz
160
- Curtis Doty
161
- cytolentino
162
- Daan De Meyer
163
- Dale
164
- Damian
165
- Damian Quiroga
166
- Damian Shaw
167
- Dan Black
168
- Dan Savilonis
169
- Dan Sully
170
- Dane Hillard
171
- daniel
172
- Daniel Collins
173
- Daniel Hahler
174
- Daniel Holth
175
- Daniel Jost
176
- Daniel Katz
177
- Daniel Shaulov
178
- Daniele Esposti
179
- Daniele Nicolodi
180
- Daniele Procida
181
- Daniil Konovalenko
182
- Danny Hermes
183
- Danny McClanahan
184
- Darren Kavanagh
185
- Dav Clark
186
- Dave Abrahams
187
- Dave Jones
188
- David Aguilar
189
- David Black
190
- David Bordeynik
191
- David Caro
192
- David D Lowe
193
- David Evans
194
- David Hewitt
195
- David Linke
196
- David Poggi
197
- David Pursehouse
198
- David Runge
199
- David Tucker
200
- David Wales
201
- Davidovich
202
- ddelange
203
- Deepak Sharma
204
- Deepyaman Datta
205
- Denise Yu
206
- dependabot[bot]
207
- derwolfe
208
- Desetude
209
- Devesh Kumar Singh
210
- Diego Caraballo
211
- Diego Ramirez
212
- DiegoCaraballo
213
- Dimitri Merejkowsky
214
- Dimitri Papadopoulos
215
- Dirk Stolle
216
- Dmitry Gladkov
217
- Dmitry Volodin
218
- Domen Kožar
219
- Dominic Davis-Foster
220
- Donald Stufft
221
- Dongweiming
222
- doron zarhi
223
- Dos Moonen
224
- Douglas Thor
225
- DrFeathers
226
- Dustin Ingram
227
- Dwayne Bailey
228
- Ed Morley
229
- Edgar Ramírez
230
- Edgar Ramírez Mondragón
231
- Ee Durbin
232
- Efflam Lemaillet
233
- efflamlemaillet
234
- Eitan Adler
235
- ekristina
236
- elainechan
237
- Eli Schwartz
238
- Elisha Hollander
239
- Ellen Marie Dash
240
- Emil Burzo
241
- Emil Styrke
242
- Emmanuel Arias
243
- Endoh Takanao
244
- enoch
245
- Erdinc Mutlu
246
- Eric Cousineau
247
- Eric Gillingham
248
- Eric Hanchrow
249
- Eric Hopper
250
- Erik M. Bray
251
- Erik Rose
252
- Erwin Janssen
253
- Eugene Vereshchagin
254
- everdimension
255
- Federico
256
- Felipe Peter
257
- Felix Yan
258
- fiber-space
259
- Filip Kokosiński
260
- Filipe Laíns
261
- Finn Womack
262
- finnagin
263
- Flavio Amurrio
264
- Florian Briand
265
- Florian Rathgeber
266
- Francesco
267
- Francesco Montesano
268
- Frost Ming
269
- Gabriel Curio
270
- Gabriel de Perthuis
271
- Garry Polley
272
- gavin
273
- gdanielson
274
- Geoffrey Sneddon
275
- George Song
276
- Georgi Valkov
277
- Georgy Pchelkin
278
- ghost
279
- Giftlin Rajaiah
280
- gizmoguy1
281
- gkdoc
282
- Godefroid Chapelle
283
- Gopinath M
284
- GOTO Hayato
285
- gousaiyang
286
- gpiks
287
- Greg Roodt
288
- Greg Ward
289
- Guilherme Espada
290
- Guillaume Seguin
291
- gutsytechster
292
- Guy Rozendorn
293
- Guy Tuval
294
- gzpan123
295
- Hanjun Kim
296
- Hari Charan
297
- Harsh Vardhan
298
- harupy
299
- Harutaka Kawamura
300
- hauntsaninja
301
- Henrich Hartzer
302
- Henry Schreiner
303
- Herbert Pfennig
304
- Holly Stotelmyer
305
- Honnix
306
- Hsiaoming Yang
307
- Hugo Lopes Tavares
308
- Hugo van Kemenade
309
- Hugues Bruant
310
- Hynek Schlawack
311
- Ian Bicking
312
- Ian Cordasco
313
- Ian Lee
314
- Ian Stapleton Cordasco
315
- Ian Wienand
316
- Igor Kuzmitshov
317
- Igor Sobreira
318
- Ilan Schnell
319
- Illia Volochii
320
- Ilya Baryshev
321
- Inada Naoki
322
- Ionel Cristian Mărieș
323
- Ionel Maries Cristian
324
- Itamar Turner-Trauring
325
- Ivan Pozdeev
326
- J. Nick Koston
327
- Jacob Kim
328
- Jacob Walls
329
- Jaime Sanz
330
- jakirkham
331
- Jakub Kuczys
332
- Jakub Stasiak
333
- Jakub Vysoky
334
- Jakub Wilk
335
- James Cleveland
336
- James Curtin
337
- James Firth
338
- James Gerity
339
- James Polley
340
- Jan Pokorný
341
- Jannis Leidel
342
- Jarek Potiuk
343
- jarondl
344
- Jason Curtis
345
- Jason R. Coombs
346
- JasonMo
347
- JasonMo1
348
- Jay Graves
349
- Jean Abou Samra
350
- Jean-Christophe Fillion-Robin
351
- Jeff Barber
352
- Jeff Dairiki
353
- Jeff Widman
354
- Jelmer Vernooij
355
- jenix21
356
- Jeremy Stanley
357
- Jeremy Zafran
358
- Jesse Rittner
359
- Jiashuo Li
360
- Jim Fisher
361
- Jim Garrison
362
- Jiun Bae
363
- Jivan Amara
364
- Joe Bylund
365
- Joe Michelini
366
- John Paton
367
- John T. Wodder II
368
- John-Scott Atlakson
369
- johnthagen
370
- Jon Banafato
371
- Jon Dufresne
372
- Jon Parise
373
- Jonas Nockert
374
- Jonathan Herbert
375
- Joonatan Partanen
376
- Joost Molenaar
377
- Jorge Niedbalski
378
- Joseph Bylund
379
- Joseph Long
380
- Josh Bronson
381
- Josh Hansen
382
- Josh Schneier
383
- Joshua
384
- Juan Luis Cano Rodríguez
385
- Juanjo Bazán
386
- Judah Rand
387
- Julian Berman
388
- Julian Gethmann
389
- Julien Demoor
390
- Jussi Kukkonen
391
- jwg4
392
- Jyrki Pulliainen
393
- Kai Chen
394
- Kai Mueller
395
- Kamal Bin Mustafa
396
- kasium
397
- kaustav haldar
398
- keanemind
399
- Keith Maxwell
400
- Kelsey Hightower
401
- Kenneth Belitzky
402
- Kenneth Reitz
403
- Kevin Burke
404
- Kevin Carter
405
- Kevin Frommelt
406
- Kevin R Patterson
407
- Kexuan Sun
408
- Kit Randel
409
- Klaas van Schelven
410
- KOLANICH
411
- kpinc
412
- Krishna Oza
413
- Kumar McMillan
414
- Kurt McKee
415
- Kyle Persohn
416
- lakshmanaram
417
- Laszlo Kiss-Kollar
418
- Laurent Bristiel
419
- Laurent LAPORTE
420
- Laurie O
421
- Laurie Opperman
422
- layday
423
- Leon Sasson
424
- Lev Givon
425
- Lincoln de Sousa
426
- Lipis
427
- lorddavidiii
428
- Loren Carvalho
429
- Lucas Cimon
430
- Ludovic Gasc
431
- Lukas Geiger
432
- Lukas Juhrich
433
- Luke Macken
434
- Luo Jiebin
435
- luojiebin
436
- luz.paz
437
- László Kiss Kollár
438
- M00nL1ght
439
- Marc Abramowitz
440
- Marc Tamlyn
441
- Marcus Smith
442
- Mariatta
443
- Mark Kohler
444
- Mark Williams
445
- Markus Hametner
446
- Martey Dodoo
447
- Martin Fischer
448
- Martin Häcker
449
- Martin Pavlasek
450
- Masaki
451
- Masklinn
452
- Matej Stuchlik
453
- Mathew Jennings
454
- Mathieu Bridon
455
- Mathieu Kniewallner
456
- Matt Bacchi
457
- Matt Good
458
- Matt Maker
459
- Matt Robenolt
460
- matthew
461
- Matthew Einhorn
462
- Matthew Feickert
463
- Matthew Gilliard
464
- Matthew Iversen
465
- Matthew Treinish
466
- Matthew Trumbell
467
- Matthew Willson
468
- Matthias Bussonnier
469
- mattip
470
- Maurits van Rees
471
- Max W Chase
472
- Maxim Kurnikov
473
- Maxime Rouyrre
474
- mayeut
475
- mbaluna
476
- mdebi
477
- memoselyk
478
- meowmeowcat
479
- Michael
480
- Michael Aquilina
481
- Michael E. Karpeles
482
- Michael Klich
483
- Michael Mintz
484
- Michael Williamson
485
- michaelpacer
486
- Michał Górny
487
- Mickaël Schoentgen
488
- Miguel Araujo Perez
489
- Mihir Singh
490
- Mike
491
- Mike Hendricks
492
- Min RK
493
- MinRK
494
- Miro Hrončok
495
- Monica Baluna
496
- montefra
497
- Monty Taylor
498
- Muha Ajjan‮
499
- Nadav Wexler
500
- Nahuel Ambrosini
501
- Nate Coraor
502
- Nate Prewitt
503
- Nathan Houghton
504
- Nathaniel J. Smith
505
- Nehal J Wani
506
- Neil Botelho
507
- Nguyễn Gia Phong
508
- Nicholas Serra
509
- Nick Coghlan
510
- Nick Stenning
511
- Nick Timkovich
512
- Nicolas Bock
513
- Nicole Harris
514
- Nikhil Benesch
515
- Nikhil Ladha
516
- Nikita Chepanov
517
- Nikolay Korolev
518
- Nipunn Koorapati
519
- Nitesh Sharma
520
- Niyas Sait
521
- Noah
522
- Noah Gorny
523
- Nowell Strite
524
- NtaleGrey
525
- nvdv
526
- OBITORASU
527
- Ofek Lev
528
- ofrinevo
529
- Oliver Freund
530
- Oliver Jeeves
531
- Oliver Mannion
532
- Oliver Tonnhofer
533
- Olivier Girardot
534
- Olivier Grisel
535
- Ollie Rutherfurd
536
- OMOTO Kenji
537
- Omry Yadan
538
- onlinejudge95
539
- Oren Held
540
- Oscar Benjamin
541
- Oz N Tiram
542
- Pachwenko
543
- Patrick Dubroy
544
- Patrick Jenkins
545
- Patrick Lawson
546
- patricktokeeffe
547
- Patrik Kopkan
548
- Paul Ganssle
549
- Paul Kehrer
550
- Paul Moore
551
- Paul Nasrat
552
- Paul Oswald
553
- Paul van der Linden
554
- Paulus Schoutsen
555
- Pavel Safronov
556
- Pavithra Eswaramoorthy
557
- Pawel Jasinski
558
- Paweł Szramowski
559
- Pekka Klärck
560
- Peter Gessler
561
- Peter Lisák
562
- Peter Waller
563
- petr-tik
564
- Phaneendra Chiruvella
565
- Phil Elson
566
- Phil Freo
567
- Phil Pennock
568
- Phil Whelan
569
- Philip Jägenstedt
570
- Philip Molloy
571
- Philippe Ombredanne
572
- Pi Delport
573
- Pierre-Yves Rofes
574
- Pieter Degroote
575
- pip
576
- Prabakaran Kumaresshan
577
- Prabhjyotsing Surjit Singh Sodhi
578
- Prabhu Marappan
579
- Pradyun Gedam
580
- Prashant Sharma
581
- Pratik Mallya
582
- pre-commit-ci[bot]
583
- Preet Thakkar
584
- Preston Holmes
585
- Przemek Wrzos
586
- Pulkit Goyal
587
- q0w
588
- Qiangning Hong
589
- Qiming Xu
590
- Quentin Lee
591
- Quentin Pradet
592
- R. David Murray
593
- Rafael Caricio
594
- Ralf Schmitt
595
- Razzi Abuissa
596
- rdb
597
- Reece Dunham
598
- Remi Rampin
599
- Rene Dudfield
600
- Riccardo Magliocchetti
601
- Riccardo Schirone
602
- Richard Jones
603
- Richard Si
604
- Ricky Ng-Adam
605
- Rishi
606
- RobberPhex
607
- Robert Collins
608
- Robert McGibbon
609
- Robert Pollak
610
- Robert T. McGibbon
611
- robin elisha robinson
612
- Roey Berman
613
- Rohan Jain
614
- Roman Bogorodskiy
615
- Roman Donchenko
616
- Romuald Brunet
617
- ronaudinho
618
- Ronny Pfannschmidt
619
- Rory McCann
620
- Ross Brattain
621
- Roy Wellington Ⅳ
622
- Ruairidh MacLeod
623
- Russell Keith-Magee
624
- Ryan Shepherd
625
- Ryan Wooden
626
- ryneeverett
627
- Sachi King
628
- Salvatore Rinchiera
629
- sandeepkiran-js
630
- Sander Van Balen
631
- Savio Jomton
632
- schlamar
633
- Scott Kitterman
634
- Sean
635
- seanj
636
- Sebastian Jordan
637
- Sebastian Schaetz
638
- Segev Finer
639
- SeongSoo Cho
640
- Sergey Vasilyev
641
- Seth Michael Larson
642
- Seth Woodworth
643
- Shahar Epstein
644
- Shantanu
645
- shireenrao
646
- Shivansh-007
647
- Shlomi Fish
648
- Shovan Maity
649
- Simeon Visser
650
- Simon Cross
651
- Simon Pichugin
652
- sinoroc
653
- sinscary
654
- snook92
655
- socketubs
656
- Sorin Sbarnea
657
- Srinivas Nyayapati
658
- Stavros Korokithakis
659
- Stefan Scherfke
660
- Stefano Rivera
661
- Stephan Erb
662
- Stephen Rosen
663
- stepshal
664
- Steve (Gadget) Barnes
665
- Steve Barnes
666
- Steve Dower
667
- Steve Kowalik
668
- Steven Myint
669
- Steven Silvester
670
- stonebig
671
- studioj
672
- Stéphane Bidoul
673
- Stéphane Bidoul (ACSONE)
674
- Stéphane Klein
675
- Sumana Harihareswara
676
- Surbhi Sharma
677
- Sviatoslav Sydorenko
678
- Swat009
679
- Sylvain
680
- Takayuki SHIMIZUKAWA
681
- Taneli Hukkinen
682
- tbeswick
683
- Thiago
684
- Thijs Triemstra
685
- Thomas Fenzl
686
- Thomas Grainger
687
- Thomas Guettler
688
- Thomas Johansson
689
- Thomas Kluyver
690
- Thomas Smith
691
- Thomas VINCENT
692
- Tim D. Smith
693
- Tim Gates
694
- Tim Harder
695
- Tim Heap
696
- tim smith
697
- tinruufu
698
- Tobias Hermann
699
- Tom Forbes
700
- Tom Freudenheim
701
- Tom V
702
- Tomas Hrnciar
703
- Tomas Orsava
704
- Tomer Chachamu
705
- Tommi Enenkel | AnB
706
- Tomáš Hrnčiar
707
- Tony Beswick
708
- Tony Narlock
709
- Tony Zhaocheng Tan
710
- TonyBeswick
711
- toonarmycaptain
712
- Toshio Kuratomi
713
- toxinu
714
- Travis Swicegood
715
- Tushar Sadhwani
716
- Tzu-ping Chung
717
- Valentin Haenel
718
- Victor Stinner
719
- victorvpaulo
720
- Vikram - Google
721
- Viktor Szépe
722
- Ville Skyttä
723
- Vinay Sajip
724
- Vincent Philippon
725
- Vinicyus Macedo
726
- Vipul Kumar
727
- Vitaly Babiy
728
- Vladimir Fokow
729
- Vladimir Rutsky
730
- W. Trevor King
731
- Wil Tan
732
- Wilfred Hughes
733
- William Edwards
734
- William ML Leslie
735
- William T Olson
736
- William Woodruff
737
- Wilson Mo
738
- wim glenn
739
- Winson Luk
740
- Wolfgang Maier
741
- Wu Zhenyu
742
- XAMES3
743
- Xavier Fernandez
744
- xoviat
745
- xtreak
746
- YAMAMOTO Takashi
747
- Yen Chi Hsuan
748
- Yeray Diaz Diaz
749
- Yoval P
750
- Yu Jian
751
- Yuan Jing Vincent Yan
752
- Yusuke Hayashi
753
- Zearin
754
- Zhiping Deng
755
- ziebam
756
- Zvezdan Petkovic
757
- Łukasz Langa
758
- Роман Донченко
759
- Семён Марьясин
760
- ‮rekcäH nitraM‮
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/INSTALLER DELETED
@@ -1 +0,0 @@
1
- pip
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/METADATA DELETED
@@ -1,88 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: pip
3
- Version: 24.0
4
- Summary: The PyPA recommended tool for installing Python packages.
5
- Author-email: The pip developers <[email protected]>
6
- License: MIT
7
- Project-URL: Homepage, https://pip.pypa.io/
8
- Project-URL: Documentation, https://pip.pypa.io
9
- Project-URL: Source, https://github.com/pypa/pip
10
- Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
11
- Classifier: Development Status :: 5 - Production/Stable
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Topic :: Software Development :: Build Tools
15
- Classifier: Programming Language :: Python
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3 :: Only
18
- Classifier: Programming Language :: Python :: 3.7
19
- Classifier: Programming Language :: Python :: 3.8
20
- Classifier: Programming Language :: Python :: 3.9
21
- Classifier: Programming Language :: Python :: 3.10
22
- Classifier: Programming Language :: Python :: 3.11
23
- Classifier: Programming Language :: Python :: 3.12
24
- Classifier: Programming Language :: Python :: Implementation :: CPython
25
- Classifier: Programming Language :: Python :: Implementation :: PyPy
26
- Requires-Python: >=3.7
27
- Description-Content-Type: text/x-rst
28
- License-File: LICENSE.txt
29
- License-File: AUTHORS.txt
30
-
31
- pip - The Python Package Installer
32
- ==================================
33
-
34
- .. image:: https://img.shields.io/pypi/v/pip.svg
35
- :target: https://pypi.org/project/pip/
36
- :alt: PyPI
37
-
38
- .. image:: https://img.shields.io/pypi/pyversions/pip
39
- :target: https://pypi.org/project/pip
40
- :alt: PyPI - Python Version
41
-
42
- .. image:: https://readthedocs.org/projects/pip/badge/?version=latest
43
- :target: https://pip.pypa.io/en/latest
44
- :alt: Documentation
45
-
46
- pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
47
-
48
- Please take a look at our documentation for how to install and use pip:
49
-
50
- * `Installation`_
51
- * `Usage`_
52
-
53
- We release updates regularly, with a new version every 3 months. Find more details in our documentation:
54
-
55
- * `Release notes`_
56
- * `Release process`_
57
-
58
- If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms:
59
-
60
- * `Issue tracking`_
61
- * `Discourse channel`_
62
- * `User IRC`_
63
-
64
- If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms:
65
-
66
- * `GitHub page`_
67
- * `Development documentation`_
68
- * `Development IRC`_
69
-
70
- Code of Conduct
71
- ---------------
72
-
73
- Everyone interacting in the pip project's codebases, issue trackers, chat
74
- rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
75
-
76
- .. _package installer: https://packaging.python.org/guides/tool-recommendations/
77
- .. _Python Package Index: https://pypi.org
78
- .. _Installation: https://pip.pypa.io/en/stable/installation/
79
- .. _Usage: https://pip.pypa.io/en/stable/
80
- .. _Release notes: https://pip.pypa.io/en/stable/news.html
81
- .. _Release process: https://pip.pypa.io/en/latest/development/release-process/
82
- .. _GitHub page: https://github.com/pypa/pip
83
- .. _Development documentation: https://pip.pypa.io/en/latest/development
84
- .. _Issue tracking: https://github.com/pypa/pip/issues
85
- .. _Discourse channel: https://discuss.python.org/c/packaging
86
- .. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa
87
- .. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev
88
- .. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/RECORD DELETED
@@ -1,1024 +0,0 @@
1
- ../../Scripts/pip.exe,sha256=d0dORZ306pLyNPv1RcEL1UCytpvbDn_hWVrbbcfzUa4,108407
2
- ../../Scripts/pip3.12.exe,sha256=d0dORZ306pLyNPv1RcEL1UCytpvbDn_hWVrbbcfzUa4,108407
3
- ../../Scripts/pip3.exe,sha256=d0dORZ306pLyNPv1RcEL1UCytpvbDn_hWVrbbcfzUa4,108407
4
- pip-24.0.dist-info/AUTHORS.txt,sha256=SwXm4nkwRkmtnO1ZY-dLy7EPeoQNXMNLby5CN3GlNhY,10388
5
- pip-24.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
6
- pip-24.0.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093
7
- pip-24.0.dist-info/METADATA,sha256=kNEfJ3_Vho2mee4lfJdlbd5RHIqsfQJSMUB-bOkIOeI,3581
8
- pip-24.0.dist-info/RECORD,,
9
- pip-24.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pip-24.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
11
- pip-24.0.dist-info/entry_points.txt,sha256=ynZN1_707_L23Oa8_O5LOxEoccj1nDa4xHT5galfN7o,125
12
- pip-24.0.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
13
- pip/__init__.py,sha256=oAk1nFpLmUVS5Ln7NxvNoGUn5Vkn6FGQjPaNDf8Q8pk,355
14
- pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854
15
- pip/__pip-runner__.py,sha256=EnrfKmKMzWAdqg_JicLCOP9Y95Ux7zHh4ObvqLtQcjo,1444
16
- pip/__pycache__/__init__.cpython-312.pyc,,
17
- pip/__pycache__/__main__.cpython-312.pyc,,
18
- pip/__pycache__/__pip-runner__.cpython-312.pyc,,
19
- pip/_internal/__init__.py,sha256=iqZ5-YQsQV08tkUc7L806Reop6tguLFWf70ySF6be0Y,515
20
- pip/_internal/__pycache__/__init__.cpython-312.pyc,,
21
- pip/_internal/__pycache__/build_env.cpython-312.pyc,,
22
- pip/_internal/__pycache__/cache.cpython-312.pyc,,
23
- pip/_internal/__pycache__/configuration.cpython-312.pyc,,
24
- pip/_internal/__pycache__/exceptions.cpython-312.pyc,,
25
- pip/_internal/__pycache__/main.cpython-312.pyc,,
26
- pip/_internal/__pycache__/pyproject.cpython-312.pyc,,
27
- pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc,,
28
- pip/_internal/__pycache__/wheel_builder.cpython-312.pyc,,
29
- pip/_internal/build_env.py,sha256=1ESpqw0iupS_K7phZK5zshVE5Czy9BtGLFU4W6Enva8,10243
30
- pip/_internal/cache.py,sha256=uiYD-9F0Bv1C8ZyWE85lpzDmQf7hcUkgL99GmI8I41Q,10370
31
- pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
32
- pip/_internal/cli/__pycache__/__init__.cpython-312.pyc,,
33
- pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc,,
34
- pip/_internal/cli/__pycache__/base_command.cpython-312.pyc,,
35
- pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc,,
36
- pip/_internal/cli/__pycache__/command_context.cpython-312.pyc,,
37
- pip/_internal/cli/__pycache__/main.cpython-312.pyc,,
38
- pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc,,
39
- pip/_internal/cli/__pycache__/parser.cpython-312.pyc,,
40
- pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc,,
41
- pip/_internal/cli/__pycache__/req_command.cpython-312.pyc,,
42
- pip/_internal/cli/__pycache__/spinners.cpython-312.pyc,,
43
- pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc,,
44
- pip/_internal/cli/autocompletion.py,sha256=_br_5NgSxSuvPjMF0MLHzS5s6BpSkQAQHKrLK89VauM,6690
45
- pip/_internal/cli/base_command.py,sha256=iuVWGa2oTq7gBReo0er3Z0tXJ2oqBIC6QjDHcnDhKXY,8733
46
- pip/_internal/cli/cmdoptions.py,sha256=1EIm8yMixQMELO4QzogdIoWkvIlQqlAW0YnPeOmnvEA,30064
47
- pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774
48
- pip/_internal/cli/main.py,sha256=Uzxt_YD1hIvB1AW5mxt6IVcht5G712AtMqdo51UMhmQ,2816
49
- pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338
50
- pip/_internal/cli/parser.py,sha256=KW6C3-7-4ErTNB0TfLTKwOdHcd-qefCeGnrOoE2r0RQ,10781
51
- pip/_internal/cli/progress_bars.py,sha256=So4mPoSjXkXiSHiTzzquH3VVyVD_njXlHJSExYPXAow,1968
52
- pip/_internal/cli/req_command.py,sha256=c7_XHABnXmD3_qlK9-r37KqdKBAcgmVKvQ2WcTrNLfc,18369
53
- pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118
54
- pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116
55
- pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882
56
- pip/_internal/commands/__pycache__/__init__.cpython-312.pyc,,
57
- pip/_internal/commands/__pycache__/cache.cpython-312.pyc,,
58
- pip/_internal/commands/__pycache__/check.cpython-312.pyc,,
59
- pip/_internal/commands/__pycache__/completion.cpython-312.pyc,,
60
- pip/_internal/commands/__pycache__/configuration.cpython-312.pyc,,
61
- pip/_internal/commands/__pycache__/debug.cpython-312.pyc,,
62
- pip/_internal/commands/__pycache__/download.cpython-312.pyc,,
63
- pip/_internal/commands/__pycache__/freeze.cpython-312.pyc,,
64
- pip/_internal/commands/__pycache__/hash.cpython-312.pyc,,
65
- pip/_internal/commands/__pycache__/help.cpython-312.pyc,,
66
- pip/_internal/commands/__pycache__/index.cpython-312.pyc,,
67
- pip/_internal/commands/__pycache__/inspect.cpython-312.pyc,,
68
- pip/_internal/commands/__pycache__/install.cpython-312.pyc,,
69
- pip/_internal/commands/__pycache__/list.cpython-312.pyc,,
70
- pip/_internal/commands/__pycache__/search.cpython-312.pyc,,
71
- pip/_internal/commands/__pycache__/show.cpython-312.pyc,,
72
- pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc,,
73
- pip/_internal/commands/__pycache__/wheel.cpython-312.pyc,,
74
- pip/_internal/commands/cache.py,sha256=xg76_ZFEBC6zoQ3gXLRfMZJft4z2a0RwH4GEFZC6nnU,7944
75
- pip/_internal/commands/check.py,sha256=Rb13Q28yoLh0j1gpx5SU0jlResNct21eQCRsnaO9xKA,1782
76
- pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287
77
- pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766
78
- pip/_internal/commands/debug.py,sha256=63972uUCeMIGOdMMVeIUGrOjTOqTVWplFC82a-hcKyA,6777
79
- pip/_internal/commands/download.py,sha256=e4hw088zGo26WmJaMIRvCniLlLmoOjqolGyfHjsCkCQ,5335
80
- pip/_internal/commands/freeze.py,sha256=2qjQrH9KWi5Roav0CuR7vc7hWm4uOi_0l6tp3ESKDHM,3172
81
- pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703
82
- pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132
83
- pip/_internal/commands/index.py,sha256=CNXQer_PeZKSJooURcCFCBEKGfwyNoUWYP_MWczAcOM,4775
84
- pip/_internal/commands/inspect.py,sha256=2wSPt9yfr3r6g-s2S5L6PvRtaHNVyb4TuodMStJ39cw,3188
85
- pip/_internal/commands/install.py,sha256=VxDd-BD3a27ApeE2OK34rfBXS6Zo2wtemK9-HCwPqxM,28782
86
- pip/_internal/commands/list.py,sha256=7wRUUmdyyOknl-WZYbO_LtFQxHlWod3pjOY9yYH435o,12450
87
- pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697
88
- pip/_internal/commands/show.py,sha256=t5jia4zcYJRJZy4U_Von7zMl03hJmmcofj6oDNTnj7Y,6419
89
- pip/_internal/commands/uninstall.py,sha256=OIqO9tqadY8kM4HwhFf1Q62fUIp7v8KDrTRo8yWMz7Y,3886
90
- pip/_internal/commands/wheel.py,sha256=CSnX8Pmf1oPCnd7j7bn1_f58G9KHNiAblvVJ5zykN-A,6476
91
- pip/_internal/configuration.py,sha256=XkAiBS0hpzsM-LF0Qu5hvPWO_Bs67-oQKRYFBuMbESs,14006
92
- pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858
93
- pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc,,
94
- pip/_internal/distributions/__pycache__/base.cpython-312.pyc,,
95
- pip/_internal/distributions/__pycache__/installed.cpython-312.pyc,,
96
- pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc,,
97
- pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc,,
98
- pip/_internal/distributions/base.py,sha256=oRSEvnv2ZjBnargamnv2fcJa1n6gUDKaW0g6CWSEpWs,1743
99
- pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842
100
- pip/_internal/distributions/sdist.py,sha256=4K3V0VNMllHbBzCJibjwd_tylUKpmIdu2AQyhplvCQo,6709
101
- pip/_internal/distributions/wheel.py,sha256=-ma3sOtUQj0AxXCEb6_Fhmjl3nh4k3A0HC2taAb2N-4,1277
102
- pip/_internal/exceptions.py,sha256=TmF1iNFEneSWaemwlg6a5bpPuq2cMHK7d1-SvjsQHb0,23634
103
- pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30
104
- pip/_internal/index/__pycache__/__init__.cpython-312.pyc,,
105
- pip/_internal/index/__pycache__/collector.cpython-312.pyc,,
106
- pip/_internal/index/__pycache__/package_finder.cpython-312.pyc,,
107
- pip/_internal/index/__pycache__/sources.cpython-312.pyc,,
108
- pip/_internal/index/collector.py,sha256=sH0tL_cOoCk6pLLfCSGVjFM4rPEJtllF-VobvAvLSH4,16590
109
- pip/_internal/index/package_finder.py,sha256=S_nC8gzVIMY6ikWfKoSOzRtoesUqnfNhAPl_BwSOusA,37843
110
- pip/_internal/index/sources.py,sha256=dJegiR9f86kslaAHcv9-R5L_XBf5Rzm_FkyPteDuPxI,8688
111
- pip/_internal/locations/__init__.py,sha256=Dh8LJWG8LRlDK4JIj9sfRF96TREzE--N_AIlx7Tqoe4,15365
112
- pip/_internal/locations/__pycache__/__init__.cpython-312.pyc,,
113
- pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc,,
114
- pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc,,
115
- pip/_internal/locations/__pycache__/base.cpython-312.pyc,,
116
- pip/_internal/locations/_distutils.py,sha256=H9ZHK_35rdDV1Qsmi4QeaBULjFT4Mbu6QuoVGkJ6QHI,6009
117
- pip/_internal/locations/_sysconfig.py,sha256=jyNVtUfMIf0mtyY-Xp1m9yQ8iwECozSVVFmjkN9a2yw,7680
118
- pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556
119
- pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340
120
- pip/_internal/metadata/__init__.py,sha256=9pU3W3s-6HtjFuYhWcLTYVmSaziklPv7k2x8p7X1GmA,4339
121
- pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc,,
122
- pip/_internal/metadata/__pycache__/_json.cpython-312.pyc,,
123
- pip/_internal/metadata/__pycache__/base.cpython-312.pyc,,
124
- pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc,,
125
- pip/_internal/metadata/_json.py,sha256=Rz5M5ciSNvITwaTQR6NfN8TgKgM5WfTws4D6CFknovE,2627
126
- pip/_internal/metadata/base.py,sha256=l3Wgku4xlgr8s4p6fS-3qQ4QKOpPbWLRwi5d9omEFG4,25907
127
- pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135
128
- pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc,,
129
- pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc,,
130
- pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc,,
131
- pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc,,
132
- pip/_internal/metadata/importlib/_compat.py,sha256=GAe_prIfCE4iUylrnr_2dJRlkkBVRUbOidEoID7LPoE,1882
133
- pip/_internal/metadata/importlib/_dists.py,sha256=UPl1wUujFqiwiltRJ1tMF42WRINO1sSpNNlYQ2mX0mk,8297
134
- pip/_internal/metadata/importlib/_envs.py,sha256=XTaFIYERP2JF0QUZuPx2ETiugXbPEcZ8q8ZKeht6Lpc,7456
135
- pip/_internal/metadata/pkg_resources.py,sha256=opjw4IBSqHvie6sXJ_cbT42meygoPEUfNURJuWZY7sk,10035
136
- pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
137
- pip/_internal/models/__pycache__/__init__.cpython-312.pyc,,
138
- pip/_internal/models/__pycache__/candidate.cpython-312.pyc,,
139
- pip/_internal/models/__pycache__/direct_url.cpython-312.pyc,,
140
- pip/_internal/models/__pycache__/format_control.cpython-312.pyc,,
141
- pip/_internal/models/__pycache__/index.cpython-312.pyc,,
142
- pip/_internal/models/__pycache__/installation_report.cpython-312.pyc,,
143
- pip/_internal/models/__pycache__/link.cpython-312.pyc,,
144
- pip/_internal/models/__pycache__/scheme.cpython-312.pyc,,
145
- pip/_internal/models/__pycache__/search_scope.cpython-312.pyc,,
146
- pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc,,
147
- pip/_internal/models/__pycache__/target_python.cpython-312.pyc,,
148
- pip/_internal/models/__pycache__/wheel.cpython-312.pyc,,
149
- pip/_internal/models/candidate.py,sha256=hEPu8VdGE5qVASv6vLz-R-Rgh5-7LMbai1jgthMCd8M,931
150
- pip/_internal/models/direct_url.py,sha256=FwouYBKcqckh7B-k2H3HVgRhhFTukFwqiS3kfvtFLSk,6889
151
- pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486
152
- pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030
153
- pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818
154
- pip/_internal/models/link.py,sha256=XirOAGv1jgMu7vu87kuPbohGj7VHpwVrd2q3KUgVQNg,20777
155
- pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738
156
- pip/_internal/models/search_scope.py,sha256=ASVyyZxiJILw7bTIVVpJx8J293M3Hk5F33ilGn0e80c,4643
157
- pip/_internal/models/selection_prefs.py,sha256=KZdi66gsR-_RUXUr9uejssk3rmTHrQVJWeNA2sV-VSY,1907
158
- pip/_internal/models/target_python.py,sha256=34EkorrMuRvRp-bjqHKJ-bOO71m9xdjN2b8WWFEC2HU,4272
159
- pip/_internal/models/wheel.py,sha256=YqazoIZyma_Q1ejFa1C7NHKQRRWlvWkdK96VRKmDBeI,3600
160
- pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50
161
- pip/_internal/network/__pycache__/__init__.cpython-312.pyc,,
162
- pip/_internal/network/__pycache__/auth.cpython-312.pyc,,
163
- pip/_internal/network/__pycache__/cache.cpython-312.pyc,,
164
- pip/_internal/network/__pycache__/download.cpython-312.pyc,,
165
- pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc,,
166
- pip/_internal/network/__pycache__/session.cpython-312.pyc,,
167
- pip/_internal/network/__pycache__/utils.cpython-312.pyc,,
168
- pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc,,
169
- pip/_internal/network/auth.py,sha256=TC-OcW2KU4W6R1hU4qPgQXvVH54adACpZz6sWq-R9NA,20541
170
- pip/_internal/network/cache.py,sha256=48A971qCzKNFvkb57uGEk7-0xaqPS0HWj2711QNTxkU,3935
171
- pip/_internal/network/download.py,sha256=i0Tn55CD5D7XYEFY3TxiYaCf0OaaTQ6SScNgCsSeV14,6086
172
- pip/_internal/network/lazy_wheel.py,sha256=2PXVduYZPCPZkkQFe1J1GbfHJWeCU--FXonGyIfw9eU,7638
173
- pip/_internal/network/session.py,sha256=9tqEDD8JiVaFdplOEXJxNo9cjRfBZ6RIa0yQQ_qBNiM,18698
174
- pip/_internal/network/utils.py,sha256=6A5SrUJEEUHxbGtbscwU2NpCyz-3ztiDlGWHpRRhsJ8,4073
175
- pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838
176
- pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- pip/_internal/operations/__pycache__/__init__.cpython-312.pyc,,
178
- pip/_internal/operations/__pycache__/check.cpython-312.pyc,,
179
- pip/_internal/operations/__pycache__/freeze.cpython-312.pyc,,
180
- pip/_internal/operations/__pycache__/prepare.cpython-312.pyc,,
181
- pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
- pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc,,
183
- pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc,,
184
- pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc,,
185
- pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc,,
186
- pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc,,
187
- pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc,,
188
- pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc,,
189
- pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc,,
190
- pip/_internal/operations/build/build_tracker.py,sha256=z-H5DOknZdBa3dh2Vq6VBMY5qLYIKmlj2p6CGZK5Lc8,4832
191
- pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422
192
- pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474
193
- pip/_internal/operations/build/metadata_legacy.py,sha256=o-eU21As175hDC7dluM1fJJ_FqokTIShyWpjKaIpHZw,2198
194
- pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075
195
- pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417
196
- pip/_internal/operations/build/wheel_legacy.py,sha256=C9j6rukgQI1n_JeQLoZGuDdfUwzCXShyIdPTp6edbMQ,3064
197
- pip/_internal/operations/check.py,sha256=fsqA88iGaqftCr2tlP3sSU202CSkoODRtW0O-JU9M4Y,6806
198
- pip/_internal/operations/freeze.py,sha256=uqoeTAf6HOYVMR2UgAT8N85UZoGEVEoQdan_Ao6SOfk,9816
199
- pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51
200
- pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc,,
201
- pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc,,
202
- pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc,,
203
- pip/_internal/operations/install/editable_legacy.py,sha256=YeR0KadWXw_ZheC1NtAG1qVIEkOgRGHc23x-YtGW7NU,1282
204
- pip/_internal/operations/install/wheel.py,sha256=9hGb1c4bRnPIb2FG7CtUSPfPxqprmHQBtwIAlWPNTtE,27311
205
- pip/_internal/operations/prepare.py,sha256=57Oq87HfunX3Rbqp47FdaJr9cHbAKUm_3gv7WhBAqbE,28128
206
- pip/_internal/pyproject.py,sha256=4Xszp11xgr126yzG6BbJA0oaQ9WXuhb0jyUb-y_6lPQ,7152
207
- pip/_internal/req/__init__.py,sha256=TELFgZOof3lhMmaICVWL9U7PlhXo9OufokbMAJ6J2GI,2738
208
- pip/_internal/req/__pycache__/__init__.cpython-312.pyc,,
209
- pip/_internal/req/__pycache__/constructors.cpython-312.pyc,,
210
- pip/_internal/req/__pycache__/req_file.cpython-312.pyc,,
211
- pip/_internal/req/__pycache__/req_install.cpython-312.pyc,,
212
- pip/_internal/req/__pycache__/req_set.cpython-312.pyc,,
213
- pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc,,
214
- pip/_internal/req/constructors.py,sha256=8hlY56imEthLORRwmloyKz3YOyXymIaKsNB6P9ewvNI,19018
215
- pip/_internal/req/req_file.py,sha256=M8ttOZL-PwAj7scPElhW3ZD2hiD9mm_6FJAGIbwAzEI,17790
216
- pip/_internal/req/req_install.py,sha256=wtOPxkyRSM8comTks8oL1Gp2oyGqbH7JwIDRci2QiPk,35460
217
- pip/_internal/req/req_set.py,sha256=iMYDUToSgkxFyrP_OrTtPSgw4dwjRyGRDpGooTqeA4Y,4704
218
- pip/_internal/req/req_uninstall.py,sha256=nmvTQaRCC0iu-5Tw0djlXJhSj6WmqHRvT3qkkEdC35E,24551
219
- pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
- pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc,,
221
- pip/_internal/resolution/__pycache__/base.cpython-312.pyc,,
222
- pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583
223
- pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
- pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc,,
225
- pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc,,
226
- pip/_internal/resolution/legacy/resolver.py,sha256=Xk24jQ62GvLr4Mc7IjN_qiO88qp0BImzVmPIFz9QLOE,24025
227
- pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
- pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc,,
229
- pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc,,
230
- pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc,,
231
- pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc,,
232
- pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc,,
233
- pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc,,
234
- pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc,,
235
- pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc,,
236
- pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc,,
237
- pip/_internal/resolution/resolvelib/base.py,sha256=jg5COmHLhmBIKOR-4spdJD3jyULYa1BdsqiBu2YJnJ4,5173
238
- pip/_internal/resolution/resolvelib/candidates.py,sha256=19Ki91Po-MSxBknGIfOGkaWkFdOznN0W_nKv7jL28L0,21052
239
- pip/_internal/resolution/resolvelib/factory.py,sha256=vqqk-hjchdhShwWVdeW2_A-5ZblLhE_nC_v3Mhz4Svc,32292
240
- pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705
241
- pip/_internal/resolution/resolvelib/provider.py,sha256=4t23ivjruqM6hKBX1KpGiTt-M4HGhRcZnGLV0c01K7U,9824
242
- pip/_internal/resolution/resolvelib/reporter.py,sha256=YFm9hQvz4DFCbjZeFTQ56hTz3Ac-mDBnHkeNRVvMHLY,3100
243
- pip/_internal/resolution/resolvelib/requirements.py,sha256=-kJONP0WjDfdTvBAs2vUXPgAnOyNIBEAXY4b72ogtPE,5696
244
- pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592
245
- pip/_internal/self_outdated_check.py,sha256=saxQLB8UzIFtMScquytG10TOTsYVFJQ_mkW1NY-46wE,8378
246
- pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
247
- pip/_internal/utils/__pycache__/__init__.cpython-312.pyc,,
248
- pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc,,
249
- pip/_internal/utils/__pycache__/_log.cpython-312.pyc,,
250
- pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc,,
251
- pip/_internal/utils/__pycache__/compat.cpython-312.pyc,,
252
- pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc,,
253
- pip/_internal/utils/__pycache__/datetime.cpython-312.pyc,,
254
- pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc,,
255
- pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc,,
256
- pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc,,
257
- pip/_internal/utils/__pycache__/encoding.cpython-312.pyc,,
258
- pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc,,
259
- pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc,,
260
- pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc,,
261
- pip/_internal/utils/__pycache__/glibc.cpython-312.pyc,,
262
- pip/_internal/utils/__pycache__/hashes.cpython-312.pyc,,
263
- pip/_internal/utils/__pycache__/logging.cpython-312.pyc,,
264
- pip/_internal/utils/__pycache__/misc.cpython-312.pyc,,
265
- pip/_internal/utils/__pycache__/models.cpython-312.pyc,,
266
- pip/_internal/utils/__pycache__/packaging.cpython-312.pyc,,
267
- pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc,,
268
- pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc,,
269
- pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc,,
270
- pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc,,
271
- pip/_internal/utils/__pycache__/urls.cpython-312.pyc,,
272
- pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc,,
273
- pip/_internal/utils/__pycache__/wheel.cpython-312.pyc,,
274
- pip/_internal/utils/_jaraco_text.py,sha256=yvDGelTVugRayPaOF2k4ab0Ky4d3uOkAfuOQjASjImY,3351
275
- pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015
276
- pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665
277
- pip/_internal/utils/compat.py,sha256=ACyBfLgj3_XG-iA5omEDrXqDM0cQKzi8h8HRBInzG6Q,1884
278
- pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377
279
- pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242
280
- pip/_internal/utils/deprecation.py,sha256=NKo8VqLioJ4nnXXGmW4KdasxF90EFHkZaHeX1fT08C8,3627
281
- pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206
282
- pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463
283
- pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169
284
- pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064
285
- pip/_internal/utils/filesystem.py,sha256=RhMIXUaNVMGjc3rhsDahWQ4MavvEQDdqXqgq-F6fpw8,5122
286
- pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716
287
- pip/_internal/utils/glibc.py,sha256=Mesxxgg3BLxheLZx-dSf30b6gKpOgdVXw6W--uHSszQ,3113
288
- pip/_internal/utils/hashes.py,sha256=MjOigC75z6qoRMkgHiHqot7eqxfwDZSrEflJMPm-bHE,5118
289
- pip/_internal/utils/logging.py,sha256=fdtuZJ-AKkqwDTANDvGcBEpssL8el7T1jnwk1CnZl3Y,11603
290
- pip/_internal/utils/misc.py,sha256=fNXwaeeikvnUt4CPMFIL4-IQbZDxxjj4jDpzCi4ZsOw,23623
291
- pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193
292
- pip/_internal/utils/packaging.py,sha256=5Wm6_x7lKrlqVjPI5MBN_RurcRHwVYoQ7Ksrs84de7s,2108
293
- pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435
294
- pip/_internal/utils/subprocess.py,sha256=zzdimb75jVLE1GU4WlTZ055gczhD7n1y1xTcNc7vNZQ,9207
295
- pip/_internal/utils/temp_dir.py,sha256=DUAw22uFruQdK43i2L2K53C-CDjRCPeAsBKJpu-rHQ4,9312
296
- pip/_internal/utils/unpacking.py,sha256=SBb2iV1crb89MDRTEKY86R4A_UOWApTQn9VQVcMDOlE,8821
297
- pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759
298
- pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456
299
- pip/_internal/utils/wheel.py,sha256=i4BwUNHattzN0ixy3HBAF04tZPRh2CcxaT6t86viwkE,4499
300
- pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596
301
- pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc,,
302
- pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc,,
303
- pip/_internal/vcs/__pycache__/git.cpython-312.pyc,,
304
- pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc,,
305
- pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc,,
306
- pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc,,
307
- pip/_internal/vcs/bazaar.py,sha256=j0oin0fpGRHcCFCxEcpPCQoFEvA-DMLULKdGP8Nv76o,3519
308
- pip/_internal/vcs/git.py,sha256=CeKBGJnl6uskvvjkAUXrJVxbHJrpS_B_pyfFdjL3CRc,18121
309
- pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249
310
- pip/_internal/vcs/subversion.py,sha256=vhZs8L-TNggXqM1bbhl-FpbxE3TrIB6Tgnx8fh3S2HE,11729
311
- pip/_internal/vcs/versioncontrol.py,sha256=3eIjtOMYvOY5qP6BMYIYDZ375CSuec6kSEB0bOo1cSs,22787
312
- pip/_internal/wheel_builder.py,sha256=qTTzQV8F6b1jNsFCda1TRQC8J7gK-m7iuRNgKo7Dj68,11801
313
- pip/_vendor/__init__.py,sha256=U51NPwXdA-wXOiANIQncYjcMp6txgeOL5nHxksJeyas,4993
314
- pip/_vendor/__pycache__/__init__.cpython-312.pyc,,
315
- pip/_vendor/__pycache__/six.cpython-312.pyc,,
316
- pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc,,
317
- pip/_vendor/cachecontrol/__init__.py,sha256=ctHagMhQXuvQDdm4TirZrwDOT5H8oBNAJqzdKI6sovk,676
318
- pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc,,
319
- pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc,,
320
- pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc,,
321
- pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc,,
322
- pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc,,
323
- pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc,,
324
- pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc,,
325
- pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc,,
326
- pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc,,
327
- pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737
328
- pip/_vendor/cachecontrol/adapter.py,sha256=_CcWvUP9048qAZjsNqViaHbdcLs9mmFNixVfpO7oebE,6392
329
- pip/_vendor/cachecontrol/cache.py,sha256=OTQj72tUf8C1uEgczdl3Gc8vkldSzsTITKtDGKMx4z8,1952
330
- pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303
331
- pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc,,
332
- pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc,,
333
- pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc,,
334
- pip/_vendor/cachecontrol/caches/file_cache.py,sha256=3z8AWKD-vfKeiJqIzLmJyIYtR2yd6Tsh3u1TyLRQoIQ,5352
335
- pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386
336
- pip/_vendor/cachecontrol/controller.py,sha256=keCFA3ZaNVaWTwHd6F1zqWhb4vyvNx_UvZuo5iIYMfo,18384
337
- pip/_vendor/cachecontrol/filewrapper.py,sha256=STttGmIPBvZzt2b51dUOwoWX5crcMCpKZOisM3f5BNc,4292
338
- pip/_vendor/cachecontrol/heuristics.py,sha256=fdFbk9W8IeLrjteIz_fK4mj2HD_Y7COXF2Uc8TgjT1c,4828
339
- pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
340
- pip/_vendor/cachecontrol/serialize.py,sha256=0dHeMaDwysVAAnGVlhMOP4tDliohgNK0Jxk_zsOiWxw,7173
341
- pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417
342
- pip/_vendor/certifi/__init__.py,sha256=L_j-d0kYuA_MzA2_2hraF1ovf6KT6DTquRdV3paQwOk,94
343
- pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255
344
- pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc,,
345
- pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc,,
346
- pip/_vendor/certifi/__pycache__/core.cpython-312.pyc,,
347
- pip/_vendor/certifi/cacert.pem,sha256=eU0Dn_3yd8BH4m8sfVj4Glhl2KDrcCSg-sEWT-pNJ88,281617
348
- pip/_vendor/certifi/core.py,sha256=ZwiOsv-sD_ouU1ft8wy_xZ3LQ7UbcVzyqj2XNyrsZis,4279
349
- pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
350
- pip/_vendor/chardet/__init__.py,sha256=57R-HSxj0PWmILMN0GFmUNqEMfrEVSamXyjD-W6_fbs,4797
351
- pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc,,
352
- pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc,,
353
- pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc,,
354
- pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc,,
355
- pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc,,
356
- pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc,,
357
- pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc,,
358
- pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc,,
359
- pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc,,
360
- pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc,,
361
- pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc,,
362
- pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc,,
363
- pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc,,
364
- pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc,,
365
- pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc,,
366
- pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc,,
367
- pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc,,
368
- pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc,,
369
- pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc,,
370
- pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc,,
371
- pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc,,
372
- pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc,,
373
- pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc,,
374
- pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc,,
375
- pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc,,
376
- pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc,,
377
- pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc,,
378
- pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc,,
379
- pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc,,
380
- pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc,,
381
- pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc,,
382
- pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc,,
383
- pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc,,
384
- pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc,,
385
- pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc,,
386
- pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc,,
387
- pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc,,
388
- pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc,,
389
- pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc,,
390
- pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc,,
391
- pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc,,
392
- pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc,,
393
- pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc,,
394
- pip/_vendor/chardet/__pycache__/version.cpython-312.pyc,,
395
- pip/_vendor/chardet/big5freq.py,sha256=ltcfP-3PjlNHCoo5e4a7C4z-2DhBTXRfY6jbMbB7P30,31274
396
- pip/_vendor/chardet/big5prober.py,sha256=lPMfwCX6v2AaPgvFh_cSWZcgLDbWiFCHLZ_p9RQ9uxE,1763
397
- pip/_vendor/chardet/chardistribution.py,sha256=13B8XUG4oXDuLdXvfbIWwLFeR-ZU21AqTS1zcdON8bU,10032
398
- pip/_vendor/chardet/charsetgroupprober.py,sha256=UKK3SaIZB2PCdKSIS0gnvMtLR9JJX62M-fZJu3OlWyg,3915
399
- pip/_vendor/chardet/charsetprober.py,sha256=L3t8_wIOov8em-vZWOcbkdsrwe43N6_gqNh5pH7WPd4,5420
400
- pip/_vendor/chardet/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
- pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc,,
402
- pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc,,
403
- pip/_vendor/chardet/cli/chardetect.py,sha256=zibMVg5RpKb-ME9_7EYG4ZM2Sf07NHcQzZ12U-rYJho,3242
404
- pip/_vendor/chardet/codingstatemachine.py,sha256=K7k69sw3jY5DmTXoSJQVsUtFIQKYPQVOSJJhBuGv_yE,3732
405
- pip/_vendor/chardet/codingstatemachinedict.py,sha256=0GY3Hi2qIZvDrOOJ3AtqppM1RsYxr_66ER4EHjuMiMc,542
406
- pip/_vendor/chardet/cp949prober.py,sha256=0jKRV7fECuWI16rNnks0ZECKA1iZYCIEaP8A1ZvjUSI,1860
407
- pip/_vendor/chardet/enums.py,sha256=TzECiZoCKNMqgwU76cPCeKWFBqaWvAdLMev5_bCkhY8,1683
408
- pip/_vendor/chardet/escprober.py,sha256=Kho48X65xE0scFylIdeJjM2bcbvRvv0h0WUbMWrJD3A,4006
409
- pip/_vendor/chardet/escsm.py,sha256=AqyXpA2FQFD7k-buBty_7itGEYkhmVa8X09NLRul3QM,12176
410
- pip/_vendor/chardet/eucjpprober.py,sha256=5KYaM9fsxkRYzw1b5k0fL-j_-ezIw-ij9r97a9MHxLY,3934
411
- pip/_vendor/chardet/euckrfreq.py,sha256=3mHuRvXfsq_QcQysDQFb8qSudvTiol71C6Ic2w57tKM,13566
412
- pip/_vendor/chardet/euckrprober.py,sha256=hiFT6wM174GIwRvqDsIcuOc-dDsq2uPKMKbyV8-1Xnc,1753
413
- pip/_vendor/chardet/euctwfreq.py,sha256=2alILE1Lh5eqiFJZjzRkMQXolNJRHY5oBQd-vmZYFFM,36913
414
- pip/_vendor/chardet/euctwprober.py,sha256=NxbpNdBtU0VFI0bKfGfDkpP7S2_8_6FlO87dVH0ogws,1753
415
- pip/_vendor/chardet/gb2312freq.py,sha256=49OrdXzD-HXqwavkqjo8Z7gvs58hONNzDhAyMENNkvY,20735
416
- pip/_vendor/chardet/gb2312prober.py,sha256=KPEBueaSLSvBpFeINMu0D6TgHcR90e5PaQawifzF4o0,1759
417
- pip/_vendor/chardet/hebrewprober.py,sha256=96T_Lj_OmW-fK7JrSHojYjyG3fsGgbzkoTNleZ3kfYE,14537
418
- pip/_vendor/chardet/jisfreq.py,sha256=mm8tfrwqhpOd3wzZKS4NJqkYBQVcDfTM2JiQ5aW932E,25796
419
- pip/_vendor/chardet/johabfreq.py,sha256=dBpOYG34GRX6SL8k_LbS9rxZPMjLjoMlgZ03Pz5Hmqc,42498
420
- pip/_vendor/chardet/johabprober.py,sha256=O1Qw9nVzRnun7vZp4UZM7wvJSv9W941mEU9uDMnY3DU,1752
421
- pip/_vendor/chardet/jpcntx.py,sha256=uhHrYWkLxE_rF5OkHKInm0HUsrjgKHHVQvtt3UcvotA,27055
422
- pip/_vendor/chardet/langbulgarianmodel.py,sha256=vmbvYFP8SZkSxoBvLkFqKiH1sjma5ihk3PTpdy71Rr4,104562
423
- pip/_vendor/chardet/langgreekmodel.py,sha256=JfB7bupjjJH2w3X_mYnQr9cJA_7EuITC2cRW13fUjeI,98484
424
- pip/_vendor/chardet/langhebrewmodel.py,sha256=3HXHaLQPNAGcXnJjkIJfozNZLTvTJmf4W5Awi6zRRKc,98196
425
- pip/_vendor/chardet/langhungarianmodel.py,sha256=WxbeQIxkv8YtApiNqxQcvj-tMycsoI4Xy-fwkDHpP_Y,101363
426
- pip/_vendor/chardet/langrussianmodel.py,sha256=s395bTZ87ESTrZCOdgXbEjZ9P1iGPwCl_8xSsac_DLY,128035
427
- pip/_vendor/chardet/langthaimodel.py,sha256=7bJlQitRpTnVGABmbSznHnJwOHDy3InkTvtFUx13WQI,102774
428
- pip/_vendor/chardet/langturkishmodel.py,sha256=XY0eGdTIy4eQ9Xg1LVPZacb-UBhHBR-cq0IpPVHowKc,95372
429
- pip/_vendor/chardet/latin1prober.py,sha256=p15EEmFbmQUwbKLC7lOJVGHEZwcG45ubEZYTGu01J5g,5380
430
- pip/_vendor/chardet/macromanprober.py,sha256=9anfzmY6TBfUPDyBDOdY07kqmTHpZ1tK0jL-p1JWcOY,6077
431
- pip/_vendor/chardet/mbcharsetprober.py,sha256=Wr04WNI4F3X_VxEverNG-H25g7u-MDDKlNt-JGj-_uU,3715
432
- pip/_vendor/chardet/mbcsgroupprober.py,sha256=iRpaNBjV0DNwYPu_z6TiHgRpwYahiM7ztI_4kZ4Uz9A,2131
433
- pip/_vendor/chardet/mbcssm.py,sha256=hUtPvDYgWDaA2dWdgLsshbwRfm3Q5YRlRogdmeRUNQw,30391
434
- pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
435
- pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc,,
436
- pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc,,
437
- pip/_vendor/chardet/metadata/languages.py,sha256=FhvBIdZFxRQ-dTwkb_0madRKgVBCaUMQz9I5xqjE5iQ,13560
438
- pip/_vendor/chardet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
439
- pip/_vendor/chardet/resultdict.py,sha256=ez4FRvN5KaSosJeJ2WzUyKdDdg35HDy_SSLPXKCdt5M,402
440
- pip/_vendor/chardet/sbcharsetprober.py,sha256=-nd3F90i7GpXLjehLVHqVBE0KlWzGvQUPETLBNn4o6U,6400
441
- pip/_vendor/chardet/sbcsgroupprober.py,sha256=gcgI0fOfgw_3YTClpbra_MNxwyEyJ3eUXraoLHYb59E,4137
442
- pip/_vendor/chardet/sjisprober.py,sha256=aqQufMzRw46ZpFlzmYaYeT2-nzmKb-hmcrApppJ862k,4007
443
- pip/_vendor/chardet/universaldetector.py,sha256=xYBrg4x0dd9WnT8qclfADVD9ondrUNkqPmvte1pa520,14848
444
- pip/_vendor/chardet/utf1632prober.py,sha256=pw1epGdMj1hDGiCu1AHqqzOEfjX8MVdiW7O1BlT8-eQ,8505
445
- pip/_vendor/chardet/utf8prober.py,sha256=8m08Ub5490H4jQ6LYXvFysGtgKoKsHUd2zH_i8_TnVw,2812
446
- pip/_vendor/chardet/version.py,sha256=lGtJcxGM44Qz4Cbk4rbbmrKxnNr1-97U25TameLehZw,244
447
- pip/_vendor/colorama/__init__.py,sha256=wePQA4U20tKgYARySLEC047ucNX-g8pRLpYBuiHlLb8,266
448
- pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc,,
449
- pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc,,
450
- pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc,,
451
- pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc,,
452
- pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc,,
453
- pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc,,
454
- pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522
455
- pip/_vendor/colorama/ansitowin32.py,sha256=vPNYa3OZbxjbuFyaVo0Tmhmy1FZ1lKMWCnT7odXpItk,11128
456
- pip/_vendor/colorama/initialise.py,sha256=-hIny86ClXo39ixh5iSCfUIa2f_h_bgKRDW7gqs-KLU,3325
457
- pip/_vendor/colorama/tests/__init__.py,sha256=MkgPAEzGQd-Rq0w0PZXSX2LadRWhUECcisJY8lSrm4Q,75
458
- pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc,,
459
- pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc,,
460
- pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc,,
461
- pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc,,
462
- pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc,,
463
- pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc,,
464
- pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc,,
465
- pip/_vendor/colorama/tests/ansi_test.py,sha256=FeViDrUINIZcr505PAxvU4AjXz1asEiALs9GXMhwRaE,2839
466
- pip/_vendor/colorama/tests/ansitowin32_test.py,sha256=RN7AIhMJ5EqDsYaCjVo-o4u8JzDD4ukJbmevWKS70rY,10678
467
- pip/_vendor/colorama/tests/initialise_test.py,sha256=BbPy-XfyHwJ6zKozuQOvNvQZzsx9vdb_0bYXn7hsBTc,6741
468
- pip/_vendor/colorama/tests/isatty_test.py,sha256=Pg26LRpv0yQDB5Ac-sxgVXG7hsA1NYvapFgApZfYzZg,1866
469
- pip/_vendor/colorama/tests/utils.py,sha256=1IIRylG39z5-dzq09R_ngufxyPZxgldNbrxKxUGwGKE,1079
470
- pip/_vendor/colorama/tests/winterm_test.py,sha256=qoWFPEjym5gm2RuMwpf3pOis3a5r_PJZFCzK254JL8A,3709
471
- pip/_vendor/colorama/win32.py,sha256=YQOKwMTwtGBbsY4dL5HYTvwTeP9wIQra5MvPNddpxZs,6181
472
- pip/_vendor/colorama/winterm.py,sha256=XCQFDHjPi6AHYNdZwy0tA02H-Jh48Jp-HvCjeLeLp3U,7134
473
- pip/_vendor/distlib/__init__.py,sha256=hJKF7FHoqbmGckncDuEINWo_OYkDNiHODtYXSMcvjcc,625
474
- pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc,,
475
- pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc,,
476
- pip/_vendor/distlib/__pycache__/database.cpython-312.pyc,,
477
- pip/_vendor/distlib/__pycache__/index.cpython-312.pyc,,
478
- pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc,,
479
- pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc,,
480
- pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc,,
481
- pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc,,
482
- pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc,,
483
- pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc,,
484
- pip/_vendor/distlib/__pycache__/util.cpython-312.pyc,,
485
- pip/_vendor/distlib/__pycache__/version.cpython-312.pyc,,
486
- pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc,,
487
- pip/_vendor/distlib/compat.py,sha256=Un-uIBvy02w-D267OG4VEhuddqWgKj9nNkxVltAb75w,41487
488
- pip/_vendor/distlib/database.py,sha256=0V9Qvs0Vrxa2F_-hLWitIyVyRifJ0pCxyOI-kEOBwsA,51965
489
- pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797
490
- pip/_vendor/distlib/locators.py,sha256=o1r_M86_bRLafSpetmyfX8KRtFu-_Q58abvQrnOSnbA,51767
491
- pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168
492
- pip/_vendor/distlib/markers.py,sha256=n3DfOh1yvZ_8EW7atMyoYeZFXjYla0Nz0itQlojCd0A,5268
493
- pip/_vendor/distlib/metadata.py,sha256=pB9WZ9mBfmQxc9OVIldLS5CjOoQRvKAvUwwQyKwKQtQ,39693
494
- pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820
495
- pip/_vendor/distlib/scripts.py,sha256=nQFXN6G7nOWNDUyxirUep-3WOlJhB7McvCs9zOnkGTI,18315
496
- pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792
497
- pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784
498
- pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032
499
- pip/_vendor/distlib/util.py,sha256=XSznxEi_i3T20UJuaVc0qXHz5ksGUCW1khYlBprN_QE,67530
500
- pip/_vendor/distlib/version.py,sha256=9pXkduchve_aN7JG6iL9VTYV_kqNSGoc2Dwl8JuySnQ,23747
501
- pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648
502
- pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448
503
- pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888
504
- pip/_vendor/distlib/wheel.py,sha256=FVQCve8u-L0QYk5-YTZc7s4WmNQdvjRWTK08KXzZVX4,43958
505
- pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981
506
- pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64
507
- pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc,,
508
- pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc,,
509
- pip/_vendor/distro/__pycache__/distro.cpython-312.pyc,,
510
- pip/_vendor/distro/distro.py,sha256=UZO1LjIhtFCMdlbiz39gj3raV-Amf3SBwzGzfApiMHw,49330
511
- pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
512
- pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849
513
- pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc,,
514
- pip/_vendor/idna/__pycache__/codec.cpython-312.pyc,,
515
- pip/_vendor/idna/__pycache__/compat.cpython-312.pyc,,
516
- pip/_vendor/idna/__pycache__/core.cpython-312.pyc,,
517
- pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc,,
518
- pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc,,
519
- pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc,,
520
- pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc,,
521
- pip/_vendor/idna/codec.py,sha256=6ly5odKfqrytKT9_7UrlGklHnf1DSK2r9C6cSM4sa28,3374
522
- pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321
523
- pip/_vendor/idna/core.py,sha256=1JxchwKzkxBSn7R_oCE12oBu3eVux0VzdxolmIad24M,12950
524
- pip/_vendor/idna/idnadata.py,sha256=xUjqKqiJV8Ho_XzBpAtv5JFoVPSupK-SUXvtjygUHqw,44375
525
- pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881
526
- pip/_vendor/idna/package_data.py,sha256=C_jHJzmX8PI4xq0jpzmcTMxpb5lDsq4o5VyxQzlVrZE,21
527
- pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
528
- pip/_vendor/idna/uts46data.py,sha256=zvjZU24s58_uAS850Mcd0NnD0X7_gCMAMjzWNIeUJdc,206539
529
- pip/_vendor/msgpack/__init__.py,sha256=hyGhlnmcJkxryJBKC3X5FnEph375kQoL_mG8LZUuXgY,1132
530
- pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc,,
531
- pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc,,
532
- pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc,,
533
- pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc,,
534
- pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
535
- pip/_vendor/msgpack/ext.py,sha256=C5MK8JhVYGYFWPvxsORsqZAnvOXefYQ57m1Ym0luW5M,6079
536
- pip/_vendor/msgpack/fallback.py,sha256=tvNBHyxxFbuVlC8GZShETClJxjLiDMOja4XwwyvNm2g,34544
537
- pip/_vendor/packaging/__about__.py,sha256=ugASIO2w1oUyH8_COqQ2X_s0rDhjbhQC3yJocD03h2c,661
538
- pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497
539
- pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc,,
540
- pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc,,
541
- pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc,,
542
- pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc,,
543
- pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc,,
544
- pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc,,
545
- pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc,,
546
- pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc,,
547
- pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc,,
548
- pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc,,
549
- pip/_vendor/packaging/__pycache__/version.cpython-312.pyc,,
550
- pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488
551
- pip/_vendor/packaging/_musllinux.py,sha256=_KGgY_qc7vhMGpoqss25n2hiLCNKRtvz9mCrS7gkqyc,4378
552
- pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
553
- pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487
554
- pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
555
- pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676
556
- pip/_vendor/packaging/specifiers.py,sha256=LRQ0kFsHrl5qfcFNEEJrIFYsnIHQUJXY9fIsakTrrqE,30110
557
- pip/_vendor/packaging/tags.py,sha256=lmsnGNiJ8C4D_Pf9PbM0qgbZvD9kmB9lpZBQUZa3R_Y,15699
558
- pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200
559
- pip/_vendor/packaging/version.py,sha256=_fLRNrFrxYcHVfyo8vk9j8s6JM8N_xsSxVFr6RJyco8,14665
560
- pip/_vendor/pkg_resources/__init__.py,sha256=hTAeJCNYb7dJseIDVsYK3mPQep_gphj4tQh-bspX8bg,109364
561
- pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc,,
562
- pip/_vendor/platformdirs/__init__.py,sha256=SkhEYVyC_HUHC6KX7n4M_6coyRMtEB38QMyOYIAX6Yk,20155
563
- pip/_vendor/platformdirs/__main__.py,sha256=fVvSiTzr2-RM6IsjWjj4fkaOtDOgDhUWv6sA99do4CQ,1476
564
- pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc,,
565
- pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc,,
566
- pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc,,
567
- pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc,,
568
- pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc,,
569
- pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc,,
570
- pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc,,
571
- pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc,,
572
- pip/_vendor/platformdirs/android.py,sha256=y_EEMKwYl2-bzYBDovksSn8m76on0Lda8eyJksVQE9U,7211
573
- pip/_vendor/platformdirs/api.py,sha256=jWtX06jAJytYrkJDOqEls97mCkyHRSZkoqUlbMK5Qew,7132
574
- pip/_vendor/platformdirs/macos.py,sha256=LueVOoVgGWDBwQb8OFwXkVKfVn33CM1Lkwf1-A86tRQ,3678
575
- pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
576
- pip/_vendor/platformdirs/unix.py,sha256=22JhR8ZY0aLxSVCFnKrc6f1iz6Gv42K24Daj7aTjfSg,8809
577
- pip/_vendor/platformdirs/version.py,sha256=mavZTQIJIXfdewEaSTn7EWrNfPZWeRofb-74xqW5f2M,160
578
- pip/_vendor/platformdirs/windows.py,sha256=4TtbPGoWG2PRgI11uquDa7eRk8TcxvnUNuuMGZItnXc,9573
579
- pip/_vendor/pygments/__init__.py,sha256=6AuDljQtvf89DTNUyWM7k3oUlP_lq70NU-INKKteOBY,2983
580
- pip/_vendor/pygments/__main__.py,sha256=es8EKMvXj5yToIfQ-pf3Dv5TnIeeM6sME0LW-n4ecHo,353
581
- pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc,,
582
- pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc,,
583
- pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc,,
584
- pip/_vendor/pygments/__pycache__/console.cpython-312.pyc,,
585
- pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc,,
586
- pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc,,
587
- pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc,,
588
- pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc,,
589
- pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc,,
590
- pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc,,
591
- pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc,,
592
- pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc,,
593
- pip/_vendor/pygments/__pycache__/style.cpython-312.pyc,,
594
- pip/_vendor/pygments/__pycache__/token.cpython-312.pyc,,
595
- pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc,,
596
- pip/_vendor/pygments/__pycache__/util.cpython-312.pyc,,
597
- pip/_vendor/pygments/cmdline.py,sha256=byxYJp9gnjVeyhRlZ3UTMgo_LhkXh1afvN8wJBtAcc8,23685
598
- pip/_vendor/pygments/console.py,sha256=2wZ5W-U6TudJD1_NLUwjclMpbomFM91lNv11_60sfGY,1697
599
- pip/_vendor/pygments/filter.py,sha256=j5aLM9a9wSx6eH1oy473oSkJ02hGWNptBlVo4s1g_30,1938
600
- pip/_vendor/pygments/filters/__init__.py,sha256=h_koYkUFo-FFUxjs564JHUAz7O3yJpVwI6fKN3MYzG0,40386
601
- pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc,,
602
- pip/_vendor/pygments/formatter.py,sha256=J9OL9hXLJKZk7moUgKwpjW9HNf4WlJFg_o_-Z_S_tTY,4178
603
- pip/_vendor/pygments/formatters/__init__.py,sha256=_xgAcdFKr0QNYwh_i98AU9hvfP3X2wAkhElFcRRF3Uo,5424
604
- pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc,,
605
- pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc,,
606
- pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc,,
607
- pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc,,
608
- pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc,,
609
- pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc,,
610
- pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc,,
611
- pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc,,
612
- pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc,,
613
- pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc,,
614
- pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc,,
615
- pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc,,
616
- pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc,,
617
- pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc,,
618
- pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176
619
- pip/_vendor/pygments/formatters/bbcode.py,sha256=r1b7wzWTJouADDLh-Z11iRi4iQxD0JKJ1qHl6mOYxsA,3314
620
- pip/_vendor/pygments/formatters/groff.py,sha256=xy8Zf3tXOo6MWrXh7yPGWx3lVEkg_DhY4CxmsDb0IVo,5094
621
- pip/_vendor/pygments/formatters/html.py,sha256=PIzAyilNqaTzSSP2slDG2VDLE3qNioWy2rgtSSoviuI,35610
622
- pip/_vendor/pygments/formatters/img.py,sha256=XKXmg2_XONrR4mtq2jfEU8XCsoln3VSGTw-UYiEokys,21938
623
- pip/_vendor/pygments/formatters/irc.py,sha256=Ep-m8jd3voFO6Fv57cUGFmz6JVA67IEgyiBOwv0N4a0,4981
624
- pip/_vendor/pygments/formatters/latex.py,sha256=FGzJ-YqSTE8z_voWPdzvLY5Tq8jE_ygjGjM6dXZJ8-k,19351
625
- pip/_vendor/pygments/formatters/other.py,sha256=gPxkk5BdAzWTCgbEHg1lpLi-1F6ZPh5A_aotgLXHnzg,5073
626
- pip/_vendor/pygments/formatters/pangomarkup.py,sha256=6LKnQc8yh49f802bF0sPvbzck4QivMYqqoXAPaYP8uU,2212
627
- pip/_vendor/pygments/formatters/rtf.py,sha256=aA0v_psW6KZI3N18TKDifxeL6mcF8EDXcPXDWI4vhVQ,5014
628
- pip/_vendor/pygments/formatters/svg.py,sha256=dQONWypbzfvzGCDtdp3M_NJawScJvM2DiHbx1k-ww7g,7335
629
- pip/_vendor/pygments/formatters/terminal.py,sha256=FG-rpjRpFmNpiGB4NzIucvxq6sQIXB3HOTo2meTKtrU,4674
630
- pip/_vendor/pygments/formatters/terminal256.py,sha256=13SJ3D5pFdqZ9zROE6HbWnBDwHvOGE8GlsmqGhprRp4,11753
631
- pip/_vendor/pygments/lexer.py,sha256=2BpqLlT2ExvOOi7vnjK5nB4Fp-m52ldiPaXMox5uwug,34618
632
- pip/_vendor/pygments/lexers/__init__.py,sha256=j5KEi5O_VQ5GS59H49l-10gzUOkWKxlwGeVMlGO2MMk,12130
633
- pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc,,
634
- pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc,,
635
- pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc,,
636
- pip/_vendor/pygments/lexers/_mapping.py,sha256=Hts4r_ZQ8icftGM7gkBPeED5lyVSv4affFgXYE6Ap04,72281
637
- pip/_vendor/pygments/lexers/python.py,sha256=c7jnmKFU9DLxTJW0UbwXt6Z9FJqbBlVsWA1Qr9xSA_w,53424
638
- pip/_vendor/pygments/modeline.py,sha256=eF2vO4LpOGoPvIKKkbPfnyut8hT4UiebZPpb-BYGQdI,986
639
- pip/_vendor/pygments/plugin.py,sha256=j1Fh310RbV2DQ9nvkmkqvlj38gdyuYKllLnGxbc8sJM,2591
640
- pip/_vendor/pygments/regexopt.py,sha256=jg1ALogcYGU96TQS9isBl6dCrvw5y5--BP_K-uFk_8s,3072
641
- pip/_vendor/pygments/scanner.py,sha256=b_nu5_f3HCgSdp5S_aNRBQ1MSCm4ZjDwec2OmTRickw,3092
642
- pip/_vendor/pygments/sphinxext.py,sha256=wBFYm180qea9JKt__UzhRlNRNhczPDFDaqGD21sbuso,6882
643
- pip/_vendor/pygments/style.py,sha256=C4qyoJrUTkq-OV3iO-8Vz3UtWYpJwSTdh5_vlGCGdNQ,6257
644
- pip/_vendor/pygments/styles/__init__.py,sha256=he7HjQx7sC0d2kfTVLjUs0J15mtToJM6M1brwIm9--Q,3700
645
- pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc,,
646
- pip/_vendor/pygments/token.py,sha256=seNsmcch9OEHXYirh8Ool7w8xDhfNTbLj5rHAC-gc_o,6184
647
- pip/_vendor/pygments/unistring.py,sha256=FaUfG14NBJEKLQoY9qj6JYeXrpYcLmKulghdxOGFaOc,63223
648
- pip/_vendor/pygments/util.py,sha256=AEVY0qonyyEMgv4Do2dINrrqUAwUk2XYSqHM650uzek,10230
649
- pip/_vendor/pyparsing/__init__.py,sha256=9m1JbE2JTLdBG0Mb6B0lEaZj181Wx5cuPXZpsbHEYgE,9116
650
- pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc,,
651
- pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc,,
652
- pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc,,
653
- pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc,,
654
- pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc,,
655
- pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc,,
656
- pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc,,
657
- pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc,,
658
- pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc,,
659
- pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc,,
660
- pip/_vendor/pyparsing/actions.py,sha256=05uaIPOznJPQ7VgRdmGCmG4sDnUPtwgv5qOYIqbL2UY,6567
661
- pip/_vendor/pyparsing/common.py,sha256=p-3c83E5-DjlkF35G0O9-kjQRpoejP-2_z0hxZ-eol4,13387
662
- pip/_vendor/pyparsing/core.py,sha256=yvuRlLpXSF8mgk-QhiW3OVLqD9T0rsj9tbibhRH4Yaw,224445
663
- pip/_vendor/pyparsing/diagram/__init__.py,sha256=nxmDOoYF9NXuLaGYy01tKFjkNReWJlrGFuJNWEiTo84,24215
664
- pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc,,
665
- pip/_vendor/pyparsing/exceptions.py,sha256=6Jc6W1eDZBzyFu1J0YrcdNFVBC-RINujZmveSnB8Rxw,9523
666
- pip/_vendor/pyparsing/helpers.py,sha256=BZJHCA8SS0pYio30KGQTc9w2qMOaK4YpZ7hcvHbnTgk,38646
667
- pip/_vendor/pyparsing/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
668
- pip/_vendor/pyparsing/results.py,sha256=9dyqQ-w3MjfmxWbFt8KEPU6IfXeyRdoWp2Og802rUQY,26692
669
- pip/_vendor/pyparsing/testing.py,sha256=eJncg0p83zm1FTPvM9auNT6oavIvXaibmRFDf1qmwkY,13488
670
- pip/_vendor/pyparsing/unicode.py,sha256=fAPdsJiARFbkPAih6NkYry0dpj4jPqelGVMlE4wWFW8,10646
671
- pip/_vendor/pyparsing/util.py,sha256=vTMzTdwSDyV8d_dSgquUTdWgBFoA_W30nfxEJDsshRQ,8670
672
- pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491
673
- pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc,,
674
- pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc,,
675
- pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc,,
676
- pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138
677
- pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920
678
- pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546
679
- pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc,,
680
- pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc,,
681
- pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927
682
- pip/_vendor/requests/__init__.py,sha256=owujob4dk45Siy4EYtbCKR6wcFph7E04a_v_OuAacBA,5169
683
- pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc,,
684
- pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc,,
685
- pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc,,
686
- pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc,,
687
- pip/_vendor/requests/__pycache__/api.cpython-312.pyc,,
688
- pip/_vendor/requests/__pycache__/auth.cpython-312.pyc,,
689
- pip/_vendor/requests/__pycache__/certs.cpython-312.pyc,,
690
- pip/_vendor/requests/__pycache__/compat.cpython-312.pyc,,
691
- pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc,,
692
- pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc,,
693
- pip/_vendor/requests/__pycache__/help.cpython-312.pyc,,
694
- pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc,,
695
- pip/_vendor/requests/__pycache__/models.cpython-312.pyc,,
696
- pip/_vendor/requests/__pycache__/packages.cpython-312.pyc,,
697
- pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc,,
698
- pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc,,
699
- pip/_vendor/requests/__pycache__/structures.cpython-312.pyc,,
700
- pip/_vendor/requests/__pycache__/utils.cpython-312.pyc,,
701
- pip/_vendor/requests/__version__.py,sha256=ssI3Ezt7PaxgkOW45GhtwPUclo_SO_ygtIm4A74IOfw,435
702
- pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495
703
- pip/_vendor/requests/adapters.py,sha256=idj6cZcId3L5xNNeJ7ieOLtw3awJk5A64xUfetHwq3M,19697
704
- pip/_vendor/requests/api.py,sha256=q61xcXq4tmiImrvcSVLTbFyCiD2F-L_-hWKGbz4y8vg,6449
705
- pip/_vendor/requests/auth.py,sha256=h-HLlVx9j8rKV5hfSAycP2ApOSglTz77R0tz7qCbbEE,10187
706
- pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575
707
- pip/_vendor/requests/compat.py,sha256=IhK9quyX0RRuWTNcg6d2JGSAOUbM6mym2p_2XjLTwf4,1286
708
- pip/_vendor/requests/cookies.py,sha256=kD3kNEcCj-mxbtf5fJsSaT86eGoEYpD3X0CSgpzl7BM,18560
709
- pip/_vendor/requests/exceptions.py,sha256=FA-_kVwBZ2jhXauRctN_ewHVK25b-fj0Azyz1THQ0Kk,3823
710
- pip/_vendor/requests/help.py,sha256=FnAAklv8MGm_qb2UilDQgS6l0cUttiCFKUjx0zn2XNA,3879
711
- pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733
712
- pip/_vendor/requests/models.py,sha256=dDZ-iThotky-Noq9yy97cUEJhr3wnY6mv-xR_ePg_lk,35288
713
- pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695
714
- pip/_vendor/requests/sessions.py,sha256=-LvTzrPtetSTrR3buxu4XhdgMrJFLB1q5D7P--L2Xhw,30373
715
- pip/_vendor/requests/status_codes.py,sha256=FvHmT5uH-_uimtRz5hH9VCbt7VV-Nei2J9upbej6j8g,4235
716
- pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912
717
- pip/_vendor/requests/utils.py,sha256=kOPn0qYD6xRTzaxbqTdYiSInBZHl6379AJsyIgzYGLY,33460
718
- pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537
719
- pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc,,
720
- pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc,,
721
- pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc,,
722
- pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc,,
723
- pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc,,
724
- pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
725
- pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc,,
726
- pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc,,
727
- pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156
728
- pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871
729
- pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
730
- pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601
731
- pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511
732
- pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963
733
- pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090
734
- pip/_vendor/rich/__main__.py,sha256=TT8sb9PTnsnKhhrGuHkLN0jdN0dtKhtPkEr9CidDbPM,8478
735
- pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc,,
736
- pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc,,
737
- pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc,,
738
- pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc,,
739
- pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc,,
740
- pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc,,
741
- pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc,,
742
- pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc,,
743
- pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc,,
744
- pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc,,
745
- pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc,,
746
- pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc,,
747
- pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc,,
748
- pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc,,
749
- pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc,,
750
- pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc,,
751
- pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc,,
752
- pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc,,
753
- pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc,,
754
- pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc,,
755
- pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc,,
756
- pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc,,
757
- pip/_vendor/rich/__pycache__/abc.cpython-312.pyc,,
758
- pip/_vendor/rich/__pycache__/align.cpython-312.pyc,,
759
- pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc,,
760
- pip/_vendor/rich/__pycache__/bar.cpython-312.pyc,,
761
- pip/_vendor/rich/__pycache__/box.cpython-312.pyc,,
762
- pip/_vendor/rich/__pycache__/cells.cpython-312.pyc,,
763
- pip/_vendor/rich/__pycache__/color.cpython-312.pyc,,
764
- pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc,,
765
- pip/_vendor/rich/__pycache__/columns.cpython-312.pyc,,
766
- pip/_vendor/rich/__pycache__/console.cpython-312.pyc,,
767
- pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc,,
768
- pip/_vendor/rich/__pycache__/containers.cpython-312.pyc,,
769
- pip/_vendor/rich/__pycache__/control.cpython-312.pyc,,
770
- pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc,,
771
- pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc,,
772
- pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc,,
773
- pip/_vendor/rich/__pycache__/errors.cpython-312.pyc,,
774
- pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc,,
775
- pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc,,
776
- pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc,,
777
- pip/_vendor/rich/__pycache__/json.cpython-312.pyc,,
778
- pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc,,
779
- pip/_vendor/rich/__pycache__/layout.cpython-312.pyc,,
780
- pip/_vendor/rich/__pycache__/live.cpython-312.pyc,,
781
- pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc,,
782
- pip/_vendor/rich/__pycache__/logging.cpython-312.pyc,,
783
- pip/_vendor/rich/__pycache__/markup.cpython-312.pyc,,
784
- pip/_vendor/rich/__pycache__/measure.cpython-312.pyc,,
785
- pip/_vendor/rich/__pycache__/padding.cpython-312.pyc,,
786
- pip/_vendor/rich/__pycache__/pager.cpython-312.pyc,,
787
- pip/_vendor/rich/__pycache__/palette.cpython-312.pyc,,
788
- pip/_vendor/rich/__pycache__/panel.cpython-312.pyc,,
789
- pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc,,
790
- pip/_vendor/rich/__pycache__/progress.cpython-312.pyc,,
791
- pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc,,
792
- pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc,,
793
- pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc,,
794
- pip/_vendor/rich/__pycache__/region.cpython-312.pyc,,
795
- pip/_vendor/rich/__pycache__/repr.cpython-312.pyc,,
796
- pip/_vendor/rich/__pycache__/rule.cpython-312.pyc,,
797
- pip/_vendor/rich/__pycache__/scope.cpython-312.pyc,,
798
- pip/_vendor/rich/__pycache__/screen.cpython-312.pyc,,
799
- pip/_vendor/rich/__pycache__/segment.cpython-312.pyc,,
800
- pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc,,
801
- pip/_vendor/rich/__pycache__/status.cpython-312.pyc,,
802
- pip/_vendor/rich/__pycache__/style.cpython-312.pyc,,
803
- pip/_vendor/rich/__pycache__/styled.cpython-312.pyc,,
804
- pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc,,
805
- pip/_vendor/rich/__pycache__/table.cpython-312.pyc,,
806
- pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc,,
807
- pip/_vendor/rich/__pycache__/text.cpython-312.pyc,,
808
- pip/_vendor/rich/__pycache__/theme.cpython-312.pyc,,
809
- pip/_vendor/rich/__pycache__/themes.cpython-312.pyc,,
810
- pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc,,
811
- pip/_vendor/rich/__pycache__/tree.cpython-312.pyc,,
812
- pip/_vendor/rich/_cell_widths.py,sha256=2n4EiJi3X9sqIq0O16kUZ_zy6UYMd3xFfChlKfnW1Hc,10096
813
- pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235
814
- pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064
815
- pip/_vendor/rich/_export_format.py,sha256=qxgV3nKnXQu1hfbnRVswPYy-AwIg1X0LSC47cK5s8jk,2100
816
- pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265
817
- pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799
818
- pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695
819
- pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225
820
- pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236
821
- pip/_vendor/rich/_null_file.py,sha256=tGSXk_v-IZmbj1GAzHit8A3kYIQMiCpVsCFfsC-_KJ4,1387
822
- pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063
823
- pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423
824
- pip/_vendor/rich/_ratio.py,sha256=2lLSliL025Y-YMfdfGbutkQDevhcyDqc-DtUYW9mU70,5472
825
- pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919
826
- pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351
827
- pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417
828
- pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820
829
- pip/_vendor/rich/_windows.py,sha256=dvNl9TmfPzNVxiKk5WDFihErZ5796g2UC9-KGGyfXmk,1926
830
- pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783
831
- pip/_vendor/rich/_wrap.py,sha256=xfV_9t0Sg6rzimmrDru8fCVmUlalYAcHLDfrJZnbbwQ,1840
832
- pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890
833
- pip/_vendor/rich/align.py,sha256=Ji-Yokfkhnfe_xMmr4ISjZB07TJXggBCOYoYa-HDAr8,10368
834
- pip/_vendor/rich/ansi.py,sha256=iD6532QYqnBm6hADulKjrV8l8kFJ-9fEVooHJHH3hMg,6906
835
- pip/_vendor/rich/bar.py,sha256=a7UD303BccRCrEhGjfMElpv5RFYIinaAhAuqYqhUvmw,3264
836
- pip/_vendor/rich/box.py,sha256=FJ6nI3jD7h2XNFU138bJUt2HYmWOlRbltoCEuIAZhew,9842
837
- pip/_vendor/rich/cells.py,sha256=627ztJs9zOL-38HJ7kXBerR-gT8KBfYC8UzEwMJDYYo,4509
838
- pip/_vendor/rich/color.py,sha256=9Gh958U3f75WVdLTeC0U9nkGTn2n0wnojKpJ6jQEkIE,18224
839
- pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054
840
- pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131
841
- pip/_vendor/rich/console.py,sha256=pDvkbLkvtZIMIwQx_jkZ-seyNl4zGBLviXoWXte9fwg,99218
842
- pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288
843
- pip/_vendor/rich/containers.py,sha256=aKgm5UDHn5Nmui6IJaKdsZhbHClh_X7D-_Wg8Ehrr7s,5497
844
- pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630
845
- pip/_vendor/rich/default_styles.py,sha256=-Fe318kMVI_IwciK5POpThcO0-9DYJ67TZAN6DlmlmM,8082
846
- pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972
847
- pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501
848
- pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642
849
- pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683
850
- pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508
851
- pip/_vendor/rich/highlighter.py,sha256=p3C1g4QYzezFKdR7NF9EhPbzQDvdPUhGRgSyGGEmPko,9584
852
- pip/_vendor/rich/json.py,sha256=EYp9ucj-nDjYDkHCV6Mk1ve8nUOpuFLaW76X50Mis2M,5032
853
- pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252
854
- pip/_vendor/rich/layout.py,sha256=RFYL6HdCFsHf9WRpcvi3w-fpj-8O5dMZ8W96VdKNdbI,14007
855
- pip/_vendor/rich/live.py,sha256=vZzYvu7fqwlv3Gthl2xiw1Dc_O80VlGcCV0DOHwCyDM,14273
856
- pip/_vendor/rich/live_render.py,sha256=zElm3PrfSIvjOce28zETHMIUf9pFYSUA5o0AflgUP64,3667
857
- pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903
858
- pip/_vendor/rich/markup.py,sha256=xzF4uAafiEeEYDJYt_vUnJOGoTU8RrH-PH7WcWYXjCg,8198
859
- pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305
860
- pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970
861
- pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828
862
- pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396
863
- pip/_vendor/rich/panel.py,sha256=wGMe40J8KCGgQoM0LyjRErmGIkv2bsYA71RCXThD0xE,10574
864
- pip/_vendor/rich/pretty.py,sha256=eLEYN9xVaMNuA6EJVYm4li7HdOHxCqmVKvnOqJpyFt0,35852
865
- pip/_vendor/rich/progress.py,sha256=n4KF9vky8_5iYeXcyZPEvzyLplWlDvFLkM5JI0Bs08A,59706
866
- pip/_vendor/rich/progress_bar.py,sha256=cEoBfkc3lLwqba4XKsUpy4vSQKDh2QQ5J2J94-ACFoo,8165
867
- pip/_vendor/rich/prompt.py,sha256=x0mW-pIPodJM4ry6grgmmLrl8VZp99kqcmdnBe70YYA,11303
868
- pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391
869
- pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
870
- pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166
871
- pip/_vendor/rich/repr.py,sha256=9Z8otOmM-tyxnyTodvXlectP60lwahjGiDTrbrxPSTg,4431
872
- pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602
873
- pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843
874
- pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591
875
- pip/_vendor/rich/segment.py,sha256=XLnJEFvcV3bjaVzMNUJiem3n8lvvI9TJ5PTu-IG2uTg,24247
876
- pip/_vendor/rich/spinner.py,sha256=15koCmF0DQeD8-k28Lpt6X_zJQUlzEhgo_6A6uy47lc,4339
877
- pip/_vendor/rich/status.py,sha256=gJsIXIZeSo3urOyxRUjs6VrhX5CZrA0NxIQ-dxhCnwo,4425
878
- pip/_vendor/rich/style.py,sha256=3hiocH_4N8vwRm3-8yFWzM7tSwjjEven69XqWasSQwM,27073
879
- pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258
880
- pip/_vendor/rich/syntax.py,sha256=jgDiVCK6cpR0NmBOpZmIu-Ud4eaW7fHvjJZkDbjpcSA,35173
881
- pip/_vendor/rich/table.py,sha256=-WzesL-VJKsaiDU3uyczpJMHy6VCaSewBYJwx8RudI8,39684
882
- pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370
883
- pip/_vendor/rich/text.py,sha256=_8JBlSau0c2z8ENOZMi1hJ7M1ZGY408E4-hXjHyyg1A,45525
884
- pip/_vendor/rich/theme.py,sha256=belFJogzA0W0HysQabKaHOc3RWH2ko3fQAJhoN-AFdo,3777
885
- pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102
886
- pip/_vendor/rich/traceback.py,sha256=yCLVrCtyoFNENd9mkm2xeG3KmqkTwH9xpFOO7p2Bq0A,29604
887
- pip/_vendor/rich/tree.py,sha256=BMbUYNjS9uodNPfvtY_odmU09GA5QzcMbQ5cJZhllQI,9169
888
- pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549
889
- pip/_vendor/tenacity/__init__.py,sha256=3kvAL6KClq8GFo2KFhmOzskRKSDQI-ubrlfZ8AQEEI0,20493
890
- pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc,,
891
- pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc,,
892
- pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc,,
893
- pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc,,
894
- pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc,,
895
- pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc,,
896
- pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc,,
897
- pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc,,
898
- pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc,,
899
- pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc,,
900
- pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc,,
901
- pip/_vendor/tenacity/_asyncio.py,sha256=Qi6wgQsGa9MQibYRy3OXqcDQswIZZ00dLOoSUGN-6o8,3551
902
- pip/_vendor/tenacity/_utils.py,sha256=ubs6a7sxj3JDNRKWCyCU2j5r1CB7rgyONgZzYZq6D_4,2179
903
- pip/_vendor/tenacity/after.py,sha256=S5NCISScPeIrKwIeXRwdJl3kV9Q4nqZfnNPDx6Hf__g,1682
904
- pip/_vendor/tenacity/before.py,sha256=dIZE9gmBTffisfwNkK0F1xFwGPV41u5GK70UY4Pi5Kc,1562
905
- pip/_vendor/tenacity/before_sleep.py,sha256=YmpgN9Y7HGlH97U24vvq_YWb5deaK4_DbiD8ZuFmy-E,2372
906
- pip/_vendor/tenacity/nap.py,sha256=fRWvnz1aIzbIq9Ap3gAkAZgDH6oo5zxMrU6ZOVByq0I,1383
907
- pip/_vendor/tenacity/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
908
- pip/_vendor/tenacity/retry.py,sha256=jrzD_mxA5mSTUEdiYB7SHpxltjhPSYZSnSRATb-ggRc,8746
909
- pip/_vendor/tenacity/stop.py,sha256=YMJs7ZgZfND65PRLqlGB_agpfGXlemx_5Hm4PKnBqpQ,3086
910
- pip/_vendor/tenacity/tornadoweb.py,sha256=po29_F1Mt8qZpsFjX7EVwAT0ydC_NbVia9gVi7R_wXA,2142
911
- pip/_vendor/tenacity/wait.py,sha256=3FcBJoCDgym12_dN6xfK8C1gROY0Hn4NSI2u8xv50uE,8024
912
- pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396
913
- pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc,,
914
- pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc,,
915
- pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc,,
916
- pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc,,
917
- pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633
918
- pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943
919
- pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254
920
- pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26
921
- pip/_vendor/truststore/__init__.py,sha256=qzTLSH8PvAkY1fr6QQ2vV-KwE_M83wdXugtpJaP_AbM,403
922
- pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc,,
923
- pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc,,
924
- pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc,,
925
- pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc,,
926
- pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc,,
927
- pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc,,
928
- pip/_vendor/truststore/_api.py,sha256=xjuEu_rlH4hcdJTROImEyOEqdw-F8t5vO2H2BToY0Ro,9893
929
- pip/_vendor/truststore/_macos.py,sha256=BjvAKoAjXhdIPuxpY124HJIFswDb0pq8DjynzJOVwqc,17694
930
- pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324
931
- pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130
932
- pip/_vendor/truststore/_windows.py,sha256=1x_EhROeJ9QK1sMAjfnZC7awYI8UnBJYL-TjACUYI4A,17468
933
- pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
934
- pip/_vendor/typing_extensions.py,sha256=EWpcpyQnVmc48E9fSyPGs-vXgHcAk9tQABQIxmMsCGk,111130
935
- pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333
936
- pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc,,
937
- pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc,,
938
- pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc,,
939
- pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc,,
940
- pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc,,
941
- pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc,,
942
- pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc,,
943
- pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc,,
944
- pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc,,
945
- pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc,,
946
- pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc,,
947
- pip/_vendor/urllib3/_collections.py,sha256=Rp1mVyBgc_UlAcp6M3at1skJBXR5J43NawRTvW2g_XY,10811
948
- pip/_vendor/urllib3/_version.py,sha256=azoM7M7BUADl2kBhMVR6PPf2GhBDI90me1fcnzTwdcw,64
949
- pip/_vendor/urllib3/connection.py,sha256=92k9td_y4PEiTIjNufCUa1NzMB3J3w0LEdyokYgXnW8,20300
950
- pip/_vendor/urllib3/connectionpool.py,sha256=ItVDasDnPRPP9R8bNxY7tPBlC724nJ9nlxVgXG_SLbI,39990
951
- pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
952
- pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc,,
953
- pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc,,
954
- pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc,,
955
- pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc,,
956
- pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,,
957
- pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc,,
958
- pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc,,
959
- pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957
960
- pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
961
- pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc,,
962
- pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc,,
963
- pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc,,
964
- pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632
965
- pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922
966
- pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036
967
- pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528
968
- pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081
969
- pip/_vendor/urllib3/contrib/securetransport.py,sha256=yhZdmVjY6PI6EeFbp7qYOp6-vp1Rkv2NMuOGaEj7pmc,34448
970
- pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097
971
- pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217
972
- pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579
973
- pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440
974
- pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
975
- pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc,,
976
- pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc,,
977
- pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
978
- pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc,,
979
- pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc,,
980
- pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc,,
981
- pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417
982
- pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343
983
- pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665
984
- pip/_vendor/urllib3/poolmanager.py,sha256=0i8cJgrqupza67IBPZ_u9jXvnSxr5UBlVEiUqdkPtYI,19752
985
- pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691
986
- pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641
987
- pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155
988
- pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc,,
989
- pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc,,
990
- pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc,,
991
- pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc,,
992
- pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc,,
993
- pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc,,
994
- pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc,,
995
- pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc,,
996
- pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,,
997
- pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc,,
998
- pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc,,
999
- pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc,,
1000
- pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc,,
1001
- pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901
1002
- pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605
1003
- pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498
1004
- pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997
1005
- pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510
1006
- pip/_vendor/urllib3/util/retry.py,sha256=Z6WEf518eTOXP5jr5QSQ9gqJI0DVYt3Xs3EKnYaTmus,22013
1007
- pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177
1008
- pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758
1009
- pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895
1010
- pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168
1011
- pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296
1012
- pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403
1013
- pip/_vendor/vendor.txt,sha256=4NKk7fQhVsZw0U-0zmm9Q2LgGyaPXacFbnJAaS0Q6EY,493
1014
- pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579
1015
- pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc,,
1016
- pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc,,
1017
- pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc,,
1018
- pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc,,
1019
- pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc,,
1020
- pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979
1021
- pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305
1022
- pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563
1023
- pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307
1024
- pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/REQUESTED DELETED
File without changes
transactify/Lib/site-packages/pip-24.0.dist-info/WHEEL DELETED
@@ -1,5 +0,0 @@
1
- Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
3
- Root-Is-Purelib: true
4
- Tag: py3-none-any
5
-
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/entry_points.txt DELETED
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- pip = pip._internal.cli.main:main
3
- pip3 = pip._internal.cli.main:main
4
- pip3.10 = pip._internal.cli.main:main
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/top_level.txt DELETED
@@ -1 +0,0 @@
1
- pip
 
 
transactify/Lib/site-packages/pip/__init__.py DELETED
@@ -1,13 +0,0 @@
1
- from typing import List, Optional
2
-
3
- __version__ = "24.0"
4
-
5
-
6
- def main(args: Optional[List[str]] = None) -> int:
7
- """This is an internal API only meant for use by pip's own console scripts.
8
-
9
- For additional details, see https://github.com/pypa/pip/issues/7498.
10
- """
11
- from pip._internal.utils.entrypoints import _wrapper
12
-
13
- return _wrapper(args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/__main__.py DELETED
@@ -1,24 +0,0 @@
1
- import os
2
- import sys
3
-
4
- # Remove '' and current working directory from the first entry
5
- # of sys.path, if present to avoid using current directory
6
- # in pip commands check, freeze, install, list and show,
7
- # when invoked as python -m pip <command>
8
- if sys.path[0] in ("", os.getcwd()):
9
- sys.path.pop(0)
10
-
11
- # If we are running from a wheel, add the wheel to sys.path
12
- # This allows the usage python pip-*.whl/pip install pip-*.whl
13
- if __package__ == "":
14
- # __file__ is pip-*.whl/pip/__main__.py
15
- # first dirname call strips of '/__main__.py', second strips off '/pip'
16
- # Resulting path is the name of the wheel itself
17
- # Add that to sys.path so we can import pip
18
- path = os.path.dirname(os.path.dirname(__file__))
19
- sys.path.insert(0, path)
20
-
21
- if __name__ == "__main__":
22
- from pip._internal.cli.main import main as _main
23
-
24
- sys.exit(_main())
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/__pip-runner__.py DELETED
@@ -1,50 +0,0 @@
1
- """Execute exactly this copy of pip, within a different environment.
2
-
3
- This file is named as it is, to ensure that this module can't be imported via
4
- an import statement.
5
- """
6
-
7
- # /!\ This version compatibility check section must be Python 2 compatible. /!\
8
-
9
- import sys
10
-
11
- # Copied from setup.py
12
- PYTHON_REQUIRES = (3, 7)
13
-
14
-
15
- def version_str(version): # type: ignore
16
- return ".".join(str(v) for v in version)
17
-
18
-
19
- if sys.version_info[:2] < PYTHON_REQUIRES:
20
- raise SystemExit(
21
- "This version of pip does not support python {} (requires >={}).".format(
22
- version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
23
- )
24
- )
25
-
26
- # From here on, we can use Python 3 features, but the syntax must remain
27
- # Python 2 compatible.
28
-
29
- import runpy # noqa: E402
30
- from importlib.machinery import PathFinder # noqa: E402
31
- from os.path import dirname # noqa: E402
32
-
33
- PIP_SOURCES_ROOT = dirname(dirname(__file__))
34
-
35
-
36
- class PipImportRedirectingFinder:
37
- @classmethod
38
- def find_spec(self, fullname, path=None, target=None): # type: ignore
39
- if fullname != "pip":
40
- return None
41
-
42
- spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target)
43
- assert spec, (PIP_SOURCES_ROOT, fullname)
44
- return spec
45
-
46
-
47
- sys.meta_path.insert(0, PipImportRedirectingFinder())
48
-
49
- assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module"
50
- runpy.run_module("pip", run_name="__main__", alter_sys=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc DELETED
Binary file (669 Bytes)
 
transactify/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc DELETED
Binary file (825 Bytes)
 
transactify/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc DELETED
Binary file (2.18 kB)
 
transactify/Lib/site-packages/pip/_internal/__init__.py DELETED
@@ -1,18 +0,0 @@
1
- from typing import List, Optional
2
-
3
- from pip._internal.utils import _log
4
-
5
- # init_logging() must be called before any call to logging.getLogger()
6
- # which happens at import of most modules.
7
- _log.init_logging()
8
-
9
-
10
- def main(args: (Optional[List[str]]) = None) -> int:
11
- """This is preserved for old console scripts that may still be referencing
12
- it.
13
-
14
- For additional details, see https://github.com/pypa/pip/issues/7498.
15
- """
16
- from pip._internal.utils.entrypoints import _wrapper
17
-
18
- return _wrapper(args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc DELETED
Binary file (771 Bytes)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc DELETED
Binary file (14.3 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc DELETED
Binary file (12.6 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc DELETED
Binary file (17.6 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc DELETED
Binary file (33.3 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc DELETED
Binary file (654 Bytes)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc DELETED
Binary file (4.95 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc DELETED
Binary file (10.5 kB)
 
transactify/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc DELETED
Binary file (13.6 kB)
 
transactify/Lib/site-packages/pip/_internal/build_env.py DELETED
@@ -1,311 +0,0 @@
1
- """Build Environment used for isolation during sdist building
2
- """
3
-
4
- import logging
5
- import os
6
- import pathlib
7
- import site
8
- import sys
9
- import textwrap
10
- from collections import OrderedDict
11
- from types import TracebackType
12
- from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple, Type, Union
13
-
14
- from pip._vendor.certifi import where
15
- from pip._vendor.packaging.requirements import Requirement
16
- from pip._vendor.packaging.version import Version
17
-
18
- from pip import __file__ as pip_location
19
- from pip._internal.cli.spinners import open_spinner
20
- from pip._internal.locations import get_platlib, get_purelib, get_scheme
21
- from pip._internal.metadata import get_default_environment, get_environment
22
- from pip._internal.utils.subprocess import call_subprocess
23
- from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds
24
-
25
- if TYPE_CHECKING:
26
- from pip._internal.index.package_finder import PackageFinder
27
-
28
- logger = logging.getLogger(__name__)
29
-
30
-
31
- def _dedup(a: str, b: str) -> Union[Tuple[str], Tuple[str, str]]:
32
- return (a, b) if a != b else (a,)
33
-
34
-
35
- class _Prefix:
36
- def __init__(self, path: str) -> None:
37
- self.path = path
38
- self.setup = False
39
- scheme = get_scheme("", prefix=path)
40
- self.bin_dir = scheme.scripts
41
- self.lib_dirs = _dedup(scheme.purelib, scheme.platlib)
42
-
43
-
44
- def get_runnable_pip() -> str:
45
- """Get a file to pass to a Python executable, to run the currently-running pip.
46
-
47
- This is used to run a pip subprocess, for installing requirements into the build
48
- environment.
49
- """
50
- source = pathlib.Path(pip_location).resolve().parent
51
-
52
- if not source.is_dir():
53
- # This would happen if someone is using pip from inside a zip file. In that
54
- # case, we can use that directly.
55
- return str(source)
56
-
57
- return os.fsdecode(source / "__pip-runner__.py")
58
-
59
-
60
- def _get_system_sitepackages() -> Set[str]:
61
- """Get system site packages
62
-
63
- Usually from site.getsitepackages,
64
- but fallback on `get_purelib()/get_platlib()` if unavailable
65
- (e.g. in a virtualenv created by virtualenv<20)
66
-
67
- Returns normalized set of strings.
68
- """
69
- if hasattr(site, "getsitepackages"):
70
- system_sites = site.getsitepackages()
71
- else:
72
- # virtualenv < 20 overwrites site.py without getsitepackages
73
- # fallback on get_purelib/get_platlib.
74
- # this is known to miss things, but shouldn't in the cases
75
- # where getsitepackages() has been removed (inside a virtualenv)
76
- system_sites = [get_purelib(), get_platlib()]
77
- return {os.path.normcase(path) for path in system_sites}
78
-
79
-
80
- class BuildEnvironment:
81
- """Creates and manages an isolated environment to install build deps"""
82
-
83
- def __init__(self) -> None:
84
- temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True)
85
-
86
- self._prefixes = OrderedDict(
87
- (name, _Prefix(os.path.join(temp_dir.path, name)))
88
- for name in ("normal", "overlay")
89
- )
90
-
91
- self._bin_dirs: List[str] = []
92
- self._lib_dirs: List[str] = []
93
- for prefix in reversed(list(self._prefixes.values())):
94
- self._bin_dirs.append(prefix.bin_dir)
95
- self._lib_dirs.extend(prefix.lib_dirs)
96
-
97
- # Customize site to:
98
- # - ensure .pth files are honored
99
- # - prevent access to system site packages
100
- system_sites = _get_system_sitepackages()
101
-
102
- self._site_dir = os.path.join(temp_dir.path, "site")
103
- if not os.path.exists(self._site_dir):
104
- os.mkdir(self._site_dir)
105
- with open(
106
- os.path.join(self._site_dir, "sitecustomize.py"), "w", encoding="utf-8"
107
- ) as fp:
108
- fp.write(
109
- textwrap.dedent(
110
- """
111
- import os, site, sys
112
-
113
- # First, drop system-sites related paths.
114
- original_sys_path = sys.path[:]
115
- known_paths = set()
116
- for path in {system_sites!r}:
117
- site.addsitedir(path, known_paths=known_paths)
118
- system_paths = set(
119
- os.path.normcase(path)
120
- for path in sys.path[len(original_sys_path):]
121
- )
122
- original_sys_path = [
123
- path for path in original_sys_path
124
- if os.path.normcase(path) not in system_paths
125
- ]
126
- sys.path = original_sys_path
127
-
128
- # Second, add lib directories.
129
- # ensuring .pth file are processed.
130
- for path in {lib_dirs!r}:
131
- assert not path in sys.path
132
- site.addsitedir(path)
133
- """
134
- ).format(system_sites=system_sites, lib_dirs=self._lib_dirs)
135
- )
136
-
137
- def __enter__(self) -> None:
138
- self._save_env = {
139
- name: os.environ.get(name, None)
140
- for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH")
141
- }
142
-
143
- path = self._bin_dirs[:]
144
- old_path = self._save_env["PATH"]
145
- if old_path:
146
- path.extend(old_path.split(os.pathsep))
147
-
148
- pythonpath = [self._site_dir]
149
-
150
- os.environ.update(
151
- {
152
- "PATH": os.pathsep.join(path),
153
- "PYTHONNOUSERSITE": "1",
154
- "PYTHONPATH": os.pathsep.join(pythonpath),
155
- }
156
- )
157
-
158
- def __exit__(
159
- self,
160
- exc_type: Optional[Type[BaseException]],
161
- exc_val: Optional[BaseException],
162
- exc_tb: Optional[TracebackType],
163
- ) -> None:
164
- for varname, old_value in self._save_env.items():
165
- if old_value is None:
166
- os.environ.pop(varname, None)
167
- else:
168
- os.environ[varname] = old_value
169
-
170
- def check_requirements(
171
- self, reqs: Iterable[str]
172
- ) -> Tuple[Set[Tuple[str, str]], Set[str]]:
173
- """Return 2 sets:
174
- - conflicting requirements: set of (installed, wanted) reqs tuples
175
- - missing requirements: set of reqs
176
- """
177
- missing = set()
178
- conflicting = set()
179
- if reqs:
180
- env = (
181
- get_environment(self._lib_dirs)
182
- if hasattr(self, "_lib_dirs")
183
- else get_default_environment()
184
- )
185
- for req_str in reqs:
186
- req = Requirement(req_str)
187
- # We're explicitly evaluating with an empty extra value, since build
188
- # environments are not provided any mechanism to select specific extras.
189
- if req.marker is not None and not req.marker.evaluate({"extra": ""}):
190
- continue
191
- dist = env.get_distribution(req.name)
192
- if not dist:
193
- missing.add(req_str)
194
- continue
195
- if isinstance(dist.version, Version):
196
- installed_req_str = f"{req.name}=={dist.version}"
197
- else:
198
- installed_req_str = f"{req.name}==={dist.version}"
199
- if not req.specifier.contains(dist.version, prereleases=True):
200
- conflicting.add((installed_req_str, req_str))
201
- # FIXME: Consider direct URL?
202
- return conflicting, missing
203
-
204
- def install_requirements(
205
- self,
206
- finder: "PackageFinder",
207
- requirements: Iterable[str],
208
- prefix_as_string: str,
209
- *,
210
- kind: str,
211
- ) -> None:
212
- prefix = self._prefixes[prefix_as_string]
213
- assert not prefix.setup
214
- prefix.setup = True
215
- if not requirements:
216
- return
217
- self._install_requirements(
218
- get_runnable_pip(),
219
- finder,
220
- requirements,
221
- prefix,
222
- kind=kind,
223
- )
224
-
225
- @staticmethod
226
- def _install_requirements(
227
- pip_runnable: str,
228
- finder: "PackageFinder",
229
- requirements: Iterable[str],
230
- prefix: _Prefix,
231
- *,
232
- kind: str,
233
- ) -> None:
234
- args: List[str] = [
235
- sys.executable,
236
- pip_runnable,
237
- "install",
238
- "--ignore-installed",
239
- "--no-user",
240
- "--prefix",
241
- prefix.path,
242
- "--no-warn-script-location",
243
- ]
244
- if logger.getEffectiveLevel() <= logging.DEBUG:
245
- args.append("-v")
246
- for format_control in ("no_binary", "only_binary"):
247
- formats = getattr(finder.format_control, format_control)
248
- args.extend(
249
- (
250
- "--" + format_control.replace("_", "-"),
251
- ",".join(sorted(formats or {":none:"})),
252
- )
253
- )
254
-
255
- index_urls = finder.index_urls
256
- if index_urls:
257
- args.extend(["-i", index_urls[0]])
258
- for extra_index in index_urls[1:]:
259
- args.extend(["--extra-index-url", extra_index])
260
- else:
261
- args.append("--no-index")
262
- for link in finder.find_links:
263
- args.extend(["--find-links", link])
264
-
265
- for host in finder.trusted_hosts:
266
- args.extend(["--trusted-host", host])
267
- if finder.allow_all_prereleases:
268
- args.append("--pre")
269
- if finder.prefer_binary:
270
- args.append("--prefer-binary")
271
- args.append("--")
272
- args.extend(requirements)
273
- extra_environ = {"_PIP_STANDALONE_CERT": where()}
274
- with open_spinner(f"Installing {kind}") as spinner:
275
- call_subprocess(
276
- args,
277
- command_desc=f"pip subprocess to install {kind}",
278
- spinner=spinner,
279
- extra_environ=extra_environ,
280
- )
281
-
282
-
283
- class NoOpBuildEnvironment(BuildEnvironment):
284
- """A no-op drop-in replacement for BuildEnvironment"""
285
-
286
- def __init__(self) -> None:
287
- pass
288
-
289
- def __enter__(self) -> None:
290
- pass
291
-
292
- def __exit__(
293
- self,
294
- exc_type: Optional[Type[BaseException]],
295
- exc_val: Optional[BaseException],
296
- exc_tb: Optional[TracebackType],
297
- ) -> None:
298
- pass
299
-
300
- def cleanup(self) -> None:
301
- pass
302
-
303
- def install_requirements(
304
- self,
305
- finder: "PackageFinder",
306
- requirements: Iterable[str],
307
- prefix_as_string: str,
308
- *,
309
- kind: str,
310
- ) -> None:
311
- raise NotImplementedError()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cache.py DELETED
@@ -1,290 +0,0 @@
1
- """Cache Management
2
- """
3
-
4
- import hashlib
5
- import json
6
- import logging
7
- import os
8
- from pathlib import Path
9
- from typing import Any, Dict, List, Optional
10
-
11
- from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version
12
- from pip._vendor.packaging.utils import canonicalize_name
13
-
14
- from pip._internal.exceptions import InvalidWheelFilename
15
- from pip._internal.models.direct_url import DirectUrl
16
- from pip._internal.models.link import Link
17
- from pip._internal.models.wheel import Wheel
18
- from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds
19
- from pip._internal.utils.urls import path_to_url
20
-
21
- logger = logging.getLogger(__name__)
22
-
23
- ORIGIN_JSON_NAME = "origin.json"
24
-
25
-
26
- def _hash_dict(d: Dict[str, str]) -> str:
27
- """Return a stable sha224 of a dictionary."""
28
- s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True)
29
- return hashlib.sha224(s.encode("ascii")).hexdigest()
30
-
31
-
32
- class Cache:
33
- """An abstract class - provides cache directories for data from links
34
-
35
- :param cache_dir: The root of the cache.
36
- """
37
-
38
- def __init__(self, cache_dir: str) -> None:
39
- super().__init__()
40
- assert not cache_dir or os.path.isabs(cache_dir)
41
- self.cache_dir = cache_dir or None
42
-
43
- def _get_cache_path_parts(self, link: Link) -> List[str]:
44
- """Get parts of part that must be os.path.joined with cache_dir"""
45
-
46
- # We want to generate an url to use as our cache key, we don't want to
47
- # just re-use the URL because it might have other items in the fragment
48
- # and we don't care about those.
49
- key_parts = {"url": link.url_without_fragment}
50
- if link.hash_name is not None and link.hash is not None:
51
- key_parts[link.hash_name] = link.hash
52
- if link.subdirectory_fragment:
53
- key_parts["subdirectory"] = link.subdirectory_fragment
54
-
55
- # Include interpreter name, major and minor version in cache key
56
- # to cope with ill-behaved sdists that build a different wheel
57
- # depending on the python version their setup.py is being run on,
58
- # and don't encode the difference in compatibility tags.
59
- # https://github.com/pypa/pip/issues/7296
60
- key_parts["interpreter_name"] = interpreter_name()
61
- key_parts["interpreter_version"] = interpreter_version()
62
-
63
- # Encode our key url with sha224, we'll use this because it has similar
64
- # security properties to sha256, but with a shorter total output (and
65
- # thus less secure). However the differences don't make a lot of
66
- # difference for our use case here.
67
- hashed = _hash_dict(key_parts)
68
-
69
- # We want to nest the directories some to prevent having a ton of top
70
- # level directories where we might run out of sub directories on some
71
- # FS.
72
- parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]]
73
-
74
- return parts
75
-
76
- def _get_candidates(self, link: Link, canonical_package_name: str) -> List[Any]:
77
- can_not_cache = not self.cache_dir or not canonical_package_name or not link
78
- if can_not_cache:
79
- return []
80
-
81
- path = self.get_path_for_link(link)
82
- if os.path.isdir(path):
83
- return [(candidate, path) for candidate in os.listdir(path)]
84
- return []
85
-
86
- def get_path_for_link(self, link: Link) -> str:
87
- """Return a directory to store cached items in for link."""
88
- raise NotImplementedError()
89
-
90
- def get(
91
- self,
92
- link: Link,
93
- package_name: Optional[str],
94
- supported_tags: List[Tag],
95
- ) -> Link:
96
- """Returns a link to a cached item if it exists, otherwise returns the
97
- passed link.
98
- """
99
- raise NotImplementedError()
100
-
101
-
102
- class SimpleWheelCache(Cache):
103
- """A cache of wheels for future installs."""
104
-
105
- def __init__(self, cache_dir: str) -> None:
106
- super().__init__(cache_dir)
107
-
108
- def get_path_for_link(self, link: Link) -> str:
109
- """Return a directory to store cached wheels for link
110
-
111
- Because there are M wheels for any one sdist, we provide a directory
112
- to cache them in, and then consult that directory when looking up
113
- cache hits.
114
-
115
- We only insert things into the cache if they have plausible version
116
- numbers, so that we don't contaminate the cache with things that were
117
- not unique. E.g. ./package might have dozens of installs done for it
118
- and build a version of 0.0...and if we built and cached a wheel, we'd
119
- end up using the same wheel even if the source has been edited.
120
-
121
- :param link: The link of the sdist for which this will cache wheels.
122
- """
123
- parts = self._get_cache_path_parts(link)
124
- assert self.cache_dir
125
- # Store wheels within the root cache_dir
126
- return os.path.join(self.cache_dir, "wheels", *parts)
127
-
128
- def get(
129
- self,
130
- link: Link,
131
- package_name: Optional[str],
132
- supported_tags: List[Tag],
133
- ) -> Link:
134
- candidates = []
135
-
136
- if not package_name:
137
- return link
138
-
139
- canonical_package_name = canonicalize_name(package_name)
140
- for wheel_name, wheel_dir in self._get_candidates(link, canonical_package_name):
141
- try:
142
- wheel = Wheel(wheel_name)
143
- except InvalidWheelFilename:
144
- continue
145
- if canonicalize_name(wheel.name) != canonical_package_name:
146
- logger.debug(
147
- "Ignoring cached wheel %s for %s as it "
148
- "does not match the expected distribution name %s.",
149
- wheel_name,
150
- link,
151
- package_name,
152
- )
153
- continue
154
- if not wheel.supported(supported_tags):
155
- # Built for a different python/arch/etc
156
- continue
157
- candidates.append(
158
- (
159
- wheel.support_index_min(supported_tags),
160
- wheel_name,
161
- wheel_dir,
162
- )
163
- )
164
-
165
- if not candidates:
166
- return link
167
-
168
- _, wheel_name, wheel_dir = min(candidates)
169
- return Link(path_to_url(os.path.join(wheel_dir, wheel_name)))
170
-
171
-
172
- class EphemWheelCache(SimpleWheelCache):
173
- """A SimpleWheelCache that creates it's own temporary cache directory"""
174
-
175
- def __init__(self) -> None:
176
- self._temp_dir = TempDirectory(
177
- kind=tempdir_kinds.EPHEM_WHEEL_CACHE,
178
- globally_managed=True,
179
- )
180
-
181
- super().__init__(self._temp_dir.path)
182
-
183
-
184
- class CacheEntry:
185
- def __init__(
186
- self,
187
- link: Link,
188
- persistent: bool,
189
- ):
190
- self.link = link
191
- self.persistent = persistent
192
- self.origin: Optional[DirectUrl] = None
193
- origin_direct_url_path = Path(self.link.file_path).parent / ORIGIN_JSON_NAME
194
- if origin_direct_url_path.exists():
195
- try:
196
- self.origin = DirectUrl.from_json(
197
- origin_direct_url_path.read_text(encoding="utf-8")
198
- )
199
- except Exception as e:
200
- logger.warning(
201
- "Ignoring invalid cache entry origin file %s for %s (%s)",
202
- origin_direct_url_path,
203
- link.filename,
204
- e,
205
- )
206
-
207
-
208
- class WheelCache(Cache):
209
- """Wraps EphemWheelCache and SimpleWheelCache into a single Cache
210
-
211
- This Cache allows for gracefully degradation, using the ephem wheel cache
212
- when a certain link is not found in the simple wheel cache first.
213
- """
214
-
215
- def __init__(self, cache_dir: str) -> None:
216
- super().__init__(cache_dir)
217
- self._wheel_cache = SimpleWheelCache(cache_dir)
218
- self._ephem_cache = EphemWheelCache()
219
-
220
- def get_path_for_link(self, link: Link) -> str:
221
- return self._wheel_cache.get_path_for_link(link)
222
-
223
- def get_ephem_path_for_link(self, link: Link) -> str:
224
- return self._ephem_cache.get_path_for_link(link)
225
-
226
- def get(
227
- self,
228
- link: Link,
229
- package_name: Optional[str],
230
- supported_tags: List[Tag],
231
- ) -> Link:
232
- cache_entry = self.get_cache_entry(link, package_name, supported_tags)
233
- if cache_entry is None:
234
- return link
235
- return cache_entry.link
236
-
237
- def get_cache_entry(
238
- self,
239
- link: Link,
240
- package_name: Optional[str],
241
- supported_tags: List[Tag],
242
- ) -> Optional[CacheEntry]:
243
- """Returns a CacheEntry with a link to a cached item if it exists or
244
- None. The cache entry indicates if the item was found in the persistent
245
- or ephemeral cache.
246
- """
247
- retval = self._wheel_cache.get(
248
- link=link,
249
- package_name=package_name,
250
- supported_tags=supported_tags,
251
- )
252
- if retval is not link:
253
- return CacheEntry(retval, persistent=True)
254
-
255
- retval = self._ephem_cache.get(
256
- link=link,
257
- package_name=package_name,
258
- supported_tags=supported_tags,
259
- )
260
- if retval is not link:
261
- return CacheEntry(retval, persistent=False)
262
-
263
- return None
264
-
265
- @staticmethod
266
- def record_download_origin(cache_dir: str, download_info: DirectUrl) -> None:
267
- origin_path = Path(cache_dir) / ORIGIN_JSON_NAME
268
- if origin_path.exists():
269
- try:
270
- origin = DirectUrl.from_json(origin_path.read_text(encoding="utf-8"))
271
- except Exception as e:
272
- logger.warning(
273
- "Could not read origin file %s in cache entry (%s). "
274
- "Will attempt to overwrite it.",
275
- origin_path,
276
- e,
277
- )
278
- else:
279
- # TODO: use DirectUrl.equivalent when
280
- # https://github.com/pypa/pip/pull/10564 is merged.
281
- if origin.url != download_info.url:
282
- logger.warning(
283
- "Origin URL %s in cache entry %s does not match download URL "
284
- "%s. This is likely a pip bug or a cache corruption issue. "
285
- "Will overwrite it with the new value.",
286
- origin.url,
287
- cache_dir,
288
- download_info.url,
289
- )
290
- origin_path.write_text(download_info.to_json(), encoding="utf-8")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/__init__.py DELETED
@@ -1,4 +0,0 @@
1
- """Subpackage containing all of pip's command line interface related code
2
- """
3
-
4
- # This file intentionally does not import submodules
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc DELETED
Binary file (262 Bytes)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc DELETED
Binary file (8.45 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc DELETED
Binary file (10.4 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc DELETED
Binary file (30.4 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc DELETED
Binary file (1.76 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc DELETED
Binary file (2.28 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc DELETED
Binary file (4.89 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc DELETED
Binary file (15 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc DELETED
Binary file (2.6 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc DELETED
Binary file (18.8 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc DELETED
Binary file (7.82 kB)
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc DELETED
Binary file (359 Bytes)
 
transactify/Lib/site-packages/pip/_internal/cli/autocompletion.py DELETED
@@ -1,172 +0,0 @@
1
- """Logic that powers autocompletion installed by ``pip completion``.
2
- """
3
-
4
- import optparse
5
- import os
6
- import sys
7
- from itertools import chain
8
- from typing import Any, Iterable, List, Optional
9
-
10
- from pip._internal.cli.main_parser import create_main_parser
11
- from pip._internal.commands import commands_dict, create_command
12
- from pip._internal.metadata import get_default_environment
13
-
14
-
15
- def autocomplete() -> None:
16
- """Entry Point for completion of main and subcommand options."""
17
- # Don't complete if user hasn't sourced bash_completion file.
18
- if "PIP_AUTO_COMPLETE" not in os.environ:
19
- return
20
- cwords = os.environ["COMP_WORDS"].split()[1:]
21
- cword = int(os.environ["COMP_CWORD"])
22
- try:
23
- current = cwords[cword - 1]
24
- except IndexError:
25
- current = ""
26
-
27
- parser = create_main_parser()
28
- subcommands = list(commands_dict)
29
- options = []
30
-
31
- # subcommand
32
- subcommand_name: Optional[str] = None
33
- for word in cwords:
34
- if word in subcommands:
35
- subcommand_name = word
36
- break
37
- # subcommand options
38
- if subcommand_name is not None:
39
- # special case: 'help' subcommand has no options
40
- if subcommand_name == "help":
41
- sys.exit(1)
42
- # special case: list locally installed dists for show and uninstall
43
- should_list_installed = not current.startswith("-") and subcommand_name in [
44
- "show",
45
- "uninstall",
46
- ]
47
- if should_list_installed:
48
- env = get_default_environment()
49
- lc = current.lower()
50
- installed = [
51
- dist.canonical_name
52
- for dist in env.iter_installed_distributions(local_only=True)
53
- if dist.canonical_name.startswith(lc)
54
- and dist.canonical_name not in cwords[1:]
55
- ]
56
- # if there are no dists installed, fall back to option completion
57
- if installed:
58
- for dist in installed:
59
- print(dist)
60
- sys.exit(1)
61
-
62
- should_list_installables = (
63
- not current.startswith("-") and subcommand_name == "install"
64
- )
65
- if should_list_installables:
66
- for path in auto_complete_paths(current, "path"):
67
- print(path)
68
- sys.exit(1)
69
-
70
- subcommand = create_command(subcommand_name)
71
-
72
- for opt in subcommand.parser.option_list_all:
73
- if opt.help != optparse.SUPPRESS_HELP:
74
- options += [
75
- (opt_str, opt.nargs) for opt_str in opt._long_opts + opt._short_opts
76
- ]
77
-
78
- # filter out previously specified options from available options
79
- prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]]
80
- options = [(x, v) for (x, v) in options if x not in prev_opts]
81
- # filter options by current input
82
- options = [(k, v) for k, v in options if k.startswith(current)]
83
- # get completion type given cwords and available subcommand options
84
- completion_type = get_path_completion_type(
85
- cwords,
86
- cword,
87
- subcommand.parser.option_list_all,
88
- )
89
- # get completion files and directories if ``completion_type`` is
90
- # ``<file>``, ``<dir>`` or ``<path>``
91
- if completion_type:
92
- paths = auto_complete_paths(current, completion_type)
93
- options = [(path, 0) for path in paths]
94
- for option in options:
95
- opt_label = option[0]
96
- # append '=' to options which require args
97
- if option[1] and option[0][:2] == "--":
98
- opt_label += "="
99
- print(opt_label)
100
- else:
101
- # show main parser options only when necessary
102
-
103
- opts = [i.option_list for i in parser.option_groups]
104
- opts.append(parser.option_list)
105
- flattened_opts = chain.from_iterable(opts)
106
- if current.startswith("-"):
107
- for opt in flattened_opts:
108
- if opt.help != optparse.SUPPRESS_HELP:
109
- subcommands += opt._long_opts + opt._short_opts
110
- else:
111
- # get completion type given cwords and all available options
112
- completion_type = get_path_completion_type(cwords, cword, flattened_opts)
113
- if completion_type:
114
- subcommands = list(auto_complete_paths(current, completion_type))
115
-
116
- print(" ".join([x for x in subcommands if x.startswith(current)]))
117
- sys.exit(1)
118
-
119
-
120
- def get_path_completion_type(
121
- cwords: List[str], cword: int, opts: Iterable[Any]
122
- ) -> Optional[str]:
123
- """Get the type of path completion (``file``, ``dir``, ``path`` or None)
124
-
125
- :param cwords: same as the environmental variable ``COMP_WORDS``
126
- :param cword: same as the environmental variable ``COMP_CWORD``
127
- :param opts: The available options to check
128
- :return: path completion type (``file``, ``dir``, ``path`` or None)
129
- """
130
- if cword < 2 or not cwords[cword - 2].startswith("-"):
131
- return None
132
- for opt in opts:
133
- if opt.help == optparse.SUPPRESS_HELP:
134
- continue
135
- for o in str(opt).split("/"):
136
- if cwords[cword - 2].split("=")[0] == o:
137
- if not opt.metavar or any(
138
- x in ("path", "file", "dir") for x in opt.metavar.split("/")
139
- ):
140
- return opt.metavar
141
- return None
142
-
143
-
144
- def auto_complete_paths(current: str, completion_type: str) -> Iterable[str]:
145
- """If ``completion_type`` is ``file`` or ``path``, list all regular files
146
- and directories starting with ``current``; otherwise only list directories
147
- starting with ``current``.
148
-
149
- :param current: The word to be completed
150
- :param completion_type: path completion type(``file``, ``path`` or ``dir``)
151
- :return: A generator of regular files and/or directories
152
- """
153
- directory, filename = os.path.split(current)
154
- current_path = os.path.abspath(directory)
155
- # Don't complete paths if they can't be accessed
156
- if not os.access(current_path, os.R_OK):
157
- return
158
- filename = os.path.normcase(filename)
159
- # list all files that start with ``filename``
160
- file_list = (
161
- x for x in os.listdir(current_path) if os.path.normcase(x).startswith(filename)
162
- )
163
- for f in file_list:
164
- opt = os.path.join(current_path, f)
165
- comp_file = os.path.normcase(os.path.join(directory, f))
166
- # complete regular files when there is not ``<dir>`` after option
167
- # complete directories when there is ``<file>``, ``<path>`` or
168
- # ``<dir>``after option
169
- if completion_type != "dir" and os.path.isfile(opt):
170
- yield comp_file
171
- elif os.path.isdir(opt):
172
- yield os.path.join(comp_file, "")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/base_command.py DELETED
@@ -1,236 +0,0 @@
1
- """Base Command class, and related routines"""
2
-
3
- import functools
4
- import logging
5
- import logging.config
6
- import optparse
7
- import os
8
- import sys
9
- import traceback
10
- from optparse import Values
11
- from typing import Any, Callable, List, Optional, Tuple
12
-
13
- from pip._vendor.rich import traceback as rich_traceback
14
-
15
- from pip._internal.cli import cmdoptions
16
- from pip._internal.cli.command_context import CommandContextMixIn
17
- from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
18
- from pip._internal.cli.status_codes import (
19
- ERROR,
20
- PREVIOUS_BUILD_DIR_ERROR,
21
- UNKNOWN_ERROR,
22
- VIRTUALENV_NOT_FOUND,
23
- )
24
- from pip._internal.exceptions import (
25
- BadCommand,
26
- CommandError,
27
- DiagnosticPipError,
28
- InstallationError,
29
- NetworkConnectionError,
30
- PreviousBuildDirError,
31
- UninstallationError,
32
- )
33
- from pip._internal.utils.filesystem import check_path_owner
34
- from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging
35
- from pip._internal.utils.misc import get_prog, normalize_path
36
- from pip._internal.utils.temp_dir import TempDirectoryTypeRegistry as TempDirRegistry
37
- from pip._internal.utils.temp_dir import global_tempdir_manager, tempdir_registry
38
- from pip._internal.utils.virtualenv import running_under_virtualenv
39
-
40
- __all__ = ["Command"]
41
-
42
- logger = logging.getLogger(__name__)
43
-
44
-
45
- class Command(CommandContextMixIn):
46
- usage: str = ""
47
- ignore_require_venv: bool = False
48
-
49
- def __init__(self, name: str, summary: str, isolated: bool = False) -> None:
50
- super().__init__()
51
-
52
- self.name = name
53
- self.summary = summary
54
- self.parser = ConfigOptionParser(
55
- usage=self.usage,
56
- prog=f"{get_prog()} {name}",
57
- formatter=UpdatingDefaultsHelpFormatter(),
58
- add_help_option=False,
59
- name=name,
60
- description=self.__doc__,
61
- isolated=isolated,
62
- )
63
-
64
- self.tempdir_registry: Optional[TempDirRegistry] = None
65
-
66
- # Commands should add options to this option group
67
- optgroup_name = f"{self.name.capitalize()} Options"
68
- self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name)
69
-
70
- # Add the general options
71
- gen_opts = cmdoptions.make_option_group(
72
- cmdoptions.general_group,
73
- self.parser,
74
- )
75
- self.parser.add_option_group(gen_opts)
76
-
77
- self.add_options()
78
-
79
- def add_options(self) -> None:
80
- pass
81
-
82
- def handle_pip_version_check(self, options: Values) -> None:
83
- """
84
- This is a no-op so that commands by default do not do the pip version
85
- check.
86
- """
87
- # Make sure we do the pip version check if the index_group options
88
- # are present.
89
- assert not hasattr(options, "no_index")
90
-
91
- def run(self, options: Values, args: List[str]) -> int:
92
- raise NotImplementedError
93
-
94
- def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]:
95
- # factored out for testability
96
- return self.parser.parse_args(args)
97
-
98
- def main(self, args: List[str]) -> int:
99
- try:
100
- with self.main_context():
101
- return self._main(args)
102
- finally:
103
- logging.shutdown()
104
-
105
- def _main(self, args: List[str]) -> int:
106
- # We must initialize this before the tempdir manager, otherwise the
107
- # configuration would not be accessible by the time we clean up the
108
- # tempdir manager.
109
- self.tempdir_registry = self.enter_context(tempdir_registry())
110
- # Intentionally set as early as possible so globally-managed temporary
111
- # directories are available to the rest of the code.
112
- self.enter_context(global_tempdir_manager())
113
-
114
- options, args = self.parse_args(args)
115
-
116
- # Set verbosity so that it can be used elsewhere.
117
- self.verbosity = options.verbose - options.quiet
118
-
119
- level_number = setup_logging(
120
- verbosity=self.verbosity,
121
- no_color=options.no_color,
122
- user_log_file=options.log,
123
- )
124
-
125
- always_enabled_features = set(options.features_enabled) & set(
126
- cmdoptions.ALWAYS_ENABLED_FEATURES
127
- )
128
- if always_enabled_features:
129
- logger.warning(
130
- "The following features are always enabled: %s. ",
131
- ", ".join(sorted(always_enabled_features)),
132
- )
133
-
134
- # Make sure that the --python argument isn't specified after the
135
- # subcommand. We can tell, because if --python was specified,
136
- # we should only reach this point if we're running in the created
137
- # subprocess, which has the _PIP_RUNNING_IN_SUBPROCESS environment
138
- # variable set.
139
- if options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
140
- logger.critical(
141
- "The --python option must be placed before the pip subcommand name"
142
- )
143
- sys.exit(ERROR)
144
-
145
- # TODO: Try to get these passing down from the command?
146
- # without resorting to os.environ to hold these.
147
- # This also affects isolated builds and it should.
148
-
149
- if options.no_input:
150
- os.environ["PIP_NO_INPUT"] = "1"
151
-
152
- if options.exists_action:
153
- os.environ["PIP_EXISTS_ACTION"] = " ".join(options.exists_action)
154
-
155
- if options.require_venv and not self.ignore_require_venv:
156
- # If a venv is required check if it can really be found
157
- if not running_under_virtualenv():
158
- logger.critical("Could not find an activated virtualenv (required).")
159
- sys.exit(VIRTUALENV_NOT_FOUND)
160
-
161
- if options.cache_dir:
162
- options.cache_dir = normalize_path(options.cache_dir)
163
- if not check_path_owner(options.cache_dir):
164
- logger.warning(
165
- "The directory '%s' or its parent directory is not owned "
166
- "or is not writable by the current user. The cache "
167
- "has been disabled. Check the permissions and owner of "
168
- "that directory. If executing pip with sudo, you should "
169
- "use sudo's -H flag.",
170
- options.cache_dir,
171
- )
172
- options.cache_dir = None
173
-
174
- def intercepts_unhandled_exc(
175
- run_func: Callable[..., int]
176
- ) -> Callable[..., int]:
177
- @functools.wraps(run_func)
178
- def exc_logging_wrapper(*args: Any) -> int:
179
- try:
180
- status = run_func(*args)
181
- assert isinstance(status, int)
182
- return status
183
- except DiagnosticPipError as exc:
184
- logger.error("%s", exc, extra={"rich": True})
185
- logger.debug("Exception information:", exc_info=True)
186
-
187
- return ERROR
188
- except PreviousBuildDirError as exc:
189
- logger.critical(str(exc))
190
- logger.debug("Exception information:", exc_info=True)
191
-
192
- return PREVIOUS_BUILD_DIR_ERROR
193
- except (
194
- InstallationError,
195
- UninstallationError,
196
- BadCommand,
197
- NetworkConnectionError,
198
- ) as exc:
199
- logger.critical(str(exc))
200
- logger.debug("Exception information:", exc_info=True)
201
-
202
- return ERROR
203
- except CommandError as exc:
204
- logger.critical("%s", exc)
205
- logger.debug("Exception information:", exc_info=True)
206
-
207
- return ERROR
208
- except BrokenStdoutLoggingError:
209
- # Bypass our logger and write any remaining messages to
210
- # stderr because stdout no longer works.
211
- print("ERROR: Pipe to stdout was broken", file=sys.stderr)
212
- if level_number <= logging.DEBUG:
213
- traceback.print_exc(file=sys.stderr)
214
-
215
- return ERROR
216
- except KeyboardInterrupt:
217
- logger.critical("Operation cancelled by user")
218
- logger.debug("Exception information:", exc_info=True)
219
-
220
- return ERROR
221
- except BaseException:
222
- logger.critical("Exception:", exc_info=True)
223
-
224
- return UNKNOWN_ERROR
225
-
226
- return exc_logging_wrapper
227
-
228
- try:
229
- if not options.debug_mode:
230
- run = intercepts_unhandled_exc(self.run)
231
- else:
232
- run = self.run
233
- rich_traceback.install(show_locals=True)
234
- return run(options, args)
235
- finally:
236
- self.handle_pip_version_check(options)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/cmdoptions.py DELETED
@@ -1,1074 +0,0 @@
1
- """
2
- shared options and groups
3
-
4
- The principle here is to define options once, but *not* instantiate them
5
- globally. One reason being that options with action='append' can carry state
6
- between parses. pip parses general options twice internally, and shouldn't
7
- pass on state. To be consistent, all options will follow this design.
8
- """
9
-
10
- # The following comment should be removed at some point in the future.
11
- # mypy: strict-optional=False
12
-
13
- import importlib.util
14
- import logging
15
- import os
16
- import textwrap
17
- from functools import partial
18
- from optparse import SUPPRESS_HELP, Option, OptionGroup, OptionParser, Values
19
- from textwrap import dedent
20
- from typing import Any, Callable, Dict, Optional, Tuple
21
-
22
- from pip._vendor.packaging.utils import canonicalize_name
23
-
24
- from pip._internal.cli.parser import ConfigOptionParser
25
- from pip._internal.exceptions import CommandError
26
- from pip._internal.locations import USER_CACHE_DIR, get_src_prefix
27
- from pip._internal.models.format_control import FormatControl
28
- from pip._internal.models.index import PyPI
29
- from pip._internal.models.target_python import TargetPython
30
- from pip._internal.utils.hashes import STRONG_HASHES
31
- from pip._internal.utils.misc import strtobool
32
-
33
- logger = logging.getLogger(__name__)
34
-
35
-
36
- def raise_option_error(parser: OptionParser, option: Option, msg: str) -> None:
37
- """
38
- Raise an option parsing error using parser.error().
39
-
40
- Args:
41
- parser: an OptionParser instance.
42
- option: an Option instance.
43
- msg: the error text.
44
- """
45
- msg = f"{option} error: {msg}"
46
- msg = textwrap.fill(" ".join(msg.split()))
47
- parser.error(msg)
48
-
49
-
50
- def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser) -> OptionGroup:
51
- """
52
- Return an OptionGroup object
53
- group -- assumed to be dict with 'name' and 'options' keys
54
- parser -- an optparse Parser
55
- """
56
- option_group = OptionGroup(parser, group["name"])
57
- for option in group["options"]:
58
- option_group.add_option(option())
59
- return option_group
60
-
61
-
62
- def check_dist_restriction(options: Values, check_target: bool = False) -> None:
63
- """Function for determining if custom platform options are allowed.
64
-
65
- :param options: The OptionParser options.
66
- :param check_target: Whether or not to check if --target is being used.
67
- """
68
- dist_restriction_set = any(
69
- [
70
- options.python_version,
71
- options.platforms,
72
- options.abis,
73
- options.implementation,
74
- ]
75
- )
76
-
77
- binary_only = FormatControl(set(), {":all:"})
78
- sdist_dependencies_allowed = (
79
- options.format_control != binary_only and not options.ignore_dependencies
80
- )
81
-
82
- # Installations or downloads using dist restrictions must not combine
83
- # source distributions and dist-specific wheels, as they are not
84
- # guaranteed to be locally compatible.
85
- if dist_restriction_set and sdist_dependencies_allowed:
86
- raise CommandError(
87
- "When restricting platform and interpreter constraints using "
88
- "--python-version, --platform, --abi, or --implementation, "
89
- "either --no-deps must be set, or --only-binary=:all: must be "
90
- "set and --no-binary must not be set (or must be set to "
91
- ":none:)."
92
- )
93
-
94
- if check_target:
95
- if not options.dry_run and dist_restriction_set and not options.target_dir:
96
- raise CommandError(
97
- "Can not use any platform or abi specific options unless "
98
- "installing via '--target' or using '--dry-run'"
99
- )
100
-
101
-
102
- def _path_option_check(option: Option, opt: str, value: str) -> str:
103
- return os.path.expanduser(value)
104
-
105
-
106
- def _package_name_option_check(option: Option, opt: str, value: str) -> str:
107
- return canonicalize_name(value)
108
-
109
-
110
- class PipOption(Option):
111
- TYPES = Option.TYPES + ("path", "package_name")
112
- TYPE_CHECKER = Option.TYPE_CHECKER.copy()
113
- TYPE_CHECKER["package_name"] = _package_name_option_check
114
- TYPE_CHECKER["path"] = _path_option_check
115
-
116
-
117
- ###########
118
- # options #
119
- ###########
120
-
121
- help_: Callable[..., Option] = partial(
122
- Option,
123
- "-h",
124
- "--help",
125
- dest="help",
126
- action="help",
127
- help="Show help.",
128
- )
129
-
130
- debug_mode: Callable[..., Option] = partial(
131
- Option,
132
- "--debug",
133
- dest="debug_mode",
134
- action="store_true",
135
- default=False,
136
- help=(
137
- "Let unhandled exceptions propagate outside the main subroutine, "
138
- "instead of logging them to stderr."
139
- ),
140
- )
141
-
142
- isolated_mode: Callable[..., Option] = partial(
143
- Option,
144
- "--isolated",
145
- dest="isolated_mode",
146
- action="store_true",
147
- default=False,
148
- help=(
149
- "Run pip in an isolated mode, ignoring environment variables and user "
150
- "configuration."
151
- ),
152
- )
153
-
154
- require_virtualenv: Callable[..., Option] = partial(
155
- Option,
156
- "--require-virtualenv",
157
- "--require-venv",
158
- dest="require_venv",
159
- action="store_true",
160
- default=False,
161
- help=(
162
- "Allow pip to only run in a virtual environment; "
163
- "exit with an error otherwise."
164
- ),
165
- )
166
-
167
- override_externally_managed: Callable[..., Option] = partial(
168
- Option,
169
- "--break-system-packages",
170
- dest="override_externally_managed",
171
- action="store_true",
172
- help="Allow pip to modify an EXTERNALLY-MANAGED Python installation",
173
- )
174
-
175
- python: Callable[..., Option] = partial(
176
- Option,
177
- "--python",
178
- dest="python",
179
- help="Run pip with the specified Python interpreter.",
180
- )
181
-
182
- verbose: Callable[..., Option] = partial(
183
- Option,
184
- "-v",
185
- "--verbose",
186
- dest="verbose",
187
- action="count",
188
- default=0,
189
- help="Give more output. Option is additive, and can be used up to 3 times.",
190
- )
191
-
192
- no_color: Callable[..., Option] = partial(
193
- Option,
194
- "--no-color",
195
- dest="no_color",
196
- action="store_true",
197
- default=False,
198
- help="Suppress colored output.",
199
- )
200
-
201
- version: Callable[..., Option] = partial(
202
- Option,
203
- "-V",
204
- "--version",
205
- dest="version",
206
- action="store_true",
207
- help="Show version and exit.",
208
- )
209
-
210
- quiet: Callable[..., Option] = partial(
211
- Option,
212
- "-q",
213
- "--quiet",
214
- dest="quiet",
215
- action="count",
216
- default=0,
217
- help=(
218
- "Give less output. Option is additive, and can be used up to 3"
219
- " times (corresponding to WARNING, ERROR, and CRITICAL logging"
220
- " levels)."
221
- ),
222
- )
223
-
224
- progress_bar: Callable[..., Option] = partial(
225
- Option,
226
- "--progress-bar",
227
- dest="progress_bar",
228
- type="choice",
229
- choices=["on", "off"],
230
- default="on",
231
- help="Specify whether the progress bar should be used [on, off] (default: on)",
232
- )
233
-
234
- log: Callable[..., Option] = partial(
235
- PipOption,
236
- "--log",
237
- "--log-file",
238
- "--local-log",
239
- dest="log",
240
- metavar="path",
241
- type="path",
242
- help="Path to a verbose appending log.",
243
- )
244
-
245
- no_input: Callable[..., Option] = partial(
246
- Option,
247
- # Don't ask for input
248
- "--no-input",
249
- dest="no_input",
250
- action="store_true",
251
- default=False,
252
- help="Disable prompting for input.",
253
- )
254
-
255
- keyring_provider: Callable[..., Option] = partial(
256
- Option,
257
- "--keyring-provider",
258
- dest="keyring_provider",
259
- choices=["auto", "disabled", "import", "subprocess"],
260
- default="auto",
261
- help=(
262
- "Enable the credential lookup via the keyring library if user input is allowed."
263
- " Specify which mechanism to use [disabled, import, subprocess]."
264
- " (default: disabled)"
265
- ),
266
- )
267
-
268
- proxy: Callable[..., Option] = partial(
269
- Option,
270
- "--proxy",
271
- dest="proxy",
272
- type="str",
273
- default="",
274
- help="Specify a proxy in the form scheme://[user:passwd@]proxy.server:port.",
275
- )
276
-
277
- retries: Callable[..., Option] = partial(
278
- Option,
279
- "--retries",
280
- dest="retries",
281
- type="int",
282
- default=5,
283
- help="Maximum number of retries each connection should attempt "
284
- "(default %default times).",
285
- )
286
-
287
- timeout: Callable[..., Option] = partial(
288
- Option,
289
- "--timeout",
290
- "--default-timeout",
291
- metavar="sec",
292
- dest="timeout",
293
- type="float",
294
- default=15,
295
- help="Set the socket timeout (default %default seconds).",
296
- )
297
-
298
-
299
- def exists_action() -> Option:
300
- return Option(
301
- # Option when path already exist
302
- "--exists-action",
303
- dest="exists_action",
304
- type="choice",
305
- choices=["s", "i", "w", "b", "a"],
306
- default=[],
307
- action="append",
308
- metavar="action",
309
- help="Default action when a path already exists: "
310
- "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.",
311
- )
312
-
313
-
314
- cert: Callable[..., Option] = partial(
315
- PipOption,
316
- "--cert",
317
- dest="cert",
318
- type="path",
319
- metavar="path",
320
- help=(
321
- "Path to PEM-encoded CA certificate bundle. "
322
- "If provided, overrides the default. "
323
- "See 'SSL Certificate Verification' in pip documentation "
324
- "for more information."
325
- ),
326
- )
327
-
328
- client_cert: Callable[..., Option] = partial(
329
- PipOption,
330
- "--client-cert",
331
- dest="client_cert",
332
- type="path",
333
- default=None,
334
- metavar="path",
335
- help="Path to SSL client certificate, a single file containing the "
336
- "private key and the certificate in PEM format.",
337
- )
338
-
339
- index_url: Callable[..., Option] = partial(
340
- Option,
341
- "-i",
342
- "--index-url",
343
- "--pypi-url",
344
- dest="index_url",
345
- metavar="URL",
346
- default=PyPI.simple_url,
347
- help="Base URL of the Python Package Index (default %default). "
348
- "This should point to a repository compliant with PEP 503 "
349
- "(the simple repository API) or a local directory laid out "
350
- "in the same format.",
351
- )
352
-
353
-
354
- def extra_index_url() -> Option:
355
- return Option(
356
- "--extra-index-url",
357
- dest="extra_index_urls",
358
- metavar="URL",
359
- action="append",
360
- default=[],
361
- help="Extra URLs of package indexes to use in addition to "
362
- "--index-url. Should follow the same rules as "
363
- "--index-url.",
364
- )
365
-
366
-
367
- no_index: Callable[..., Option] = partial(
368
- Option,
369
- "--no-index",
370
- dest="no_index",
371
- action="store_true",
372
- default=False,
373
- help="Ignore package index (only looking at --find-links URLs instead).",
374
- )
375
-
376
-
377
- def find_links() -> Option:
378
- return Option(
379
- "-f",
380
- "--find-links",
381
- dest="find_links",
382
- action="append",
383
- default=[],
384
- metavar="url",
385
- help="If a URL or path to an html file, then parse for links to "
386
- "archives such as sdist (.tar.gz) or wheel (.whl) files. "
387
- "If a local path or file:// URL that's a directory, "
388
- "then look for archives in the directory listing. "
389
- "Links to VCS project URLs are not supported.",
390
- )
391
-
392
-
393
- def trusted_host() -> Option:
394
- return Option(
395
- "--trusted-host",
396
- dest="trusted_hosts",
397
- action="append",
398
- metavar="HOSTNAME",
399
- default=[],
400
- help="Mark this host or host:port pair as trusted, even though it "
401
- "does not have valid or any HTTPS.",
402
- )
403
-
404
-
405
- def constraints() -> Option:
406
- return Option(
407
- "-c",
408
- "--constraint",
409
- dest="constraints",
410
- action="append",
411
- default=[],
412
- metavar="file",
413
- help="Constrain versions using the given constraints file. "
414
- "This option can be used multiple times.",
415
- )
416
-
417
-
418
- def requirements() -> Option:
419
- return Option(
420
- "-r",
421
- "--requirement",
422
- dest="requirements",
423
- action="append",
424
- default=[],
425
- metavar="file",
426
- help="Install from the given requirements file. "
427
- "This option can be used multiple times.",
428
- )
429
-
430
-
431
- def editable() -> Option:
432
- return Option(
433
- "-e",
434
- "--editable",
435
- dest="editables",
436
- action="append",
437
- default=[],
438
- metavar="path/url",
439
- help=(
440
- "Install a project in editable mode (i.e. setuptools "
441
- '"develop mode") from a local project path or a VCS url.'
442
- ),
443
- )
444
-
445
-
446
- def _handle_src(option: Option, opt_str: str, value: str, parser: OptionParser) -> None:
447
- value = os.path.abspath(value)
448
- setattr(parser.values, option.dest, value)
449
-
450
-
451
- src: Callable[..., Option] = partial(
452
- PipOption,
453
- "--src",
454
- "--source",
455
- "--source-dir",
456
- "--source-directory",
457
- dest="src_dir",
458
- type="path",
459
- metavar="dir",
460
- default=get_src_prefix(),
461
- action="callback",
462
- callback=_handle_src,
463
- help="Directory to check out editable projects into. "
464
- 'The default in a virtualenv is "<venv path>/src". '
465
- 'The default for global installs is "<current dir>/src".',
466
- )
467
-
468
-
469
- def _get_format_control(values: Values, option: Option) -> Any:
470
- """Get a format_control object."""
471
- return getattr(values, option.dest)
472
-
473
-
474
- def _handle_no_binary(
475
- option: Option, opt_str: str, value: str, parser: OptionParser
476
- ) -> None:
477
- existing = _get_format_control(parser.values, option)
478
- FormatControl.handle_mutual_excludes(
479
- value,
480
- existing.no_binary,
481
- existing.only_binary,
482
- )
483
-
484
-
485
- def _handle_only_binary(
486
- option: Option, opt_str: str, value: str, parser: OptionParser
487
- ) -> None:
488
- existing = _get_format_control(parser.values, option)
489
- FormatControl.handle_mutual_excludes(
490
- value,
491
- existing.only_binary,
492
- existing.no_binary,
493
- )
494
-
495
-
496
- def no_binary() -> Option:
497
- format_control = FormatControl(set(), set())
498
- return Option(
499
- "--no-binary",
500
- dest="format_control",
501
- action="callback",
502
- callback=_handle_no_binary,
503
- type="str",
504
- default=format_control,
505
- help="Do not use binary packages. Can be supplied multiple times, and "
506
- 'each time adds to the existing value. Accepts either ":all:" to '
507
- 'disable all binary packages, ":none:" to empty the set (notice '
508
- "the colons), or one or more package names with commas between "
509
- "them (no colons). Note that some packages are tricky to compile "
510
- "and may fail to install when this option is used on them.",
511
- )
512
-
513
-
514
- def only_binary() -> Option:
515
- format_control = FormatControl(set(), set())
516
- return Option(
517
- "--only-binary",
518
- dest="format_control",
519
- action="callback",
520
- callback=_handle_only_binary,
521
- type="str",
522
- default=format_control,
523
- help="Do not use source packages. Can be supplied multiple times, and "
524
- 'each time adds to the existing value. Accepts either ":all:" to '
525
- 'disable all source packages, ":none:" to empty the set, or one '
526
- "or more package names with commas between them. Packages "
527
- "without binary distributions will fail to install when this "
528
- "option is used on them.",
529
- )
530
-
531
-
532
- platforms: Callable[..., Option] = partial(
533
- Option,
534
- "--platform",
535
- dest="platforms",
536
- metavar="platform",
537
- action="append",
538
- default=None,
539
- help=(
540
- "Only use wheels compatible with <platform>. Defaults to the "
541
- "platform of the running system. Use this option multiple times to "
542
- "specify multiple platforms supported by the target interpreter."
543
- ),
544
- )
545
-
546
-
547
- # This was made a separate function for unit-testing purposes.
548
- def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Optional[str]]:
549
- """
550
- Convert a version string like "3", "37", or "3.7.3" into a tuple of ints.
551
-
552
- :return: A 2-tuple (version_info, error_msg), where `error_msg` is
553
- non-None if and only if there was a parsing error.
554
- """
555
- if not value:
556
- # The empty string is the same as not providing a value.
557
- return (None, None)
558
-
559
- parts = value.split(".")
560
- if len(parts) > 3:
561
- return ((), "at most three version parts are allowed")
562
-
563
- if len(parts) == 1:
564
- # Then we are in the case of "3" or "37".
565
- value = parts[0]
566
- if len(value) > 1:
567
- parts = [value[0], value[1:]]
568
-
569
- try:
570
- version_info = tuple(int(part) for part in parts)
571
- except ValueError:
572
- return ((), "each version part must be an integer")
573
-
574
- return (version_info, None)
575
-
576
-
577
- def _handle_python_version(
578
- option: Option, opt_str: str, value: str, parser: OptionParser
579
- ) -> None:
580
- """
581
- Handle a provided --python-version value.
582
- """
583
- version_info, error_msg = _convert_python_version(value)
584
- if error_msg is not None:
585
- msg = f"invalid --python-version value: {value!r}: {error_msg}"
586
- raise_option_error(parser, option=option, msg=msg)
587
-
588
- parser.values.python_version = version_info
589
-
590
-
591
- python_version: Callable[..., Option] = partial(
592
- Option,
593
- "--python-version",
594
- dest="python_version",
595
- metavar="python_version",
596
- action="callback",
597
- callback=_handle_python_version,
598
- type="str",
599
- default=None,
600
- help=dedent(
601
- """\
602
- The Python interpreter version to use for wheel and "Requires-Python"
603
- compatibility checks. Defaults to a version derived from the running
604
- interpreter. The version can be specified using up to three dot-separated
605
- integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor
606
- version can also be given as a string without dots (e.g. "37" for 3.7.0).
607
- """
608
- ),
609
- )
610
-
611
-
612
- implementation: Callable[..., Option] = partial(
613
- Option,
614
- "--implementation",
615
- dest="implementation",
616
- metavar="implementation",
617
- default=None,
618
- help=(
619
- "Only use wheels compatible with Python "
620
- "implementation <implementation>, e.g. 'pp', 'jy', 'cp', "
621
- " or 'ip'. If not specified, then the current "
622
- "interpreter implementation is used. Use 'py' to force "
623
- "implementation-agnostic wheels."
624
- ),
625
- )
626
-
627
-
628
- abis: Callable[..., Option] = partial(
629
- Option,
630
- "--abi",
631
- dest="abis",
632
- metavar="abi",
633
- action="append",
634
- default=None,
635
- help=(
636
- "Only use wheels compatible with Python abi <abi>, e.g. 'pypy_41'. "
637
- "If not specified, then the current interpreter abi tag is used. "
638
- "Use this option multiple times to specify multiple abis supported "
639
- "by the target interpreter. Generally you will need to specify "
640
- "--implementation, --platform, and --python-version when using this "
641
- "option."
642
- ),
643
- )
644
-
645
-
646
- def add_target_python_options(cmd_opts: OptionGroup) -> None:
647
- cmd_opts.add_option(platforms())
648
- cmd_opts.add_option(python_version())
649
- cmd_opts.add_option(implementation())
650
- cmd_opts.add_option(abis())
651
-
652
-
653
- def make_target_python(options: Values) -> TargetPython:
654
- target_python = TargetPython(
655
- platforms=options.platforms,
656
- py_version_info=options.python_version,
657
- abis=options.abis,
658
- implementation=options.implementation,
659
- )
660
-
661
- return target_python
662
-
663
-
664
- def prefer_binary() -> Option:
665
- return Option(
666
- "--prefer-binary",
667
- dest="prefer_binary",
668
- action="store_true",
669
- default=False,
670
- help=(
671
- "Prefer binary packages over source packages, even if the "
672
- "source packages are newer."
673
- ),
674
- )
675
-
676
-
677
- cache_dir: Callable[..., Option] = partial(
678
- PipOption,
679
- "--cache-dir",
680
- dest="cache_dir",
681
- default=USER_CACHE_DIR,
682
- metavar="dir",
683
- type="path",
684
- help="Store the cache data in <dir>.",
685
- )
686
-
687
-
688
- def _handle_no_cache_dir(
689
- option: Option, opt: str, value: str, parser: OptionParser
690
- ) -> None:
691
- """
692
- Process a value provided for the --no-cache-dir option.
693
-
694
- This is an optparse.Option callback for the --no-cache-dir option.
695
- """
696
- # The value argument will be None if --no-cache-dir is passed via the
697
- # command-line, since the option doesn't accept arguments. However,
698
- # the value can be non-None if the option is triggered e.g. by an
699
- # environment variable, like PIP_NO_CACHE_DIR=true.
700
- if value is not None:
701
- # Then parse the string value to get argument error-checking.
702
- try:
703
- strtobool(value)
704
- except ValueError as exc:
705
- raise_option_error(parser, option=option, msg=str(exc))
706
-
707
- # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool()
708
- # converted to 0 (like "false" or "no") caused cache_dir to be disabled
709
- # rather than enabled (logic would say the latter). Thus, we disable
710
- # the cache directory not just on values that parse to True, but (for
711
- # backwards compatibility reasons) also on values that parse to False.
712
- # In other words, always set it to False if the option is provided in
713
- # some (valid) form.
714
- parser.values.cache_dir = False
715
-
716
-
717
- no_cache: Callable[..., Option] = partial(
718
- Option,
719
- "--no-cache-dir",
720
- dest="cache_dir",
721
- action="callback",
722
- callback=_handle_no_cache_dir,
723
- help="Disable the cache.",
724
- )
725
-
726
- no_deps: Callable[..., Option] = partial(
727
- Option,
728
- "--no-deps",
729
- "--no-dependencies",
730
- dest="ignore_dependencies",
731
- action="store_true",
732
- default=False,
733
- help="Don't install package dependencies.",
734
- )
735
-
736
- ignore_requires_python: Callable[..., Option] = partial(
737
- Option,
738
- "--ignore-requires-python",
739
- dest="ignore_requires_python",
740
- action="store_true",
741
- help="Ignore the Requires-Python information.",
742
- )
743
-
744
- no_build_isolation: Callable[..., Option] = partial(
745
- Option,
746
- "--no-build-isolation",
747
- dest="build_isolation",
748
- action="store_false",
749
- default=True,
750
- help="Disable isolation when building a modern source distribution. "
751
- "Build dependencies specified by PEP 518 must be already installed "
752
- "if this option is used.",
753
- )
754
-
755
- check_build_deps: Callable[..., Option] = partial(
756
- Option,
757
- "--check-build-dependencies",
758
- dest="check_build_deps",
759
- action="store_true",
760
- default=False,
761
- help="Check the build dependencies when PEP517 is used.",
762
- )
763
-
764
-
765
- def _handle_no_use_pep517(
766
- option: Option, opt: str, value: str, parser: OptionParser
767
- ) -> None:
768
- """
769
- Process a value provided for the --no-use-pep517 option.
770
-
771
- This is an optparse.Option callback for the no_use_pep517 option.
772
- """
773
- # Since --no-use-pep517 doesn't accept arguments, the value argument
774
- # will be None if --no-use-pep517 is passed via the command-line.
775
- # However, the value can be non-None if the option is triggered e.g.
776
- # by an environment variable, for example "PIP_NO_USE_PEP517=true".
777
- if value is not None:
778
- msg = """A value was passed for --no-use-pep517,
779
- probably using either the PIP_NO_USE_PEP517 environment variable
780
- or the "no-use-pep517" config file option. Use an appropriate value
781
- of the PIP_USE_PEP517 environment variable or the "use-pep517"
782
- config file option instead.
783
- """
784
- raise_option_error(parser, option=option, msg=msg)
785
-
786
- # If user doesn't wish to use pep517, we check if setuptools and wheel are installed
787
- # and raise error if it is not.
788
- packages = ("setuptools", "wheel")
789
- if not all(importlib.util.find_spec(package) for package in packages):
790
- msg = (
791
- f"It is not possible to use --no-use-pep517 "
792
- f"without {' and '.join(packages)} installed."
793
- )
794
- raise_option_error(parser, option=option, msg=msg)
795
-
796
- # Otherwise, --no-use-pep517 was passed via the command-line.
797
- parser.values.use_pep517 = False
798
-
799
-
800
- use_pep517: Any = partial(
801
- Option,
802
- "--use-pep517",
803
- dest="use_pep517",
804
- action="store_true",
805
- default=None,
806
- help="Use PEP 517 for building source distributions "
807
- "(use --no-use-pep517 to force legacy behaviour).",
808
- )
809
-
810
- no_use_pep517: Any = partial(
811
- Option,
812
- "--no-use-pep517",
813
- dest="use_pep517",
814
- action="callback",
815
- callback=_handle_no_use_pep517,
816
- default=None,
817
- help=SUPPRESS_HELP,
818
- )
819
-
820
-
821
- def _handle_config_settings(
822
- option: Option, opt_str: str, value: str, parser: OptionParser
823
- ) -> None:
824
- key, sep, val = value.partition("=")
825
- if sep != "=":
826
- parser.error(f"Arguments to {opt_str} must be of the form KEY=VAL")
827
- dest = getattr(parser.values, option.dest)
828
- if dest is None:
829
- dest = {}
830
- setattr(parser.values, option.dest, dest)
831
- if key in dest:
832
- if isinstance(dest[key], list):
833
- dest[key].append(val)
834
- else:
835
- dest[key] = [dest[key], val]
836
- else:
837
- dest[key] = val
838
-
839
-
840
- config_settings: Callable[..., Option] = partial(
841
- Option,
842
- "-C",
843
- "--config-settings",
844
- dest="config_settings",
845
- type=str,
846
- action="callback",
847
- callback=_handle_config_settings,
848
- metavar="settings",
849
- help="Configuration settings to be passed to the PEP 517 build backend. "
850
- "Settings take the form KEY=VALUE. Use multiple --config-settings options "
851
- "to pass multiple keys to the backend.",
852
- )
853
-
854
- build_options: Callable[..., Option] = partial(
855
- Option,
856
- "--build-option",
857
- dest="build_options",
858
- metavar="options",
859
- action="append",
860
- help="Extra arguments to be supplied to 'setup.py bdist_wheel'.",
861
- )
862
-
863
- global_options: Callable[..., Option] = partial(
864
- Option,
865
- "--global-option",
866
- dest="global_options",
867
- action="append",
868
- metavar="options",
869
- help="Extra global options to be supplied to the setup.py "
870
- "call before the install or bdist_wheel command.",
871
- )
872
-
873
- no_clean: Callable[..., Option] = partial(
874
- Option,
875
- "--no-clean",
876
- action="store_true",
877
- default=False,
878
- help="Don't clean up build directories.",
879
- )
880
-
881
- pre: Callable[..., Option] = partial(
882
- Option,
883
- "--pre",
884
- action="store_true",
885
- default=False,
886
- help="Include pre-release and development versions. By default, "
887
- "pip only finds stable versions.",
888
- )
889
-
890
- disable_pip_version_check: Callable[..., Option] = partial(
891
- Option,
892
- "--disable-pip-version-check",
893
- dest="disable_pip_version_check",
894
- action="store_true",
895
- default=False,
896
- help="Don't periodically check PyPI to determine whether a new version "
897
- "of pip is available for download. Implied with --no-index.",
898
- )
899
-
900
- root_user_action: Callable[..., Option] = partial(
901
- Option,
902
- "--root-user-action",
903
- dest="root_user_action",
904
- default="warn",
905
- choices=["warn", "ignore"],
906
- help="Action if pip is run as a root user. By default, a warning message is shown.",
907
- )
908
-
909
-
910
- def _handle_merge_hash(
911
- option: Option, opt_str: str, value: str, parser: OptionParser
912
- ) -> None:
913
- """Given a value spelled "algo:digest", append the digest to a list
914
- pointed to in a dict by the algo name."""
915
- if not parser.values.hashes:
916
- parser.values.hashes = {}
917
- try:
918
- algo, digest = value.split(":", 1)
919
- except ValueError:
920
- parser.error(
921
- f"Arguments to {opt_str} must be a hash name "
922
- "followed by a value, like --hash=sha256:"
923
- "abcde..."
924
- )
925
- if algo not in STRONG_HASHES:
926
- parser.error(
927
- "Allowed hash algorithms for {} are {}.".format(
928
- opt_str, ", ".join(STRONG_HASHES)
929
- )
930
- )
931
- parser.values.hashes.setdefault(algo, []).append(digest)
932
-
933
-
934
- hash: Callable[..., Option] = partial(
935
- Option,
936
- "--hash",
937
- # Hash values eventually end up in InstallRequirement.hashes due to
938
- # __dict__ copying in process_line().
939
- dest="hashes",
940
- action="callback",
941
- callback=_handle_merge_hash,
942
- type="string",
943
- help="Verify that the package's archive matches this "
944
- "hash before installing. Example: --hash=sha256:abcdef...",
945
- )
946
-
947
-
948
- require_hashes: Callable[..., Option] = partial(
949
- Option,
950
- "--require-hashes",
951
- dest="require_hashes",
952
- action="store_true",
953
- default=False,
954
- help="Require a hash to check each requirement against, for "
955
- "repeatable installs. This option is implied when any package in a "
956
- "requirements file has a --hash option.",
957
- )
958
-
959
-
960
- list_path: Callable[..., Option] = partial(
961
- PipOption,
962
- "--path",
963
- dest="path",
964
- type="path",
965
- action="append",
966
- help="Restrict to the specified installation path for listing "
967
- "packages (can be used multiple times).",
968
- )
969
-
970
-
971
- def check_list_path_option(options: Values) -> None:
972
- if options.path and (options.user or options.local):
973
- raise CommandError("Cannot combine '--path' with '--user' or '--local'")
974
-
975
-
976
- list_exclude: Callable[..., Option] = partial(
977
- PipOption,
978
- "--exclude",
979
- dest="excludes",
980
- action="append",
981
- metavar="package",
982
- type="package_name",
983
- help="Exclude specified package from the output",
984
- )
985
-
986
-
987
- no_python_version_warning: Callable[..., Option] = partial(
988
- Option,
989
- "--no-python-version-warning",
990
- dest="no_python_version_warning",
991
- action="store_true",
992
- default=False,
993
- help="Silence deprecation warnings for upcoming unsupported Pythons.",
994
- )
995
-
996
-
997
- # Features that are now always on. A warning is printed if they are used.
998
- ALWAYS_ENABLED_FEATURES = [
999
- "no-binary-enable-wheel-cache", # always on since 23.1
1000
- ]
1001
-
1002
- use_new_feature: Callable[..., Option] = partial(
1003
- Option,
1004
- "--use-feature",
1005
- dest="features_enabled",
1006
- metavar="feature",
1007
- action="append",
1008
- default=[],
1009
- choices=[
1010
- "fast-deps",
1011
- "truststore",
1012
- ]
1013
- + ALWAYS_ENABLED_FEATURES,
1014
- help="Enable new functionality, that may be backward incompatible.",
1015
- )
1016
-
1017
- use_deprecated_feature: Callable[..., Option] = partial(
1018
- Option,
1019
- "--use-deprecated",
1020
- dest="deprecated_features_enabled",
1021
- metavar="feature",
1022
- action="append",
1023
- default=[],
1024
- choices=[
1025
- "legacy-resolver",
1026
- ],
1027
- help=("Enable deprecated functionality, that will be removed in the future."),
1028
- )
1029
-
1030
-
1031
- ##########
1032
- # groups #
1033
- ##########
1034
-
1035
- general_group: Dict[str, Any] = {
1036
- "name": "General Options",
1037
- "options": [
1038
- help_,
1039
- debug_mode,
1040
- isolated_mode,
1041
- require_virtualenv,
1042
- python,
1043
- verbose,
1044
- version,
1045
- quiet,
1046
- log,
1047
- no_input,
1048
- keyring_provider,
1049
- proxy,
1050
- retries,
1051
- timeout,
1052
- exists_action,
1053
- trusted_host,
1054
- cert,
1055
- client_cert,
1056
- cache_dir,
1057
- no_cache,
1058
- disable_pip_version_check,
1059
- no_color,
1060
- no_python_version_warning,
1061
- use_new_feature,
1062
- use_deprecated_feature,
1063
- ],
1064
- }
1065
-
1066
- index_group: Dict[str, Any] = {
1067
- "name": "Package Index Options",
1068
- "options": [
1069
- index_url,
1070
- extra_index_url,
1071
- no_index,
1072
- find_links,
1073
- ],
1074
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/command_context.py DELETED
@@ -1,27 +0,0 @@
1
- from contextlib import ExitStack, contextmanager
2
- from typing import ContextManager, Generator, TypeVar
3
-
4
- _T = TypeVar("_T", covariant=True)
5
-
6
-
7
- class CommandContextMixIn:
8
- def __init__(self) -> None:
9
- super().__init__()
10
- self._in_main_context = False
11
- self._main_context = ExitStack()
12
-
13
- @contextmanager
14
- def main_context(self) -> Generator[None, None, None]:
15
- assert not self._in_main_context
16
-
17
- self._in_main_context = True
18
- try:
19
- with self._main_context:
20
- yield
21
- finally:
22
- self._in_main_context = False
23
-
24
- def enter_context(self, context_provider: ContextManager[_T]) -> _T:
25
- assert self._in_main_context
26
-
27
- return self._main_context.enter_context(context_provider)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/main.py DELETED
@@ -1,79 +0,0 @@
1
- """Primary application entrypoint.
2
- """
3
- import locale
4
- import logging
5
- import os
6
- import sys
7
- import warnings
8
- from typing import List, Optional
9
-
10
- from pip._internal.cli.autocompletion import autocomplete
11
- from pip._internal.cli.main_parser import parse_command
12
- from pip._internal.commands import create_command
13
- from pip._internal.exceptions import PipError
14
- from pip._internal.utils import deprecation
15
-
16
- logger = logging.getLogger(__name__)
17
-
18
-
19
- # Do not import and use main() directly! Using it directly is actively
20
- # discouraged by pip's maintainers. The name, location and behavior of
21
- # this function is subject to change, so calling it directly is not
22
- # portable across different pip versions.
23
-
24
- # In addition, running pip in-process is unsupported and unsafe. This is
25
- # elaborated in detail at
26
- # https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program.
27
- # That document also provides suggestions that should work for nearly
28
- # all users that are considering importing and using main() directly.
29
-
30
- # However, we know that certain users will still want to invoke pip
31
- # in-process. If you understand and accept the implications of using pip
32
- # in an unsupported manner, the best approach is to use runpy to avoid
33
- # depending on the exact location of this entry point.
34
-
35
- # The following example shows how to use runpy to invoke pip in that
36
- # case:
37
- #
38
- # sys.argv = ["pip", your, args, here]
39
- # runpy.run_module("pip", run_name="__main__")
40
- #
41
- # Note that this will exit the process after running, unlike a direct
42
- # call to main. As it is not safe to do any processing after calling
43
- # main, this should not be an issue in practice.
44
-
45
-
46
- def main(args: Optional[List[str]] = None) -> int:
47
- if args is None:
48
- args = sys.argv[1:]
49
-
50
- # Suppress the pkg_resources deprecation warning
51
- # Note - we use a module of .*pkg_resources to cover
52
- # the normal case (pip._vendor.pkg_resources) and the
53
- # devendored case (a bare pkg_resources)
54
- warnings.filterwarnings(
55
- action="ignore", category=DeprecationWarning, module=".*pkg_resources"
56
- )
57
-
58
- # Configure our deprecation warnings to be sent through loggers
59
- deprecation.install_warning_logger()
60
-
61
- autocomplete()
62
-
63
- try:
64
- cmd_name, cmd_args = parse_command(args)
65
- except PipError as exc:
66
- sys.stderr.write(f"ERROR: {exc}")
67
- sys.stderr.write(os.linesep)
68
- sys.exit(1)
69
-
70
- # Needed for locale.getpreferredencoding(False) to work
71
- # in pip._internal.utils.encoding.auto_decode
72
- try:
73
- locale.setlocale(locale.LC_ALL, "")
74
- except locale.Error as e:
75
- # setlocale can apparently crash if locale are uninitialized
76
- logger.debug("Ignoring error %s when setting locale", e)
77
- command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
78
-
79
- return command.main(cmd_args)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/main_parser.py DELETED
@@ -1,134 +0,0 @@
1
- """A single place for constructing and exposing the main parser
2
- """
3
-
4
- import os
5
- import subprocess
6
- import sys
7
- from typing import List, Optional, Tuple
8
-
9
- from pip._internal.build_env import get_runnable_pip
10
- from pip._internal.cli import cmdoptions
11
- from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
12
- from pip._internal.commands import commands_dict, get_similar_commands
13
- from pip._internal.exceptions import CommandError
14
- from pip._internal.utils.misc import get_pip_version, get_prog
15
-
16
- __all__ = ["create_main_parser", "parse_command"]
17
-
18
-
19
- def create_main_parser() -> ConfigOptionParser:
20
- """Creates and returns the main parser for pip's CLI"""
21
-
22
- parser = ConfigOptionParser(
23
- usage="\n%prog <command> [options]",
24
- add_help_option=False,
25
- formatter=UpdatingDefaultsHelpFormatter(),
26
- name="global",
27
- prog=get_prog(),
28
- )
29
- parser.disable_interspersed_args()
30
-
31
- parser.version = get_pip_version()
32
-
33
- # add the general options
34
- gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser)
35
- parser.add_option_group(gen_opts)
36
-
37
- # so the help formatter knows
38
- parser.main = True # type: ignore
39
-
40
- # create command listing for description
41
- description = [""] + [
42
- f"{name:27} {command_info.summary}"
43
- for name, command_info in commands_dict.items()
44
- ]
45
- parser.description = "\n".join(description)
46
-
47
- return parser
48
-
49
-
50
- def identify_python_interpreter(python: str) -> Optional[str]:
51
- # If the named file exists, use it.
52
- # If it's a directory, assume it's a virtual environment and
53
- # look for the environment's Python executable.
54
- if os.path.exists(python):
55
- if os.path.isdir(python):
56
- # bin/python for Unix, Scripts/python.exe for Windows
57
- # Try both in case of odd cases like cygwin.
58
- for exe in ("bin/python", "Scripts/python.exe"):
59
- py = os.path.join(python, exe)
60
- if os.path.exists(py):
61
- return py
62
- else:
63
- return python
64
-
65
- # Could not find the interpreter specified
66
- return None
67
-
68
-
69
- def parse_command(args: List[str]) -> Tuple[str, List[str]]:
70
- parser = create_main_parser()
71
-
72
- # Note: parser calls disable_interspersed_args(), so the result of this
73
- # call is to split the initial args into the general options before the
74
- # subcommand and everything else.
75
- # For example:
76
- # args: ['--timeout=5', 'install', '--user', 'INITools']
77
- # general_options: ['--timeout==5']
78
- # args_else: ['install', '--user', 'INITools']
79
- general_options, args_else = parser.parse_args(args)
80
-
81
- # --python
82
- if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
83
- # Re-invoke pip using the specified Python interpreter
84
- interpreter = identify_python_interpreter(general_options.python)
85
- if interpreter is None:
86
- raise CommandError(
87
- f"Could not locate Python interpreter {general_options.python}"
88
- )
89
-
90
- pip_cmd = [
91
- interpreter,
92
- get_runnable_pip(),
93
- ]
94
- pip_cmd.extend(args)
95
-
96
- # Set a flag so the child doesn't re-invoke itself, causing
97
- # an infinite loop.
98
- os.environ["_PIP_RUNNING_IN_SUBPROCESS"] = "1"
99
- returncode = 0
100
- try:
101
- proc = subprocess.run(pip_cmd)
102
- returncode = proc.returncode
103
- except (subprocess.SubprocessError, OSError) as exc:
104
- raise CommandError(f"Failed to run pip under {interpreter}: {exc}")
105
- sys.exit(returncode)
106
-
107
- # --version
108
- if general_options.version:
109
- sys.stdout.write(parser.version)
110
- sys.stdout.write(os.linesep)
111
- sys.exit()
112
-
113
- # pip || pip help -> print_help()
114
- if not args_else or (args_else[0] == "help" and len(args_else) == 1):
115
- parser.print_help()
116
- sys.exit()
117
-
118
- # the subcommand name
119
- cmd_name = args_else[0]
120
-
121
- if cmd_name not in commands_dict:
122
- guess = get_similar_commands(cmd_name)
123
-
124
- msg = [f'unknown command "{cmd_name}"']
125
- if guess:
126
- msg.append(f'maybe you meant "{guess}"')
127
-
128
- raise CommandError(" - ".join(msg))
129
-
130
- # all the args without the subcommand
131
- cmd_args = args[:]
132
- cmd_args.remove(cmd_name)
133
-
134
- return cmd_name, cmd_args
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/parser.py DELETED
@@ -1,294 +0,0 @@
1
- """Base option parser setup"""
2
-
3
- import logging
4
- import optparse
5
- import shutil
6
- import sys
7
- import textwrap
8
- from contextlib import suppress
9
- from typing import Any, Dict, Generator, List, Tuple
10
-
11
- from pip._internal.cli.status_codes import UNKNOWN_ERROR
12
- from pip._internal.configuration import Configuration, ConfigurationError
13
- from pip._internal.utils.misc import redact_auth_from_url, strtobool
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
-
18
- class PrettyHelpFormatter(optparse.IndentedHelpFormatter):
19
- """A prettier/less verbose help formatter for optparse."""
20
-
21
- def __init__(self, *args: Any, **kwargs: Any) -> None:
22
- # help position must be aligned with __init__.parseopts.description
23
- kwargs["max_help_position"] = 30
24
- kwargs["indent_increment"] = 1
25
- kwargs["width"] = shutil.get_terminal_size()[0] - 2
26
- super().__init__(*args, **kwargs)
27
-
28
- def format_option_strings(self, option: optparse.Option) -> str:
29
- return self._format_option_strings(option)
30
-
31
- def _format_option_strings(
32
- self, option: optparse.Option, mvarfmt: str = " <{}>", optsep: str = ", "
33
- ) -> str:
34
- """
35
- Return a comma-separated list of option strings and metavars.
36
-
37
- :param option: tuple of (short opt, long opt), e.g: ('-f', '--format')
38
- :param mvarfmt: metavar format string
39
- :param optsep: separator
40
- """
41
- opts = []
42
-
43
- if option._short_opts:
44
- opts.append(option._short_opts[0])
45
- if option._long_opts:
46
- opts.append(option._long_opts[0])
47
- if len(opts) > 1:
48
- opts.insert(1, optsep)
49
-
50
- if option.takes_value():
51
- assert option.dest is not None
52
- metavar = option.metavar or option.dest.lower()
53
- opts.append(mvarfmt.format(metavar.lower()))
54
-
55
- return "".join(opts)
56
-
57
- def format_heading(self, heading: str) -> str:
58
- if heading == "Options":
59
- return ""
60
- return heading + ":\n"
61
-
62
- def format_usage(self, usage: str) -> str:
63
- """
64
- Ensure there is only one newline between usage and the first heading
65
- if there is no description.
66
- """
67
- msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " "))
68
- return msg
69
-
70
- def format_description(self, description: str) -> str:
71
- # leave full control over description to us
72
- if description:
73
- if hasattr(self.parser, "main"):
74
- label = "Commands"
75
- else:
76
- label = "Description"
77
- # some doc strings have initial newlines, some don't
78
- description = description.lstrip("\n")
79
- # some doc strings have final newlines and spaces, some don't
80
- description = description.rstrip()
81
- # dedent, then reindent
82
- description = self.indent_lines(textwrap.dedent(description), " ")
83
- description = f"{label}:\n{description}\n"
84
- return description
85
- else:
86
- return ""
87
-
88
- def format_epilog(self, epilog: str) -> str:
89
- # leave full control over epilog to us
90
- if epilog:
91
- return epilog
92
- else:
93
- return ""
94
-
95
- def indent_lines(self, text: str, indent: str) -> str:
96
- new_lines = [indent + line for line in text.split("\n")]
97
- return "\n".join(new_lines)
98
-
99
-
100
- class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter):
101
- """Custom help formatter for use in ConfigOptionParser.
102
-
103
- This is updates the defaults before expanding them, allowing
104
- them to show up correctly in the help listing.
105
-
106
- Also redact auth from url type options
107
- """
108
-
109
- def expand_default(self, option: optparse.Option) -> str:
110
- default_values = None
111
- if self.parser is not None:
112
- assert isinstance(self.parser, ConfigOptionParser)
113
- self.parser._update_defaults(self.parser.defaults)
114
- assert option.dest is not None
115
- default_values = self.parser.defaults.get(option.dest)
116
- help_text = super().expand_default(option)
117
-
118
- if default_values and option.metavar == "URL":
119
- if isinstance(default_values, str):
120
- default_values = [default_values]
121
-
122
- # If its not a list, we should abort and just return the help text
123
- if not isinstance(default_values, list):
124
- default_values = []
125
-
126
- for val in default_values:
127
- help_text = help_text.replace(val, redact_auth_from_url(val))
128
-
129
- return help_text
130
-
131
-
132
- class CustomOptionParser(optparse.OptionParser):
133
- def insert_option_group(
134
- self, idx: int, *args: Any, **kwargs: Any
135
- ) -> optparse.OptionGroup:
136
- """Insert an OptionGroup at a given position."""
137
- group = self.add_option_group(*args, **kwargs)
138
-
139
- self.option_groups.pop()
140
- self.option_groups.insert(idx, group)
141
-
142
- return group
143
-
144
- @property
145
- def option_list_all(self) -> List[optparse.Option]:
146
- """Get a list of all options, including those in option groups."""
147
- res = self.option_list[:]
148
- for i in self.option_groups:
149
- res.extend(i.option_list)
150
-
151
- return res
152
-
153
-
154
- class ConfigOptionParser(CustomOptionParser):
155
- """Custom option parser which updates its defaults by checking the
156
- configuration files and environmental variables"""
157
-
158
- def __init__(
159
- self,
160
- *args: Any,
161
- name: str,
162
- isolated: bool = False,
163
- **kwargs: Any,
164
- ) -> None:
165
- self.name = name
166
- self.config = Configuration(isolated)
167
-
168
- assert self.name
169
- super().__init__(*args, **kwargs)
170
-
171
- def check_default(self, option: optparse.Option, key: str, val: Any) -> Any:
172
- try:
173
- return option.check_value(key, val)
174
- except optparse.OptionValueError as exc:
175
- print(f"An error occurred during configuration: {exc}")
176
- sys.exit(3)
177
-
178
- def _get_ordered_configuration_items(
179
- self,
180
- ) -> Generator[Tuple[str, Any], None, None]:
181
- # Configuration gives keys in an unordered manner. Order them.
182
- override_order = ["global", self.name, ":env:"]
183
-
184
- # Pool the options into different groups
185
- section_items: Dict[str, List[Tuple[str, Any]]] = {
186
- name: [] for name in override_order
187
- }
188
- for section_key, val in self.config.items():
189
- # ignore empty values
190
- if not val:
191
- logger.debug(
192
- "Ignoring configuration key '%s' as it's value is empty.",
193
- section_key,
194
- )
195
- continue
196
-
197
- section, key = section_key.split(".", 1)
198
- if section in override_order:
199
- section_items[section].append((key, val))
200
-
201
- # Yield each group in their override order
202
- for section in override_order:
203
- for key, val in section_items[section]:
204
- yield key, val
205
-
206
- def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]:
207
- """Updates the given defaults with values from the config files and
208
- the environ. Does a little special handling for certain types of
209
- options (lists)."""
210
-
211
- # Accumulate complex default state.
212
- self.values = optparse.Values(self.defaults)
213
- late_eval = set()
214
- # Then set the options with those values
215
- for key, val in self._get_ordered_configuration_items():
216
- # '--' because configuration supports only long names
217
- option = self.get_option("--" + key)
218
-
219
- # Ignore options not present in this parser. E.g. non-globals put
220
- # in [global] by users that want them to apply to all applicable
221
- # commands.
222
- if option is None:
223
- continue
224
-
225
- assert option.dest is not None
226
-
227
- if option.action in ("store_true", "store_false"):
228
- try:
229
- val = strtobool(val)
230
- except ValueError:
231
- self.error(
232
- f"{val} is not a valid value for {key} option, "
233
- "please specify a boolean value like yes/no, "
234
- "true/false or 1/0 instead."
235
- )
236
- elif option.action == "count":
237
- with suppress(ValueError):
238
- val = strtobool(val)
239
- with suppress(ValueError):
240
- val = int(val)
241
- if not isinstance(val, int) or val < 0:
242
- self.error(
243
- f"{val} is not a valid value for {key} option, "
244
- "please instead specify either a non-negative integer "
245
- "or a boolean value like yes/no or false/true "
246
- "which is equivalent to 1/0."
247
- )
248
- elif option.action == "append":
249
- val = val.split()
250
- val = [self.check_default(option, key, v) for v in val]
251
- elif option.action == "callback":
252
- assert option.callback is not None
253
- late_eval.add(option.dest)
254
- opt_str = option.get_opt_string()
255
- val = option.convert_value(opt_str, val)
256
- # From take_action
257
- args = option.callback_args or ()
258
- kwargs = option.callback_kwargs or {}
259
- option.callback(option, opt_str, val, self, *args, **kwargs)
260
- else:
261
- val = self.check_default(option, key, val)
262
-
263
- defaults[option.dest] = val
264
-
265
- for key in late_eval:
266
- defaults[key] = getattr(self.values, key)
267
- self.values = None
268
- return defaults
269
-
270
- def get_default_values(self) -> optparse.Values:
271
- """Overriding to make updating the defaults after instantiation of
272
- the option parser possible, _update_defaults() does the dirty work."""
273
- if not self.process_default_values:
274
- # Old, pre-Optik 1.5 behaviour.
275
- return optparse.Values(self.defaults)
276
-
277
- # Load the configuration, or error out in case of an error
278
- try:
279
- self.config.load()
280
- except ConfigurationError as err:
281
- self.exit(UNKNOWN_ERROR, str(err))
282
-
283
- defaults = self._update_defaults(self.defaults.copy()) # ours
284
- for option in self._get_all_options():
285
- assert option.dest is not None
286
- default = defaults.get(option.dest)
287
- if isinstance(default, str):
288
- opt_str = option.get_opt_string()
289
- defaults[option.dest] = option.check_value(opt_str, default)
290
- return optparse.Values(defaults)
291
-
292
- def error(self, msg: str) -> None:
293
- self.print_usage(sys.stderr)
294
- self.exit(UNKNOWN_ERROR, f"{msg}\n")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/progress_bars.py DELETED
@@ -1,68 +0,0 @@
1
- import functools
2
- from typing import Callable, Generator, Iterable, Iterator, Optional, Tuple
3
-
4
- from pip._vendor.rich.progress import (
5
- BarColumn,
6
- DownloadColumn,
7
- FileSizeColumn,
8
- Progress,
9
- ProgressColumn,
10
- SpinnerColumn,
11
- TextColumn,
12
- TimeElapsedColumn,
13
- TimeRemainingColumn,
14
- TransferSpeedColumn,
15
- )
16
-
17
- from pip._internal.utils.logging import get_indentation
18
-
19
- DownloadProgressRenderer = Callable[[Iterable[bytes]], Iterator[bytes]]
20
-
21
-
22
- def _rich_progress_bar(
23
- iterable: Iterable[bytes],
24
- *,
25
- bar_type: str,
26
- size: int,
27
- ) -> Generator[bytes, None, None]:
28
- assert bar_type == "on", "This should only be used in the default mode."
29
-
30
- if not size:
31
- total = float("inf")
32
- columns: Tuple[ProgressColumn, ...] = (
33
- TextColumn("[progress.description]{task.description}"),
34
- SpinnerColumn("line", speed=1.5),
35
- FileSizeColumn(),
36
- TransferSpeedColumn(),
37
- TimeElapsedColumn(),
38
- )
39
- else:
40
- total = size
41
- columns = (
42
- TextColumn("[progress.description]{task.description}"),
43
- BarColumn(),
44
- DownloadColumn(),
45
- TransferSpeedColumn(),
46
- TextColumn("eta"),
47
- TimeRemainingColumn(),
48
- )
49
-
50
- progress = Progress(*columns, refresh_per_second=30)
51
- task_id = progress.add_task(" " * (get_indentation() + 2), total=total)
52
- with progress:
53
- for chunk in iterable:
54
- yield chunk
55
- progress.update(task_id, advance=len(chunk))
56
-
57
-
58
- def get_download_progress_renderer(
59
- *, bar_type: str, size: Optional[int] = None
60
- ) -> DownloadProgressRenderer:
61
- """Get an object that can be used to render the download progress.
62
-
63
- Returns a callable, that takes an iterable to "wrap".
64
- """
65
- if bar_type == "on":
66
- return functools.partial(_rich_progress_bar, bar_type=bar_type, size=size)
67
- else:
68
- return iter # no-op, when passed an iterator
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/req_command.py DELETED
@@ -1,505 +0,0 @@
1
- """Contains the Command base classes that depend on PipSession.
2
-
3
- The classes in this module are in a separate module so the commands not
4
- needing download / PackageFinder capability don't unnecessarily import the
5
- PackageFinder machinery and all its vendored dependencies, etc.
6
- """
7
-
8
- import logging
9
- import os
10
- import sys
11
- from functools import partial
12
- from optparse import Values
13
- from typing import TYPE_CHECKING, Any, List, Optional, Tuple
14
-
15
- from pip._internal.cache import WheelCache
16
- from pip._internal.cli import cmdoptions
17
- from pip._internal.cli.base_command import Command
18
- from pip._internal.cli.command_context import CommandContextMixIn
19
- from pip._internal.exceptions import CommandError, PreviousBuildDirError
20
- from pip._internal.index.collector import LinkCollector
21
- from pip._internal.index.package_finder import PackageFinder
22
- from pip._internal.models.selection_prefs import SelectionPreferences
23
- from pip._internal.models.target_python import TargetPython
24
- from pip._internal.network.session import PipSession
25
- from pip._internal.operations.build.build_tracker import BuildTracker
26
- from pip._internal.operations.prepare import RequirementPreparer
27
- from pip._internal.req.constructors import (
28
- install_req_from_editable,
29
- install_req_from_line,
30
- install_req_from_parsed_requirement,
31
- install_req_from_req_string,
32
- )
33
- from pip._internal.req.req_file import parse_requirements
34
- from pip._internal.req.req_install import InstallRequirement
35
- from pip._internal.resolution.base import BaseResolver
36
- from pip._internal.self_outdated_check import pip_self_version_check
37
- from pip._internal.utils.temp_dir import (
38
- TempDirectory,
39
- TempDirectoryTypeRegistry,
40
- tempdir_kinds,
41
- )
42
- from pip._internal.utils.virtualenv import running_under_virtualenv
43
-
44
- if TYPE_CHECKING:
45
- from ssl import SSLContext
46
-
47
- logger = logging.getLogger(__name__)
48
-
49
-
50
- def _create_truststore_ssl_context() -> Optional["SSLContext"]:
51
- if sys.version_info < (3, 10):
52
- raise CommandError("The truststore feature is only available for Python 3.10+")
53
-
54
- try:
55
- import ssl
56
- except ImportError:
57
- logger.warning("Disabling truststore since ssl support is missing")
58
- return None
59
-
60
- try:
61
- from pip._vendor import truststore
62
- except ImportError as e:
63
- raise CommandError(f"The truststore feature is unavailable: {e}")
64
-
65
- return truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
66
-
67
-
68
- class SessionCommandMixin(CommandContextMixIn):
69
-
70
- """
71
- A class mixin for command classes needing _build_session().
72
- """
73
-
74
- def __init__(self) -> None:
75
- super().__init__()
76
- self._session: Optional[PipSession] = None
77
-
78
- @classmethod
79
- def _get_index_urls(cls, options: Values) -> Optional[List[str]]:
80
- """Return a list of index urls from user-provided options."""
81
- index_urls = []
82
- if not getattr(options, "no_index", False):
83
- url = getattr(options, "index_url", None)
84
- if url:
85
- index_urls.append(url)
86
- urls = getattr(options, "extra_index_urls", None)
87
- if urls:
88
- index_urls.extend(urls)
89
- # Return None rather than an empty list
90
- return index_urls or None
91
-
92
- def get_default_session(self, options: Values) -> PipSession:
93
- """Get a default-managed session."""
94
- if self._session is None:
95
- self._session = self.enter_context(self._build_session(options))
96
- # there's no type annotation on requests.Session, so it's
97
- # automatically ContextManager[Any] and self._session becomes Any,
98
- # then https://github.com/python/mypy/issues/7696 kicks in
99
- assert self._session is not None
100
- return self._session
101
-
102
- def _build_session(
103
- self,
104
- options: Values,
105
- retries: Optional[int] = None,
106
- timeout: Optional[int] = None,
107
- fallback_to_certifi: bool = False,
108
- ) -> PipSession:
109
- cache_dir = options.cache_dir
110
- assert not cache_dir or os.path.isabs(cache_dir)
111
-
112
- if "truststore" in options.features_enabled:
113
- try:
114
- ssl_context = _create_truststore_ssl_context()
115
- except Exception:
116
- if not fallback_to_certifi:
117
- raise
118
- ssl_context = None
119
- else:
120
- ssl_context = None
121
-
122
- session = PipSession(
123
- cache=os.path.join(cache_dir, "http-v2") if cache_dir else None,
124
- retries=retries if retries is not None else options.retries,
125
- trusted_hosts=options.trusted_hosts,
126
- index_urls=self._get_index_urls(options),
127
- ssl_context=ssl_context,
128
- )
129
-
130
- # Handle custom ca-bundles from the user
131
- if options.cert:
132
- session.verify = options.cert
133
-
134
- # Handle SSL client certificate
135
- if options.client_cert:
136
- session.cert = options.client_cert
137
-
138
- # Handle timeouts
139
- if options.timeout or timeout:
140
- session.timeout = timeout if timeout is not None else options.timeout
141
-
142
- # Handle configured proxies
143
- if options.proxy:
144
- session.proxies = {
145
- "http": options.proxy,
146
- "https": options.proxy,
147
- }
148
-
149
- # Determine if we can prompt the user for authentication or not
150
- session.auth.prompting = not options.no_input
151
- session.auth.keyring_provider = options.keyring_provider
152
-
153
- return session
154
-
155
-
156
- class IndexGroupCommand(Command, SessionCommandMixin):
157
-
158
- """
159
- Abstract base class for commands with the index_group options.
160
-
161
- This also corresponds to the commands that permit the pip version check.
162
- """
163
-
164
- def handle_pip_version_check(self, options: Values) -> None:
165
- """
166
- Do the pip version check if not disabled.
167
-
168
- This overrides the default behavior of not doing the check.
169
- """
170
- # Make sure the index_group options are present.
171
- assert hasattr(options, "no_index")
172
-
173
- if options.disable_pip_version_check or options.no_index:
174
- return
175
-
176
- # Otherwise, check if we're using the latest version of pip available.
177
- session = self._build_session(
178
- options,
179
- retries=0,
180
- timeout=min(5, options.timeout),
181
- # This is set to ensure the function does not fail when truststore is
182
- # specified in use-feature but cannot be loaded. This usually raises a
183
- # CommandError and shows a nice user-facing error, but this function is not
184
- # called in that try-except block.
185
- fallback_to_certifi=True,
186
- )
187
- with session:
188
- pip_self_version_check(session, options)
189
-
190
-
191
- KEEPABLE_TEMPDIR_TYPES = [
192
- tempdir_kinds.BUILD_ENV,
193
- tempdir_kinds.EPHEM_WHEEL_CACHE,
194
- tempdir_kinds.REQ_BUILD,
195
- ]
196
-
197
-
198
- def warn_if_run_as_root() -> None:
199
- """Output a warning for sudo users on Unix.
200
-
201
- In a virtual environment, sudo pip still writes to virtualenv.
202
- On Windows, users may run pip as Administrator without issues.
203
- This warning only applies to Unix root users outside of virtualenv.
204
- """
205
- if running_under_virtualenv():
206
- return
207
- if not hasattr(os, "getuid"):
208
- return
209
- # On Windows, there are no "system managed" Python packages. Installing as
210
- # Administrator via pip is the correct way of updating system environments.
211
- #
212
- # We choose sys.platform over utils.compat.WINDOWS here to enable Mypy platform
213
- # checks: https://mypy.readthedocs.io/en/stable/common_issues.html
214
- if sys.platform == "win32" or sys.platform == "cygwin":
215
- return
216
-
217
- if os.getuid() != 0:
218
- return
219
-
220
- logger.warning(
221
- "Running pip as the 'root' user can result in broken permissions and "
222
- "conflicting behaviour with the system package manager. "
223
- "It is recommended to use a virtual environment instead: "
224
- "https://pip.pypa.io/warnings/venv"
225
- )
226
-
227
-
228
- def with_cleanup(func: Any) -> Any:
229
- """Decorator for common logic related to managing temporary
230
- directories.
231
- """
232
-
233
- def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None:
234
- for t in KEEPABLE_TEMPDIR_TYPES:
235
- registry.set_delete(t, False)
236
-
237
- def wrapper(
238
- self: RequirementCommand, options: Values, args: List[Any]
239
- ) -> Optional[int]:
240
- assert self.tempdir_registry is not None
241
- if options.no_clean:
242
- configure_tempdir_registry(self.tempdir_registry)
243
-
244
- try:
245
- return func(self, options, args)
246
- except PreviousBuildDirError:
247
- # This kind of conflict can occur when the user passes an explicit
248
- # build directory with a pre-existing folder. In that case we do
249
- # not want to accidentally remove it.
250
- configure_tempdir_registry(self.tempdir_registry)
251
- raise
252
-
253
- return wrapper
254
-
255
-
256
- class RequirementCommand(IndexGroupCommand):
257
- def __init__(self, *args: Any, **kw: Any) -> None:
258
- super().__init__(*args, **kw)
259
-
260
- self.cmd_opts.add_option(cmdoptions.no_clean())
261
-
262
- @staticmethod
263
- def determine_resolver_variant(options: Values) -> str:
264
- """Determines which resolver should be used, based on the given options."""
265
- if "legacy-resolver" in options.deprecated_features_enabled:
266
- return "legacy"
267
-
268
- return "resolvelib"
269
-
270
- @classmethod
271
- def make_requirement_preparer(
272
- cls,
273
- temp_build_dir: TempDirectory,
274
- options: Values,
275
- build_tracker: BuildTracker,
276
- session: PipSession,
277
- finder: PackageFinder,
278
- use_user_site: bool,
279
- download_dir: Optional[str] = None,
280
- verbosity: int = 0,
281
- ) -> RequirementPreparer:
282
- """
283
- Create a RequirementPreparer instance for the given parameters.
284
- """
285
- temp_build_dir_path = temp_build_dir.path
286
- assert temp_build_dir_path is not None
287
- legacy_resolver = False
288
-
289
- resolver_variant = cls.determine_resolver_variant(options)
290
- if resolver_variant == "resolvelib":
291
- lazy_wheel = "fast-deps" in options.features_enabled
292
- if lazy_wheel:
293
- logger.warning(
294
- "pip is using lazily downloaded wheels using HTTP "
295
- "range requests to obtain dependency information. "
296
- "This experimental feature is enabled through "
297
- "--use-feature=fast-deps and it is not ready for "
298
- "production."
299
- )
300
- else:
301
- legacy_resolver = True
302
- lazy_wheel = False
303
- if "fast-deps" in options.features_enabled:
304
- logger.warning(
305
- "fast-deps has no effect when used with the legacy resolver."
306
- )
307
-
308
- return RequirementPreparer(
309
- build_dir=temp_build_dir_path,
310
- src_dir=options.src_dir,
311
- download_dir=download_dir,
312
- build_isolation=options.build_isolation,
313
- check_build_deps=options.check_build_deps,
314
- build_tracker=build_tracker,
315
- session=session,
316
- progress_bar=options.progress_bar,
317
- finder=finder,
318
- require_hashes=options.require_hashes,
319
- use_user_site=use_user_site,
320
- lazy_wheel=lazy_wheel,
321
- verbosity=verbosity,
322
- legacy_resolver=legacy_resolver,
323
- )
324
-
325
- @classmethod
326
- def make_resolver(
327
- cls,
328
- preparer: RequirementPreparer,
329
- finder: PackageFinder,
330
- options: Values,
331
- wheel_cache: Optional[WheelCache] = None,
332
- use_user_site: bool = False,
333
- ignore_installed: bool = True,
334
- ignore_requires_python: bool = False,
335
- force_reinstall: bool = False,
336
- upgrade_strategy: str = "to-satisfy-only",
337
- use_pep517: Optional[bool] = None,
338
- py_version_info: Optional[Tuple[int, ...]] = None,
339
- ) -> BaseResolver:
340
- """
341
- Create a Resolver instance for the given parameters.
342
- """
343
- make_install_req = partial(
344
- install_req_from_req_string,
345
- isolated=options.isolated_mode,
346
- use_pep517=use_pep517,
347
- )
348
- resolver_variant = cls.determine_resolver_variant(options)
349
- # The long import name and duplicated invocation is needed to convince
350
- # Mypy into correctly typechecking. Otherwise it would complain the
351
- # "Resolver" class being redefined.
352
- if resolver_variant == "resolvelib":
353
- import pip._internal.resolution.resolvelib.resolver
354
-
355
- return pip._internal.resolution.resolvelib.resolver.Resolver(
356
- preparer=preparer,
357
- finder=finder,
358
- wheel_cache=wheel_cache,
359
- make_install_req=make_install_req,
360
- use_user_site=use_user_site,
361
- ignore_dependencies=options.ignore_dependencies,
362
- ignore_installed=ignore_installed,
363
- ignore_requires_python=ignore_requires_python,
364
- force_reinstall=force_reinstall,
365
- upgrade_strategy=upgrade_strategy,
366
- py_version_info=py_version_info,
367
- )
368
- import pip._internal.resolution.legacy.resolver
369
-
370
- return pip._internal.resolution.legacy.resolver.Resolver(
371
- preparer=preparer,
372
- finder=finder,
373
- wheel_cache=wheel_cache,
374
- make_install_req=make_install_req,
375
- use_user_site=use_user_site,
376
- ignore_dependencies=options.ignore_dependencies,
377
- ignore_installed=ignore_installed,
378
- ignore_requires_python=ignore_requires_python,
379
- force_reinstall=force_reinstall,
380
- upgrade_strategy=upgrade_strategy,
381
- py_version_info=py_version_info,
382
- )
383
-
384
- def get_requirements(
385
- self,
386
- args: List[str],
387
- options: Values,
388
- finder: PackageFinder,
389
- session: PipSession,
390
- ) -> List[InstallRequirement]:
391
- """
392
- Parse command-line arguments into the corresponding requirements.
393
- """
394
- requirements: List[InstallRequirement] = []
395
- for filename in options.constraints:
396
- for parsed_req in parse_requirements(
397
- filename,
398
- constraint=True,
399
- finder=finder,
400
- options=options,
401
- session=session,
402
- ):
403
- req_to_add = install_req_from_parsed_requirement(
404
- parsed_req,
405
- isolated=options.isolated_mode,
406
- user_supplied=False,
407
- )
408
- requirements.append(req_to_add)
409
-
410
- for req in args:
411
- req_to_add = install_req_from_line(
412
- req,
413
- comes_from=None,
414
- isolated=options.isolated_mode,
415
- use_pep517=options.use_pep517,
416
- user_supplied=True,
417
- config_settings=getattr(options, "config_settings", None),
418
- )
419
- requirements.append(req_to_add)
420
-
421
- for req in options.editables:
422
- req_to_add = install_req_from_editable(
423
- req,
424
- user_supplied=True,
425
- isolated=options.isolated_mode,
426
- use_pep517=options.use_pep517,
427
- config_settings=getattr(options, "config_settings", None),
428
- )
429
- requirements.append(req_to_add)
430
-
431
- # NOTE: options.require_hashes may be set if --require-hashes is True
432
- for filename in options.requirements:
433
- for parsed_req in parse_requirements(
434
- filename, finder=finder, options=options, session=session
435
- ):
436
- req_to_add = install_req_from_parsed_requirement(
437
- parsed_req,
438
- isolated=options.isolated_mode,
439
- use_pep517=options.use_pep517,
440
- user_supplied=True,
441
- config_settings=parsed_req.options.get("config_settings")
442
- if parsed_req.options
443
- else None,
444
- )
445
- requirements.append(req_to_add)
446
-
447
- # If any requirement has hash options, enable hash checking.
448
- if any(req.has_hash_options for req in requirements):
449
- options.require_hashes = True
450
-
451
- if not (args or options.editables or options.requirements):
452
- opts = {"name": self.name}
453
- if options.find_links:
454
- raise CommandError(
455
- "You must give at least one requirement to {name} "
456
- '(maybe you meant "pip {name} {links}"?)'.format(
457
- **dict(opts, links=" ".join(options.find_links))
458
- )
459
- )
460
- else:
461
- raise CommandError(
462
- "You must give at least one requirement to {name} "
463
- '(see "pip help {name}")'.format(**opts)
464
- )
465
-
466
- return requirements
467
-
468
- @staticmethod
469
- def trace_basic_info(finder: PackageFinder) -> None:
470
- """
471
- Trace basic information about the provided objects.
472
- """
473
- # Display where finder is looking for packages
474
- search_scope = finder.search_scope
475
- locations = search_scope.get_formatted_locations()
476
- if locations:
477
- logger.info(locations)
478
-
479
- def _build_package_finder(
480
- self,
481
- options: Values,
482
- session: PipSession,
483
- target_python: Optional[TargetPython] = None,
484
- ignore_requires_python: Optional[bool] = None,
485
- ) -> PackageFinder:
486
- """
487
- Create a package finder appropriate to this requirement command.
488
-
489
- :param ignore_requires_python: Whether to ignore incompatible
490
- "Requires-Python" values in links. Defaults to False.
491
- """
492
- link_collector = LinkCollector.create(session, options=options)
493
- selection_prefs = SelectionPreferences(
494
- allow_yanked=True,
495
- format_control=options.format_control,
496
- allow_all_prereleases=options.pre,
497
- prefer_binary=options.prefer_binary,
498
- ignore_requires_python=ignore_requires_python,
499
- )
500
-
501
- return PackageFinder.create(
502
- link_collector=link_collector,
503
- selection_prefs=selection_prefs,
504
- target_python=target_python,
505
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
transactify/Lib/site-packages/pip/_internal/cli/spinners.py DELETED
@@ -1,159 +0,0 @@
1
- import contextlib
2
- import itertools
3
- import logging
4
- import sys
5
- import time
6
- from typing import IO, Generator, Optional
7
-
8
- from pip._internal.utils.compat import WINDOWS
9
- from pip._internal.utils.logging import get_indentation
10
-
11
- logger = logging.getLogger(__name__)
12
-
13
-
14
- class SpinnerInterface:
15
- def spin(self) -> None:
16
- raise NotImplementedError()
17
-
18
- def finish(self, final_status: str) -> None:
19
- raise NotImplementedError()
20
-
21
-
22
- class InteractiveSpinner(SpinnerInterface):
23
- def __init__(
24
- self,
25
- message: str,
26
- file: Optional[IO[str]] = None,
27
- spin_chars: str = "-\\|/",
28
- # Empirically, 8 updates/second looks nice
29
- min_update_interval_seconds: float = 0.125,
30
- ):
31
- self._message = message
32
- if file is None:
33
- file = sys.stdout
34
- self._file = file
35
- self._rate_limiter = RateLimiter(min_update_interval_seconds)
36
- self._finished = False
37
-
38
- self._spin_cycle = itertools.cycle(spin_chars)
39
-
40
- self._file.write(" " * get_indentation() + self._message + " ... ")
41
- self._width = 0
42
-
43
- def _write(self, status: str) -> None:
44
- assert not self._finished
45
- # Erase what we wrote before by backspacing to the beginning, writing
46
- # spaces to overwrite the old text, and then backspacing again
47
- backup = "\b" * self._width
48
- self._file.write(backup + " " * self._width + backup)
49
- # Now we have a blank slate to add our status
50
- self._file.write(status)
51
- self._width = len(status)
52
- self._file.flush()
53
- self._rate_limiter.reset()
54
-
55
- def spin(self) -> None:
56
- if self._finished:
57
- return
58
- if not self._rate_limiter.ready():
59
- return
60
- self._write(next(self._spin_cycle))
61
-
62
- def finish(self, final_status: str) -> None:
63
- if self._finished:
64
- return
65
- self._write(final_status)
66
- self._file.write("\n")
67
- self._file.flush()
68
- self._finished = True
69
-
70
-
71
- # Used for dumb terminals, non-interactive installs (no tty), etc.
72
- # We still print updates occasionally (once every 60 seconds by default) to
73
- # act as a keep-alive for systems like Travis-CI that take lack-of-output as
74
- # an indication that a task has frozen.
75
- class NonInteractiveSpinner(SpinnerInterface):
76
- def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None:
77
- self._message = message
78
- self._finished = False
79
- self._rate_limiter = RateLimiter(min_update_interval_seconds)
80
- self._update("started")
81
-
82
- def _update(self, status: str) -> None:
83
- assert not self._finished
84
- self._rate_limiter.reset()
85
- logger.info("%s: %s", self._message, status)
86
-
87
- def spin(self) -> None:
88
- if self._finished:
89
- return
90
- if not self._rate_limiter.ready():
91
- return
92
- self._update("still running...")
93
-
94
- def finish(self, final_status: str) -> None:
95
- if self._finished:
96
- return
97
- self._update(f"finished with status '{final_status}'")
98
- self._finished = True
99
-
100
-
101
- class RateLimiter:
102
- def __init__(self, min_update_interval_seconds: float) -> None:
103
- self._min_update_interval_seconds = min_update_interval_seconds
104
- self._last_update: float = 0
105
-
106
- def ready(self) -> bool:
107
- now = time.time()
108
- delta = now - self._last_update
109
- return delta >= self._min_update_interval_seconds
110
-
111
- def reset(self) -> None:
112
- self._last_update = time.time()
113
-
114
-
115
- @contextlib.contextmanager
116
- def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]:
117
- # Interactive spinner goes directly to sys.stdout rather than being routed
118
- # through the logging system, but it acts like it has level INFO,
119
- # i.e. it's only displayed if we're at level INFO or better.
120
- # Non-interactive spinner goes through the logging system, so it is always
121
- # in sync with logging configuration.
122
- if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO:
123
- spinner: SpinnerInterface = InteractiveSpinner(message)
124
- else:
125
- spinner = NonInteractiveSpinner(message)
126
- try:
127
- with hidden_cursor(sys.stdout):
128
- yield spinner
129
- except KeyboardInterrupt:
130
- spinner.finish("canceled")
131
- raise
132
- except Exception:
133
- spinner.finish("error")
134
- raise
135
- else:
136
- spinner.finish("done")
137
-
138
-
139
- HIDE_CURSOR = "\x1b[?25l"
140
- SHOW_CURSOR = "\x1b[?25h"
141
-
142
-
143
- @contextlib.contextmanager
144
- def hidden_cursor(file: IO[str]) -> Generator[None, None, None]:
145
- # The Windows terminal does not support the hide/show cursor ANSI codes,
146
- # even via colorama. So don't even try.
147
- if WINDOWS:
148
- yield
149
- # We don't want to clutter the output with control characters if we're
150
- # writing to a file, or if the user is running with --quiet.
151
- # See https://github.com/pypa/pip/issues/3418
152
- elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO:
153
- yield
154
- else:
155
- file.write(HIDE_CURSOR)
156
- try:
157
- yield
158
- finally:
159
- file.write(SHOW_CURSOR)