This view is limited to 50 files because it contains too many changes.  See the raw diff here.
Files changed (50) hide show
  1. .gitattributes +0 -1
  2. .gitignore +1 -6
  3. About.md +0 -64
  4. LSTM_model.py +0 -62
  5. README.md +14 -63
  6. __pycache__/data_preprocessing.cpython-312.pyc +0 -0
  7. __pycache__/datapreprocessing.cpython-312.pyc +0 -0
  8. __pycache__/inference.cpython-312.pyc +0 -0
  9. config.json +0 -35
  10. data_preprocessing.py +0 -83
  11. data_set/transaction_data.csv +0 -0
  12. main.py +4 -55
  13. model.py +0 -25
  14. requirements.txt +0 -4
  15. setup.md +51 -52
  16. transactify/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt +760 -0
  17. transactify/Lib/site-packages/pip-24.0.dist-info/INSTALLER +1 -0
  18. transactify/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt +20 -0
  19. transactify/Lib/site-packages/pip-24.0.dist-info/METADATA +88 -0
  20. transactify/Lib/site-packages/pip-24.0.dist-info/RECORD +1024 -0
  21. transactify/Lib/site-packages/pip-24.0.dist-info/REQUESTED +0 -0
  22. transactify/Lib/site-packages/pip-24.0.dist-info/WHEEL +5 -0
  23. transactify/Lib/site-packages/pip-24.0.dist-info/entry_points.txt +4 -0
  24. transactify/Lib/site-packages/pip-24.0.dist-info/top_level.txt +1 -0
  25. transactify/Lib/site-packages/pip/__init__.py +13 -0
  26. transactify/Lib/site-packages/pip/__main__.py +24 -0
  27. transactify/Lib/site-packages/pip/__pip-runner__.py +50 -0
  28. transactify/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc +0 -0
  29. transactify/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc +0 -0
  30. transactify/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc +0 -0
  31. transactify/Lib/site-packages/pip/_internal/__init__.py +18 -0
  32. transactify/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc +0 -0
  33. transactify/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc +0 -0
  34. transactify/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc +0 -0
  35. transactify/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc +0 -0
  36. transactify/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc +0 -0
  37. transactify/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc +0 -0
  38. transactify/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc +0 -0
  39. transactify/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc +0 -0
  40. transactify/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc +0 -0
  41. transactify/Lib/site-packages/pip/_internal/build_env.py +311 -0
  42. transactify/Lib/site-packages/pip/_internal/cache.py +290 -0
  43. transactify/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
  44. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  45. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc +0 -0
  46. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc +0 -0
  47. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc +0 -0
  48. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc +0 -0
  49. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc +0 -0
  50. transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc +0 -0
.gitattributes CHANGED
@@ -33,4 +33,3 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
- *.mp4 filter=lfs diff=lfs merge=lfs -text
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
.gitignore CHANGED
@@ -1,6 +1 @@
1
- transactify_venv
2
- tokenizer.joblib
3
- label_encoder.joblib
4
- transactify.h5
5
- venv
6
- .venv
 
1
+ venv
 
 
 
 
 
About.md DELETED
@@ -1,64 +0,0 @@
1
- Abstract for Transactify......
2
-
3
- Transactify is an LSTM-based model designed to predict the category of online payment transactions from their descriptions.
4
- By analyzing textual inputs like "Live concert stream on YouTube" or "Coffee at Starbucks," it classifies transactions into categories such as "Movies & Entertainment" or "Food & Dining."
5
- This model helps users track and organize their spending across various sectors, providing better financial insights and budgeting.
6
- Transactify is trained on real-world transaction data for improved accuracy and generalization.
7
-
8
- Table of contents....
9
-
10
- 1.Data Collection:
11
- The dataset consists of 5,000 transaction records generated using ChatGPT, each containing a transaction description and its corresponding category.
12
- Example entries include descriptions like "Live concert stream on YouTube" (Movies & Entertainment) and "Coffee at Starbucks" (Food & Dining).
13
- These records cover various spending categories such as Lifestyle, Movies & Entertainment, Food & Dining, and others.
14
-
15
-
16
- 2.Data Preprocessing:
17
- The preprocessing step involves several natural language processing (NLP) tasks to clean and prepare the text data for model training.
18
- These include:
19
- Lowercasing all text.
20
- Removing digits and punctuation using regular expressions (regex).
21
- Tokenizing the cleaned text to convert it into a sequence of tokens.
22
- Applying text_to_sequences to transform the tokenized words into numerical sequences.
23
- Using pad_sequences to ensure all sequences have the same length for input into the LSTM model.
24
- Label encoding the target categories to convert them into numerical labels.
25
- After preprocessing, the data is split into training and testing sets to build and validate the model.
26
-
27
-
28
-
29
- 3.Model Building:
30
- Embedding Layer: Converts tokenized transaction descriptions into dense vectors, capturing word semantics and relationships.
31
-
32
- LSTM Layer: Learns sequential patterns from the embedded text, helping the model understand the context and relationships between words over time.
33
-
34
- Dropout Layer: Introduces regularization by randomly turning off neurons during training, reducing overfitting and improving the model's generalization.
35
-
36
- Dense Layer with Softmax Activation: Outputs a probability distribution across categories, allowing the model to predict the correct category for each transaction description.
37
-
38
- Model Compilation: Compiled with the Adam optimizer for efficient learning, sparse categorical cross-entropy loss for multi-class classification, and accuracy as the evaluation metric.
39
-
40
- Model Training: The model is trained for 50 epochs with a batch size of 8, using a validation set to monitor performance and adjust during training.
41
-
42
- Saving the Model and Preprocessing Objects:
43
-
44
- The trained model is saved as transactify.h5 for future use.
45
- The tokenizer and label encoder used during preprocessing are saved using joblib as tokenizer.joblib and label_encoder.joblib, respectively,
46
- ensuring they can be reused for consistent tokenization and label encoding when making predictions on new data.
47
-
48
-
49
-
50
- 4.Prediction:
51
- Once trained, the model is used to predict the category of new transaction descriptions.
52
- The output provides the category label, enabling users to classify their spending based on transaction descriptions.
53
-
54
-
55
-
56
- 5.Conclusion:
57
- The Transactify model effectively categorizes transaction descriptions using LSTM networks.
58
- However, to improve the accuracy and reliability of predictions, a larger and more diverse dataset is necessary.
59
- Expanding the dataset will help the model generalize better across various spending behaviors and conditions.
60
- This enhancement will lead to more precise predictions, enabling users to gain deeper insights into their spending patterns.
61
- Future work should focus on collecting additional data to refine the model's performance and applicability in real-world scenarios.
62
-
63
-
64
- ![Excepted Output:](result.gif)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LSTM_model.py DELETED
@@ -1,62 +0,0 @@
1
- # LSTM_model.py
2
- import numpy as np
3
- from tensorflow.keras.models import Sequential
4
- from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout
5
- from data_preprocessing import preprocess_data, split_data
6
- import joblib # To save the tokenizer and label encoder
7
-
8
- # Define the LSTM model
9
- def build_lstm_model(vocab_size, embedding_dim=64, max_len=10, lstm_units=128, dropout_rate=0.2, output_units=6):
10
- model = Sequential()
11
- model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_len))
12
- model.add(LSTM(units=lstm_units, return_sequences=False))
13
- model.add(Dropout(dropout_rate))
14
- model.add(Dense(units=output_units, activation='softmax'))
15
-
16
- model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
17
-
18
- return model
19
-
20
- # Main function to execute the training process
21
- def main():
22
- # Path to your data file
23
- data_path = r"E:\transactify\transactify\transactify\transactify\transactify\data_set\transaction_data.csv"
24
-
25
- # Preprocess the data
26
- sequences, labels, tokenizer, label_encoder = preprocess_data(data_path)
27
-
28
- # Check if preprocessing succeeded
29
- if sequences is not None:
30
- print("Data preprocessing successful!")
31
-
32
- # Split the data into training and testing sets
33
- X_train, X_test, y_train, y_test = split_data(sequences, labels)
34
- print(f"Training data shape: {X_train.shape}, Training labels shape: {y_train.shape}")
35
- print(f"Testing data shape: {X_test.shape}, Testing labels shape: {y_test.shape}")
36
-
37
- # Build the LSTM model
38
- vocab_size = tokenizer.num_words + 1 # +1 for padding token
39
- model = build_lstm_model(vocab_size, max_len=10, output_units=len(label_encoder.classes_))
40
-
41
- # Train the model
42
- model.fit(X_train, y_train, epochs=50, batch_size=8, validation_data=(X_test, y_test))
43
-
44
- # Evaluate the model
45
- loss, accuracy = model.evaluate(X_test, y_test)
46
- print(f"Test Loss: {loss:.4f}, Test Accuracy: {accuracy:.4f}")
47
-
48
- # Save the model
49
- model.save('transactify.h5')
50
- print("Model saved as 'transactify.h5'")
51
-
52
- # Save the tokenizer and label encoder
53
- joblib.dump(tokenizer, 'tokenizer.joblib')
54
- joblib.dump(label_encoder, 'label_encoder.joblib')
55
- print("Tokenizer and LabelEncoder saved as 'tokenizer.joblib' and 'label_encoder.joblib'")
56
-
57
- else:
58
- print("Data preprocessing failed.")
59
-
60
- # Execute the main function
61
- if __name__ == "__main__":
62
- main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md CHANGED
@@ -1,63 +1,14 @@
1
- ---
2
- license: mit
3
- language:
4
- - en
5
- ---
6
-
7
- ## What is Transactify?
8
- Transactify is an LSTM-based model designed to predict the category of online payment transactions from their descriptions.
9
- By analyzing textual inputs like "Live concert stream on YouTube" or "Coffee at Starbucks," it classifies transactions into categories such as "Movies & Entertainment" or "Food & Dining."
10
- This model helps users track and organize their spending across various sectors, providing better financial insights and budgeting.
11
- Transactify is trained on real-world transaction data for improved accuracy and generalization.
12
-
13
- ## Table of contents
14
- ## 1. Data Collection
15
- The dataset consists of **5,000 transaction records** generated using ChatGPT, each containing a transaction description and its corresponding category.
16
-
17
- Example entries include:
18
- - "Live concert stream on YouTube" (Movies & Entertainment)
19
- - "Coffee at Starbucks" (Food & Dining)
20
-
21
- These records cover various spending categories such as **Lifestyle**, **Movies & Entertainment**, **Food & Dining**, and others.
22
-
23
- ---
24
-
25
- ## 2. Data Preprocessing
26
- The preprocessing step involves several natural language processing (NLP) tasks to clean and prepare the text data for model training. These include:
27
-
28
- - Lowercasing all text.
29
- - Removing digits and punctuation using regular expressions (regex).
30
- - Tokenizing the cleaned text to convert it into a sequence of tokens.
31
- - Applying `text_to_sequences` to transform the tokenized words into numerical sequences.
32
- - Using `pad_sequences` to ensure all sequences have the same length for input into the LSTM model.
33
- - Label encoding the target categories to convert them into numerical labels.
34
-
35
- After preprocessing, the data is split into training and testing sets to build and validate the model.
36
-
37
- ---
38
-
39
- ## 3. Model Building
40
- - **Embedding Layer**: Converts tokenized transaction descriptions into dense vectors, capturing word semantics and relationships.
41
-
42
- - **LSTM Layer**: Learns sequential patterns from the embedded text, helping the model understand the context and relationships between words over time.
43
-
44
- - **Dropout Layer**: Introduces regularization by randomly turning off neurons during training, reducing overfitting and improving the model's generalization.
45
-
46
- - **Dense Layer with Softmax Activation**: Outputs a probability distribution across categories, allowing the model to predict the correct category for each transaction description.
47
-
48
- ### Model Compilation
49
- - Compiled with the Adam optimizer for efficient learning.
50
- - Sparse categorical cross-entropy loss for multi-class classification.
51
- - Accuracy as the evaluation metric.
52
-
53
- ### Model Training
54
- The model is trained for **50 epochs** with a batch size of **8**, using a validation set to monitor performance and adjust during training.
55
-
56
- ### Saving the Model and Preprocessing Objects
57
- - The trained model is saved as `transactify.h5` for future use.
58
- - The tokenizer and label encoder used during preprocessing are saved using joblib as `tokenizer.joblib` and `label_encoder.joblib`, respectively, ensuring they can be reused for consistent tokenization and label encoding when making predictions on new data.
59
-
60
- ---
61
-
62
- ## 4. Prediction
63
- Once trained
 
1
+ Transactify:
2
+
3
+ To create an Virtual Environment: open command prompt Type ---> python -m venv transactify
4
+
5
+ To activate the virtual Environment Type ---> cd transactify
6
+ ---> cd scripts
7
+ ---> activate
8
+
9
+ To install Required Libaries in the virtual Environment Type ---> pip install -r requirements.txt
10
+
11
+ To run the python file Type ----> python main.py
12
+
13
+
14
+ Excepted output: Hello World from Hugging Face!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
__pycache__/data_preprocessing.cpython-312.pyc DELETED
Binary file (3.55 kB)
 
__pycache__/datapreprocessing.cpython-312.pyc DELETED
Binary file (4.3 kB)
 
__pycache__/inference.cpython-312.pyc DELETED
Binary file (2.21 kB)
 
config.json DELETED
@@ -1,35 +0,0 @@
1
- {
2
- "model_type": "custom",
3
- "architectures": ["LSTM"],
4
- "library_name": "tensorflow",
5
- "task_specific_params": {
6
- "text-classification": {
7
- "vocab_size": 500,
8
- "embedding_dim": 64,
9
- "hidden_size": 64,
10
- "num_layers": 2,
11
- "dropout_rate": 0.2,
12
- "max_sequence_length": 10
13
- }
14
- },
15
- "training_params": {
16
- "batch_size": 8,
17
- "epochs": 50,
18
- "loss_function": "sparse_categorical_crossentropy",
19
- "optimizer": "adam",
20
- "metrics": ["accuracy"]
21
- },
22
- "train_data_size": 5000,
23
- "id2label": {
24
- "0": "Lifestyle",
25
- "1": "Movies & Entertainment",
26
- "2": "Food & Dining",
27
- "3": "Others"
28
- },
29
- "label2id": {
30
- "Lifestyle": 0,
31
- "Movies & Entertainment": 1,
32
- "Food & Dining": 2,
33
- "Others": 3
34
- }
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data_preprocessing.py DELETED
@@ -1,83 +0,0 @@
1
- # data_preprocessing.py
2
- import numpy as np
3
- import pandas as pd
4
- import re
5
- from sklearn.preprocessing import LabelEncoder
6
- from sklearn.model_selection import train_test_split
7
- from tensorflow.keras.preprocessing.text import Tokenizer
8
- from tensorflow.keras.preprocessing.sequence import pad_sequences
9
-
10
- # Read the data
11
- def read_data(path):
12
- try:
13
- df = pd.read_csv(path)
14
- if df.empty:
15
- print("The file is empty.")
16
- return None
17
- return df
18
- except FileNotFoundError:
19
- print(f"File not found at: {path}")
20
- return None
21
- except Exception as e:
22
- print(f"An error occurred: {e}")
23
- return None
24
-
25
- # Cleaning the text
26
- def clean_text(text):
27
- text = text.lower() # Convert uppercase to lowercase
28
- text = re.sub(r"\d+", " ", text) # Remove digits
29
- text = re.sub(r"[^\w\s]", " ", text) # Remove punctuations
30
- text = text.strip() # Remove extra spaces
31
- return text
32
-
33
- # Main preprocessing function
34
- def preprocess_data(file_path, max_len=10, vocab_size=250):
35
- # Read the data
36
- df = read_data(file_path)
37
- if df is None:
38
- print("Data loading failed.")
39
- return None, None, None, None
40
-
41
- # Clean the text
42
- df['Transaction Description'] = df['Transaction Description'].apply(clean_text)
43
-
44
- # Initialize the tokenizer
45
- tokenizer = Tokenizer(num_words=vocab_size, oov_token="<OOV>")
46
- tokenizer.fit_on_texts(df['Transaction Description'])
47
-
48
- # Convert texts to sequences and pad them
49
- sequences = tokenizer.texts_to_sequences(df['Transaction Description'])
50
- padded_sequences = pad_sequences(sequences, maxlen=max_len, padding='post', truncating='post')
51
-
52
- # Initialize LabelEncoder and encode the labels
53
- label_encoder = LabelEncoder()
54
- labels = label_encoder.fit_transform(df['Category'])
55
-
56
- return padded_sequences, labels, tokenizer, label_encoder
57
-
58
- # Train-test split function
59
- def split_data(sequences, labels, test_size=0.2, random_state=42):
60
- X_train, X_test, y_train, y_test = train_test_split(sequences, labels, test_size=test_size, random_state=random_state)
61
- return X_train, X_test, y_train, y_test
62
-
63
- # Main function to execute preprocessing
64
- def main():
65
- # Path to your data file
66
- data_path = r"E:\transactify\transactify\Dataset\transaction_data.csv"
67
-
68
- # Preprocess the data
69
- sequences, labels, tokenizer, label_encoder = preprocess_data(data_path)
70
-
71
- # Check if preprocessing succeeded
72
- if sequences is not None:
73
- print("Data preprocessing successful!")
74
- # Split the data into training and testing sets
75
- X_train, X_test, y_train, y_test = split_data(sequences, labels)
76
- print(f"Training data shape: {X_train.shape}, Training labels shape: {y_train.shape}")
77
- print(f"Testing data shape: {X_test.shape}, Testing labels shape: {y_test.shape}")
78
- else:
79
- print("Data preprocessing failed.")
80
-
81
- # Execute the main function
82
- if __name__ == "__main__":
83
- main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data_set/transaction_data.csv DELETED
The diff for this file is too large to render. See raw diff
 
main.py CHANGED
@@ -1,57 +1,6 @@
1
- # main.py
2
- import numpy as np
3
- import pandas as pd
4
- from tensorflow.keras.models import load_model
5
- from tensorflow.keras.preprocessing.text import Tokenizer
6
- from tensorflow.keras.preprocessing.sequence import pad_sequences
7
- import joblib
8
- import re
9
 
10
- # Function to clean the input text
11
- def clean_text(text):
12
- text = text.lower()
13
- text = re.sub(r"\d+", " ", text)
14
- text = re.sub(r"[^\w\s]", " ", text)
15
- text = text.strip()
16
- return text
17
-
18
- # Load the model, tokenizer, and label encoder
19
- def load_resources(model_path, tokenizer_path, label_encoder_path):
20
- model = load_model(model_path)
21
- tokenizer = joblib.load(tokenizer_path)
22
- label_encoder = joblib.load(label_encoder_path)
23
- return model, tokenizer, label_encoder
24
-
25
- # Function to make predictions
26
- def predict(model, tokenizer, label_encoder, input_text, max_len=50):
27
- cleaned_text = clean_text(input_text)
28
- sequence = tokenizer.texts_to_sequences([cleaned_text])
29
- padded_sequence = pad_sequences(sequence, maxlen=max_len, padding='post', truncating='post')
30
-
31
- # Make prediction
32
- prediction = model.predict(padded_sequence)
33
- predicted_class = np.argmax(prediction, axis=1)
34
-
35
- # Decode the label
36
- predicted_label = label_encoder.inverse_transform(predicted_class)
37
-
38
- return predicted_label[0]
39
-
40
- # Main function for running predictions
41
- def main():
42
- # Paths to your resources
43
- model_path = 'transactify.h5' # Update with the correct path if needed
44
- tokenizer_path = 'tokenizer.joblib' # Update with the correct path if needed
45
- label_encoder_path = 'label_encoder.joblib' # Update with the correct path if needed
46
-
47
- # Load resources
48
- model, tokenizer, label_encoder = load_resources(model_path, tokenizer_path, label_encoder_path)
49
-
50
- # Input for prediction
51
- input_text = input("Enter a transaction description for prediction: ")
52
- predicted_category = predict(model, tokenizer, label_encoder, input_text)
53
- print(f"The predicted category is: {predicted_category}")
54
-
55
- # Execute the main function
56
  if __name__ == "__main__":
57
- main()
 
1
+ # hello_world.py
2
+ def hello_world():
3
+ print("Hello World from Hugging Face!")
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  if __name__ == "__main__":
6
+ hello_world()
model.py DELETED
@@ -1,25 +0,0 @@
1
- from tensorflow.keras.models import load_model
2
- import joblib
3
- from tensorflow.keras.preprocessing.sequence import pad_sequences
4
- import numpy as np
5
- import re
6
-
7
- # Load the model, tokenizer, and label encoder
8
- model = load_model("transactify.h5")
9
- tokenizer = joblib.load("tokenizer.joblib")
10
- label_encoder = joblib.load("label_encoder.joblib")
11
-
12
- def clean_text(text):
13
- text = text.lower()
14
- text = re.sub(r"\d+", "", text)
15
- text = re.sub(r"[^\w\s]", "", text)
16
- return text.strip()
17
-
18
- def predict(text):
19
- cleaned_text = clean_text(text)
20
- sequence = tokenizer.texts_to_sequences([cleaned_text])
21
- padded_sequence = pad_sequences(sequence, maxlen=100)
22
- prediction = model.predict(padded_sequence)
23
- predicted_label = np.argmax(prediction, axis=1)
24
- category = label_encoder.inverse_transform(predicted_label)
25
- return {"category": category[0]}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.txt CHANGED
@@ -1,4 +0,0 @@
1
- numpy
2
- pandas
3
- tensorflow
4
- scikit-learn
 
 
 
 
 
setup.md CHANGED
@@ -1,53 +1,52 @@
 
 
 
 
 
1
 
2
- # Steps to Run the Model
3
-
4
- 1. **Clone the Repository**:
5
- Open your command line interface (CLI) and clone the repository using:
6
- ```bash
7
- git clone https://huggingface.co/webslate/transactify
8
- ```
9
-
10
- 2. **Create the Virtual Environment**:
11
- Navigate to the project directory and create a virtual environment:
12
- ```bash
13
- python -m venv transactify_venv
14
- ```
15
-
16
- 3. **Activate the Virtual Environment**:
17
- To activate the virtual environment, follow these steps:
18
- - Open your command line interface (CLI).
19
- - Type the following commands:
20
- ```bash
21
- cd transactify_venv
22
- cd Scripts
23
- activate
24
- ```
25
-
26
- 4. **Install Required Libraries**:
27
- After activating the virtual environment, install the necessary libraries by typing:
28
- ```bash
29
- pip install -r requirements.txt
30
- ```
31
-
32
- 5. **Run the Data Preprocessing Code**:
33
- Execute the data preprocessing script by typing:
34
- ```bash
35
- python data_preprocessing.py
36
- ```
37
-
38
- 6. **Run the LSTM Model Code**:
39
- Train the LSTM model by executing:
40
- ```bash
41
- python LSTM_model.py
42
- ```
43
-
44
- 7. **Generate the H5 File**:
45
- After training, you can generate the model file (`transactify.h5`).
46
-
47
- 8. **Run the Prediction Code**:
48
- To make predictions using the trained model, type:
49
- ```bash
50
- python main.py
51
- ```
52
-
53
- Following these steps will set up and run the Transactify model for predicting transaction categories based on descriptions.
 
1
+ ## Install Git LFS
2
+ ```
3
+ brew install git-lfs
4
+ ```
5
+ or download from https://git-lfs.github.com/
6
 
7
+ ## Update global git config
8
+ ```
9
+ $ git lfs install
10
+ ```
11
+
12
+ ## Update system git config
13
+ ```
14
+ $ git lfs install --system
15
+ ```
16
+
17
+ ## Clone the Repo
18
+
19
+ ### Entire Clone
20
+ ```
21
+ git clone https://huggingface.co/webslate/transactify
22
+ ```
23
+
24
+ ### Light Clone
25
+ ```
26
+ GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/webslate/transactify
27
+ ```
28
+
29
+ ## For Pushing the Code
30
+
31
+ > Refer to https://huggingface.co/blog/password-git-deprecation
32
+
33
+ ### Set the Remote URL
34
+ ```
35
+ $: git remote set-url origin https://<user_name>:<token>@huggingface.co/<repo_path>
36
+ ```
37
+ ### Token Creation
38
+
39
+ > Go to Settings > Access Tokens > Create new token >
40
+ Choose Write Tab (3rd one) / go here https://huggingface.co/settings/tokens/new?tokenType=write
41
+
42
+
43
+ ## Create Virtual Environment
44
+
45
+ ```
46
+ python3 -m venv venv
47
+ source venv/bin/activate
48
+ ```
49
+
50
+ ## FYI
51
+
52
+ > We initially started with `pip install transformers datasets`
 
 
 
 
 
 
transactify/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt ADDED
@@ -0,0 +1,760 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
transactify/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,1024 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
File without changes
transactify/Lib/site-packages/pip-24.0.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
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 ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
transactify/Lib/site-packages/pip/__init__.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
Binary file (669 Bytes). View file
 
transactify/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc ADDED
Binary file (825 Bytes). View file
 
transactify/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc ADDED
Binary file (2.18 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__init__.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
Binary file (771 Bytes). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc ADDED
Binary file (14.3 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc ADDED
Binary file (12.6 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc ADDED
Binary file (17.6 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc ADDED
Binary file (33.3 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc ADDED
Binary file (654 Bytes). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc ADDED
Binary file (4.95 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc ADDED
Binary file (10.5 kB). View file
 
transactify/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc ADDED
Binary file (13.6 kB). View file
 
transactify/Lib/site-packages/pip/_internal/build_env.py ADDED
@@ -0,0 +1,311 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
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 ADDED
Binary file (262 Bytes). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc ADDED
Binary file (8.45 kB). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc ADDED
Binary file (10.4 kB). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc ADDED
Binary file (30.4 kB). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc ADDED
Binary file (1.76 kB). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc ADDED
Binary file (2.28 kB). View file
 
transactify/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc ADDED
Binary file (4.89 kB). View file