@ -1 +1 @@
|
|||||||
["E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\vm_snapshot_data","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\isolate_snapshot_data","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\kernel_blob.bin","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/1F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/1F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/2F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/2F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/3F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/3F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/4F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/4F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/5F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/5F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection0.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection1.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection2.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection3.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection4.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Collection_Preview.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview1.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview2.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview3.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/position.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/service1.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/service2.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\fonts/MaterialIcons-Regular.otf","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\shaders/ink_sparkle.frag","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\AssetManifest.json","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\AssetManifest.bin","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\FontManifest.json","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\NOTICES.Z"]
|
["E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\vm_snapshot_data","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\isolate_snapshot_data","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\kernel_blob.bin","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/1F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/1F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/2F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/2F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/3F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/3F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/4F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/4F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/5F-Route.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/5F.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection0-1.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/collection0-2.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview1.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview2.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/Museum_Preview3.jpg","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/service1.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\assets/service2.png","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\fonts/MaterialIcons-Regular.otf","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\shaders/ink_sparkle.frag","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\AssetManifest.json","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\AssetManifest.bin","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\FontManifest.json","E:\\travelguideProject\\src\\build\\app\\intermediates\\flutter\\debug\\flutter_assets\\NOTICES.Z"]
|
@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"sqflite","dependencies":[]}],"date_created":"2023-11-02 12:02:13.683962","version":"3.13.3"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"sqflite","path":"C:\\\\Users\\\\17651\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.0\\\\","native_build":true,"dependencies":[]}],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"sqflite","dependencies":[]}],"date_created":"2023-11-07 17:06:45.885624","version":"3.13.3"}
|
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 504 KiB |
Before Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 194 KiB |
@ -1 +1 @@
|
|||||||
{"assets/1F-Route.png":["assets/1F-Route.png"],"assets/1F.png":["assets/1F.png"],"assets/2F-Route.png":["assets/2F-Route.png"],"assets/2F.png":["assets/2F.png"],"assets/3F-Route.png":["assets/3F-Route.png"],"assets/3F.png":["assets/3F.png"],"assets/4F-Route.png":["assets/4F-Route.png"],"assets/4F.png":["assets/4F.png"],"assets/5F-Route.png":["assets/5F-Route.png"],"assets/5F.png":["assets/5F.png"],"assets/Collection_Preview.jpg":["assets/Collection_Preview.jpg"],"assets/Museum_Preview1.jpg":["assets/Museum_Preview1.jpg"],"assets/Museum_Preview2.jpg":["assets/Museum_Preview2.jpg"],"assets/Museum_Preview3.jpg":["assets/Museum_Preview3.jpg"],"assets/collection0.png":["assets/collection0.png"],"assets/collection1.png":["assets/collection1.png"],"assets/collection2.png":["assets/collection2.png"],"assets/collection3.png":["assets/collection3.png"],"assets/collection4.png":["assets/collection4.png"],"assets/position.png":["assets/position.png"],"assets/service1.png":["assets/service1.png"],"assets/service2.png":["assets/service2.png"]}
|
{"assets/1F-Route.png":["assets/1F-Route.png"],"assets/1F.png":["assets/1F.png"],"assets/2F-Route.png":["assets/2F-Route.png"],"assets/2F.png":["assets/2F.png"],"assets/3F-Route.png":["assets/3F-Route.png"],"assets/3F.png":["assets/3F.png"],"assets/4F-Route.png":["assets/4F-Route.png"],"assets/4F.png":["assets/4F.png"],"assets/5F-Route.png":["assets/5F-Route.png"],"assets/5F.png":["assets/5F.png"],"assets/Museum_Preview1.jpg":["assets/Museum_Preview1.jpg"],"assets/Museum_Preview2.jpg":["assets/Museum_Preview2.jpg"],"assets/Museum_Preview3.jpg":["assets/Museum_Preview3.jpg"],"assets/collection0-1.jpg":["assets/collection0-1.jpg"],"assets/collection0-2.jpg":["assets/collection0-2.jpg"],"assets/service1.png":["assets/service1.png"],"assets/service2.png":["assets/service2.png"]}
|
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 504 KiB |
Before Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 194 KiB |
@ -1 +1 @@
|
|||||||
{"assets/1F-Route.png":["assets/1F-Route.png"],"assets/1F.png":["assets/1F.png"],"assets/2F-Route.png":["assets/2F-Route.png"],"assets/2F.png":["assets/2F.png"],"assets/3F-Route.png":["assets/3F-Route.png"],"assets/3F.png":["assets/3F.png"],"assets/4F-Route.png":["assets/4F-Route.png"],"assets/4F.png":["assets/4F.png"],"assets/5F-Route.png":["assets/5F-Route.png"],"assets/5F.png":["assets/5F.png"],"assets/Collection_Preview.jpg":["assets/Collection_Preview.jpg"],"assets/Museum_Preview1.jpg":["assets/Museum_Preview1.jpg"],"assets/Museum_Preview2.jpg":["assets/Museum_Preview2.jpg"],"assets/Museum_Preview3.jpg":["assets/Museum_Preview3.jpg"],"assets/collection0.png":["assets/collection0.png"],"assets/collection1.png":["assets/collection1.png"],"assets/collection2.png":["assets/collection2.png"],"assets/collection3.png":["assets/collection3.png"],"assets/collection4.png":["assets/collection4.png"],"assets/position.png":["assets/position.png"],"assets/service1.png":["assets/service1.png"],"assets/service2.png":["assets/service2.png"]}
|
{"assets/1F-Route.png":["assets/1F-Route.png"],"assets/1F.png":["assets/1F.png"],"assets/2F-Route.png":["assets/2F-Route.png"],"assets/2F.png":["assets/2F.png"],"assets/3F-Route.png":["assets/3F-Route.png"],"assets/3F.png":["assets/3F.png"],"assets/4F-Route.png":["assets/4F-Route.png"],"assets/4F.png":["assets/4F.png"],"assets/5F-Route.png":["assets/5F-Route.png"],"assets/5F.png":["assets/5F.png"],"assets/Museum_Preview1.jpg":["assets/Museum_Preview1.jpg"],"assets/Museum_Preview2.jpg":["assets/Museum_Preview2.jpg"],"assets/Museum_Preview3.jpg":["assets/Museum_Preview3.jpg"],"assets/collection0-1.jpg":["assets/collection0-1.jpg"],"assets/collection0-2.jpg":["assets/collection0-2.jpg"],"assets/service1.png":["assets/service1.png"],"assets/service2.png":["assets/service2.png"]}
|
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 504 KiB |
Before Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 194 KiB |
@ -1,4 +1,4 @@
|
|||||||
#Thu Nov 02 12:02:19 CST 2023
|
#Tue Nov 07 17:06:55 CST 2023
|
||||||
base.0=E\:\\travelguideProject\\src\\build\\app\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex
|
base.0=E\:\\travelguideProject\\src\\build\\app\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex
|
||||||
renamed.0=classes.dex
|
renamed.0=classes.dex
|
||||||
path.0=classes.dex
|
path.0=classes.dex
|
||||||
|
@ -1 +1 @@
|
|||||||
9ecdd3d1f49e5a96719c58d8f0c973861ca1f7db
|
8db6f56093d8b6c30b54824d677724585f327c7c
|
@ -0,0 +1,28 @@
|
|||||||
|
import 'package:sqflite/sqflite.dart';
|
||||||
|
import 'package:travelguide/travelguideapp/data/entity/CollectionInfo.dart';
|
||||||
|
import 'package:travelguide/travelguideapp/data/MyDatabase.dart';
|
||||||
|
|
||||||
|
class CollectionControl {
|
||||||
|
static Future<List<CollectionInfo>> fetchCollectionData(int collectionID) async {
|
||||||
|
final List<CollectionInfo> data = await _fetchCollectionDataWithFilter(collectionID);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<List<CollectionInfo>> _fetchCollectionDataWithFilter(int collectionID) async {
|
||||||
|
final Database db = await MyDatabase.initDatabase();
|
||||||
|
final List<Map<String, dynamic>> maps = await db.query(
|
||||||
|
'CollectionInfo',
|
||||||
|
where: 'CollectionID = ?',
|
||||||
|
whereArgs: [collectionID],
|
||||||
|
);
|
||||||
|
|
||||||
|
return List.generate(maps.length, (index) {
|
||||||
|
return CollectionInfo(
|
||||||
|
collectionID: maps[index]['CollectionID'],
|
||||||
|
museumName: maps[index]['MuseumName'],
|
||||||
|
collectionName: maps[index]['CollectionName'],
|
||||||
|
collectionDetail: maps[index]['CollectionDetail'],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,60 +0,0 @@
|
|||||||
import 'package:sqflite/sqflite.dart';
|
|
||||||
import 'package:path/path.dart';
|
|
||||||
|
|
||||||
class CollectionInfo {
|
|
||||||
final int collectionID;
|
|
||||||
final String museumName;
|
|
||||||
final String collectionName;
|
|
||||||
final String collectionDetail;
|
|
||||||
|
|
||||||
CollectionInfo({
|
|
||||||
required this.collectionID,
|
|
||||||
required this.museumName,
|
|
||||||
required this.collectionName,
|
|
||||||
required this.collectionDetail,
|
|
||||||
});
|
|
||||||
|
|
||||||
Map<String, dynamic> toMap() {
|
|
||||||
return {
|
|
||||||
'CollectionID': collectionID,
|
|
||||||
'MuseumName': museumName,
|
|
||||||
'CollectionName': collectionName,
|
|
||||||
'CollectionDetail': collectionDetail,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
static Future<void> insertInitialData() async {
|
|
||||||
final databasePath = await getDatabasesPath();
|
|
||||||
final path = join(databasePath, 'travelguide.db');
|
|
||||||
final database = await openDatabase(path);
|
|
||||||
|
|
||||||
final batch = database.batch();
|
|
||||||
|
|
||||||
final data = [
|
|
||||||
CollectionInfo(
|
|
||||||
collectionID: 0,
|
|
||||||
museumName: '西周太保鼎',
|
|
||||||
collectionName: '鼎',
|
|
||||||
collectionDetail: '这是西周时期的太保鼎。',
|
|
||||||
),
|
|
||||||
CollectionInfo(
|
|
||||||
collectionID: 1,
|
|
||||||
museumName: '几何纹豆',
|
|
||||||
collectionName: '豆',
|
|
||||||
collectionDetail: '这是几何纹样式的青铜豆。',
|
|
||||||
),
|
|
||||||
CollectionInfo(
|
|
||||||
collectionID: 2,
|
|
||||||
museumName: '蟠虺纹钟',
|
|
||||||
collectionName: '钟',
|
|
||||||
collectionDetail: '这是蟠虺纹样式的古代钟。',
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|
||||||
data.forEach((item) {
|
|
||||||
batch.insert('CollectionInfo', item.toMap());
|
|
||||||
});
|
|
||||||
|
|
||||||
await batch.commit();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,32 @@
|
|||||||
|
import 'package:sqflite/sqflite.dart';
|
||||||
|
import 'package:travelguide/travelguideapp/data/MyDatabase.dart';
|
||||||
|
|
||||||
|
|
||||||
|
class CollectionInfo {
|
||||||
|
late int collectionID;
|
||||||
|
late String museumName;
|
||||||
|
late String collectionName;
|
||||||
|
late String collectionDetail;
|
||||||
|
|
||||||
|
CollectionInfo({
|
||||||
|
required this.collectionID,
|
||||||
|
required this.museumName,
|
||||||
|
required this.collectionName,
|
||||||
|
required this.collectionDetail,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 构造函数和其他属性
|
||||||
|
static Future<List<CollectionInfo>> getAllCollections() async {
|
||||||
|
final Database db = await MyDatabase.initDatabase();
|
||||||
|
final List<Map<String, dynamic>> maps = await db.query('CollectionInfo');
|
||||||
|
|
||||||
|
return List.generate(maps.length, (index) {
|
||||||
|
return CollectionInfo(
|
||||||
|
collectionID: maps[index]['CollectionID'],
|
||||||
|
museumName: maps[index]['MuseumName'],
|
||||||
|
collectionName: maps[index]['CollectionName'],
|
||||||
|
collectionDetail: maps[index]['CollectionDetail'],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,34 +1,45 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:travelguide/travelguideapp/business_logic/control/CollectionControl.dart';
|
||||||
|
import 'package:travelguide/travelguideapp/data/entity/CollectionInfo.dart';
|
||||||
|
|
||||||
|
class collection1 extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_collection1State createState() => _collection1State();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _collection1State extends State<collection1> {
|
||||||
|
List<CollectionInfo> collectionList = [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
fetchCollectionData();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> fetchCollectionData() async {
|
||||||
|
List<CollectionInfo> data = await CollectionControl.fetchCollectionData(1);
|
||||||
|
setState(() {
|
||||||
|
collectionList = data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
class collection1 extends StatelessWidget {
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text('几何纹豆'),
|
title: Text('清末 翡翠缠枝菊花纹环耳扁盖瓶'),
|
||||||
backgroundColor: Colors.green,
|
backgroundColor: Colors.green,
|
||||||
),
|
),
|
||||||
body: Center(
|
body: ListView.builder(
|
||||||
child: Column(
|
itemCount: collectionList.length,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
itemBuilder: (context, index) {
|
||||||
children: [
|
return ListTile(
|
||||||
Text(
|
title: Text(collectionList[index].collectionName),
|
||||||
'战国 二级\n'
|
subtitle: Text(collectionList[index].museumName),
|
||||||
'口径17.4厘米 高18.9厘米 \n'
|
// 添加其他显示数据的部件
|
||||||
'器高12.7厘米 盖高7.9厘米\n',
|
);
|
||||||
textAlign: TextAlign.center,
|
},
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 18, // 调整字体大小
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Image.asset(
|
|
||||||
'assets/collection1.png',
|
|
||||||
width: 200,
|
|
||||||
height: 200,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
"""Run the EasyInstall command"""
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from setuptools.command.easy_install import main
|
||||||
|
main()
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2008-2019 The pip developers (see AUTHORS.txt file)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -0,0 +1,81 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: pip
|
||||||
|
Version: 19.2.3
|
||||||
|
Summary: The PyPA recommended tool for installing Python packages.
|
||||||
|
Home-page: https://pip.pypa.io/
|
||||||
|
Author: The pip developers
|
||||||
|
Author-email: pypa-dev@groups.google.com
|
||||||
|
License: MIT
|
||||||
|
Keywords: distutils easy_install egg setuptools wheel virtualenv
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Topic :: Software Development :: Build Tools
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.5
|
||||||
|
Classifier: Programming Language :: Python :: 3.6
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*
|
||||||
|
|
||||||
|
pip - The Python Package Installer
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. image:: https://img.shields.io/pypi/v/pip.svg
|
||||||
|
:target: https://pypi.org/project/pip/
|
||||||
|
|
||||||
|
.. image:: https://readthedocs.org/projects/pip/badge/?version=latest
|
||||||
|
:target: https://pip.pypa.io/en/latest
|
||||||
|
|
||||||
|
pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
|
||||||
|
|
||||||
|
Please take a look at our documentation for how to install and use pip:
|
||||||
|
|
||||||
|
* `Installation`_
|
||||||
|
* `Usage`_
|
||||||
|
|
||||||
|
Updates are released regularly, with a new version every 3 months. More details can be found in our documentation:
|
||||||
|
|
||||||
|
* `Release notes`_
|
||||||
|
* `Release process`_
|
||||||
|
|
||||||
|
If you find bugs, need help, or want to talk to the developers please use our mailing lists or chat rooms:
|
||||||
|
|
||||||
|
* `Issue tracking`_
|
||||||
|
* `Discourse channel`_
|
||||||
|
* `User IRC`_
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* `GitHub page`_
|
||||||
|
* `Dev documentation`_
|
||||||
|
* `Dev mailing list`_
|
||||||
|
* `Dev IRC`_
|
||||||
|
|
||||||
|
Code of Conduct
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Everyone interacting in the pip project's codebases, issue trackers, chat
|
||||||
|
rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_.
|
||||||
|
|
||||||
|
.. _package installer: https://packaging.python.org/en/latest/current/
|
||||||
|
.. _Python Package Index: https://pypi.org
|
||||||
|
.. _Installation: https://pip.pypa.io/en/stable/installing.html
|
||||||
|
.. _Usage: https://pip.pypa.io/en/stable/
|
||||||
|
.. _Release notes: https://pip.pypa.io/en/stable/news.html
|
||||||
|
.. _Release process: https://pip.pypa.io/en/latest/development/release-process/
|
||||||
|
.. _GitHub page: https://github.com/pypa/pip
|
||||||
|
.. _Dev documentation: https://pip.pypa.io/en/latest/development
|
||||||
|
.. _Issue tracking: https://github.com/pypa/pip/issues
|
||||||
|
.. _Discourse channel: https://discuss.python.org/c/packaging
|
||||||
|
.. _Dev mailing list: https://groups.google.com/forum/#!forum/pypa-dev
|
||||||
|
.. _User IRC: https://webchat.freenode.net/?channels=%23pypa
|
||||||
|
.. _Dev IRC: https://webchat.freenode.net/?channels=%23pypa-dev
|
||||||
|
.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/
|
||||||
|
|
||||||
|
|
@ -0,0 +1,668 @@
|
|||||||
|
../../Scripts/pip.exe,sha256=l4Zida4KpbnHwMj8zKMacxl_dsgxdJHr05RC9OcY3To,103282
|
||||||
|
../../Scripts/pip3.8.exe,sha256=l4Zida4KpbnHwMj8zKMacxl_dsgxdJHr05RC9OcY3To,103282
|
||||||
|
../../Scripts/pip3.exe,sha256=l4Zida4KpbnHwMj8zKMacxl_dsgxdJHr05RC9OcY3To,103282
|
||||||
|
pip-19.2.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
pip-19.2.3.dist-info/LICENSE.txt,sha256=W6Ifuwlk-TatfRU2LR7W1JMcyMj5_y1NkRkOEJvnRDE,1090
|
||||||
|
pip-19.2.3.dist-info/METADATA,sha256=uA6603UkWcOVSlssH5-xiouxIBqVvzVkNDCHNkzsJs4,3195
|
||||||
|
pip-19.2.3.dist-info/RECORD,,
|
||||||
|
pip-19.2.3.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110
|
||||||
|
pip-19.2.3.dist-info/entry_points.txt,sha256=S_zfxY25QtQDVY1BiLAmOKSkkI5llzCKPLiYOSEupsY,98
|
||||||
|
pip-19.2.3.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
pip/__init__.py,sha256=DY1edKuavmOCGCG4RY236CTl5tiT71KY6-ewGOCDIJU,23
|
||||||
|
pip/__main__.py,sha256=L3IHqBeasELUHvwy5CT_izVEMhM12tve289qut49DvU,623
|
||||||
|
pip/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/__pycache__/__main__.cpython-38.pyc,,
|
||||||
|
pip/_internal/__init__.py,sha256=uGzk4m-m6lYf1mnYIRjjsvO35Qf6iAFatbY4oa9ifOU,2797
|
||||||
|
pip/_internal/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/build_env.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/cache.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/configuration.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/download.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/exceptions.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/index.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/legacy_resolve.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/locations.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/pep425tags.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/pyproject.cpython-38.pyc,,
|
||||||
|
pip/_internal/__pycache__/wheel.cpython-38.pyc,,
|
||||||
|
pip/_internal/build_env.py,sha256=jZHTbyb4XqoaIoPaOJP2uOp1Hnmh0HfplXBgY0TBWyM,7405
|
||||||
|
pip/_internal/cache.py,sha256=MzHv-Z0h8_n6XfBMxIatHcoiyAmzvX1zKtDGoJBWHk0,7658
|
||||||
|
pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
|
||||||
|
pip/_internal/cli/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/autocompletion.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/base_command.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/cmdoptions.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/main_parser.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/parser.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/__pycache__/status_codes.cpython-38.pyc,,
|
||||||
|
pip/_internal/cli/autocompletion.py,sha256=ptvsMdGjq42pzoY4skABVF43u2xAtLJlXAulPi-A10Y,6083
|
||||||
|
pip/_internal/cli/base_command.py,sha256=KF1S58E8yilcKkqPyeJKU-jqQBSxBI25b_sBoq3uEAo,13029
|
||||||
|
pip/_internal/cli/cmdoptions.py,sha256=cILKSj3jrwpQY3Xl76erVPhxnWuAIOoeJUcVjxttyaE,27543
|
||||||
|
pip/_internal/cli/main_parser.py,sha256=J_gG7JnoAeUhSDy2PFGqMEZLNm9oNYnuZunjVz94Lyw,2817
|
||||||
|
pip/_internal/cli/parser.py,sha256=VZKUKJPbU6I2cHPLDOikin-aCx7OvLcZ3fzYp3xytd8,9378
|
||||||
|
pip/_internal/cli/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156
|
||||||
|
pip/_internal/commands/__init__.py,sha256=KF-mqzngZMtbOxkX9M6ayyGyroCNz5xdlZEc4lItUMI,2295
|
||||||
|
pip/_internal/commands/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/check.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/completion.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/configuration.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/debug.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/download.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/freeze.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/hash.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/help.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/install.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/list.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/search.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/show.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/uninstall.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/__pycache__/wheel.cpython-38.pyc,,
|
||||||
|
pip/_internal/commands/check.py,sha256=liigNVif0iz2mBfhvsajrLZT5zM5KIvgmKvhAW91EzA,1430
|
||||||
|
pip/_internal/commands/completion.py,sha256=hqvCvoxsIHjysiD7olHKTqK2lzE1_lS6LWn69kN5qyI,2929
|
||||||
|
pip/_internal/commands/configuration.py,sha256=c22362Rk7dAwvHFja9py4sSaV0Sryqo_PzuadI1mm0w,8156
|
||||||
|
pip/_internal/commands/debug.py,sha256=0NJZT3Zz9vjqUqeKdPPbr_jUZubnHYp7Cmk--zlZiPs,3360
|
||||||
|
pip/_internal/commands/download.py,sha256=zAyNBo0zwHixos6O-S6Kd9SAH1L_74filOoR83_Fa7U,6375
|
||||||
|
pip/_internal/commands/freeze.py,sha256=lDrob-AG-qT2DyZTNWlYa9F4BqJQTy_F9h9KakBMnG0,3441
|
||||||
|
pip/_internal/commands/hash.py,sha256=K1JycsD-rpjqrRcL_ijacY9UKmI82pQcLYq4kCM4Pv0,1681
|
||||||
|
pip/_internal/commands/help.py,sha256=MwBhPJpW1Dt3GfJV3V8V6kgAy_pXT0jGrZJB1wCTW-E,1090
|
||||||
|
pip/_internal/commands/install.py,sha256=cGXbByOjrJWKIv5myy7ZflX4jYMyjT6-w85tGhnI-Nw,22646
|
||||||
|
pip/_internal/commands/list.py,sha256=MMiJnQJCfMwA1Qf0lSru7Nzm19otm49MFmbx8y01rwA,10497
|
||||||
|
pip/_internal/commands/search.py,sha256=R2N1-r3RaxZqX5YeNL9QaYWnILsUn4MtPKZ1ji1i1sU,4972
|
||||||
|
pip/_internal/commands/show.py,sha256=bE-ucu8fAjTTENpRRKhwD3QSWR8Rss7YgKAbMJoxock,6273
|
||||||
|
pip/_internal/commands/uninstall.py,sha256=h0gfPF5jylDESx_IHgF6bZME7QAEOHzQHdn65GP-jrE,2963
|
||||||
|
pip/_internal/commands/wheel.py,sha256=G2dOwQkDCH0-x6nlf9MvbMY2GUf-pqAG5epV4fjMGM0,6977
|
||||||
|
pip/_internal/configuration.py,sha256=dKsnJZN9r4jVsl9IcoKTU0iI9s6XZQu3FzOsqTNElk0,14076
|
||||||
|
pip/_internal/distributions/__init__.py,sha256=ydMdQRMM1DV6BdomjeP1em-YKikg90LZ9Tg5sJRhNF4,861
|
||||||
|
pip/_internal/distributions/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/distributions/__pycache__/base.cpython-38.pyc,,
|
||||||
|
pip/_internal/distributions/__pycache__/installed.cpython-38.pyc,,
|
||||||
|
pip/_internal/distributions/__pycache__/source.cpython-38.pyc,,
|
||||||
|
pip/_internal/distributions/__pycache__/wheel.cpython-38.pyc,,
|
||||||
|
pip/_internal/distributions/base.py,sha256=Js_vmU-MKOONF_u-k5vmu3vTJnrOk3cLD_rPRB8r7-w,1000
|
||||||
|
pip/_internal/distributions/installed.py,sha256=uwB2CPqseB8rPv0ICBCIB1LMs8yQnd8h-JZe9B9oOB0,434
|
||||||
|
pip/_internal/distributions/source.py,sha256=L4SEZsTtqx6F3D39P7yJDgqqrnc4dGMZr3BTWgA05jg,3514
|
||||||
|
pip/_internal/distributions/wheel.py,sha256=lWaa9l-REefNSL9E3A0zf8h2bZRLBOlTSBqHhPTYE7M,508
|
||||||
|
pip/_internal/download.py,sha256=Zd5EtNjqJct5tOzZ5DfmiR9zaWV2UbE24omoZcNsLd4,43323
|
||||||
|
pip/_internal/exceptions.py,sha256=_mDPdvO9EFMxUX4VEjzw3qic0PRqPH8EPOx__-MBNb4,10168
|
||||||
|
pip/_internal/index.py,sha256=RE8HCh8MjJPgO2EhW7hww4Jr0QWFaA3GiUgxhTPs59c,56017
|
||||||
|
pip/_internal/legacy_resolve.py,sha256=GDWmB6KtWAIcTX4gvwFrU8Xc2w4X0KBEkbW8fGU24Fk,17303
|
||||||
|
pip/_internal/locations.py,sha256=Tv1TotkC1brrTgqG8pvLhJGvwRfiDwAlXTOdzk7hYio,5045
|
||||||
|
pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
|
||||||
|
pip/_internal/models/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/candidate.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/format_control.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/index.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/link.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/search_scope.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/selection_prefs.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/__pycache__/target_python.cpython-38.pyc,,
|
||||||
|
pip/_internal/models/candidate.py,sha256=IV7B5Rj-FjQKh5Shbv8CenuNekxdpb_chrJMEID4ouU,1169
|
||||||
|
pip/_internal/models/format_control.py,sha256=ap8Swa26ocSXBxIuCvaDBRZjxdKUFuwC-bfqXQHWtKw,2250
|
||||||
|
pip/_internal/models/index.py,sha256=K59A8-hVhBM20Xkahr4dTwP7OjkJyEqXH11UwHFVgqM,1060
|
||||||
|
pip/_internal/models/link.py,sha256=fj3Hg4xrPo8ucOVyJvYrq1AgJjh56D2Z8F1liDoW-TM,6553
|
||||||
|
pip/_internal/models/search_scope.py,sha256=JxPlngW2ecVoYrF8dr2b0oYf8XrZ-yAQ1U19uEM8Lgo,3875
|
||||||
|
pip/_internal/models/selection_prefs.py,sha256=rPeif2KKjhTPXeMoQYffjqh10oWpXhdkxRDaPT1HO8k,1908
|
||||||
|
pip/_internal/models/target_python.py,sha256=d66ljdpZZtAAQsuOytiZ7yq6spCa8GOmz5Vf7uoVZT0,3820
|
||||||
|
pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_internal/operations/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/operations/__pycache__/check.cpython-38.pyc,,
|
||||||
|
pip/_internal/operations/__pycache__/freeze.cpython-38.pyc,,
|
||||||
|
pip/_internal/operations/__pycache__/prepare.cpython-38.pyc,,
|
||||||
|
pip/_internal/operations/check.py,sha256=EkjtpXpOCTvt_VG0gRnlSBBj5SGWsoVYzbAMpepI8JU,5224
|
||||||
|
pip/_internal/operations/freeze.py,sha256=rKAeXdh1HbK92Z5YtmLyil8IYkcC076lahNJMyxqbVM,9680
|
||||||
|
pip/_internal/operations/prepare.py,sha256=z27rAvMEtlpake5OI1-SIzp-EBjjwyf8PEikO0KmJ8w,11728
|
||||||
|
pip/_internal/pep425tags.py,sha256=e3VijBWZOCLV1_iqXuCvlCswbJ16Ug4eYhR3Vz5MAmk,13220
|
||||||
|
pip/_internal/pyproject.py,sha256=OlCw7pSqST68hUF_eV-YVaqJ4I7z_ROJwvgra-2C_5I,6464
|
||||||
|
pip/_internal/req/__init__.py,sha256=Y2SjAuMFsSt3dkiK8kkiQAfv8sHrjl0PAT63FKFT0tM,2364
|
||||||
|
pip/_internal/req/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/constructors.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/req_file.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/req_install.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/req_set.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/req_tracker.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/__pycache__/req_uninstall.cpython-38.pyc,,
|
||||||
|
pip/_internal/req/constructors.py,sha256=tC7fNxKrvF3gbxI2IcA6uQiXJ5sPFQvulHPQnM5Ldgg,11858
|
||||||
|
pip/_internal/req/req_file.py,sha256=VNC-G_JYy6JmGipezb9n5hAzZ470mvesSx3DBFtfIVM,14180
|
||||||
|
pip/_internal/req/req_install.py,sha256=i21e6wHfTko7mQGziFoXqPbdByZ9Bnrz_bC6ZIJOwl8,40296
|
||||||
|
pip/_internal/req/req_set.py,sha256=PaDc5EswLQhxBMFbuKbJ0frZbMNKocmA8OGqIWT-9EY,7860
|
||||||
|
pip/_internal/req/req_tracker.py,sha256=wBpDzSDSYwpUfW4K43NrEOCCp1r6stuubfLc65Y95EM,3129
|
||||||
|
pip/_internal/req/req_uninstall.py,sha256=rVOk8BRM_L9rsUUr9lmkV6Lm9N1Os7TEIDir6tT1Q7U,23105
|
||||||
|
pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_internal/utils/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/appdirs.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/deprecation.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/encoding.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/filesystem.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/glibc.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/hashes.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/logging.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/marker_files.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/misc.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/models.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/outdated.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/packaging.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/setuptools_build.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/temp_dir.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/typing.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/ui.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/__pycache__/virtualenv.cpython-38.pyc,,
|
||||||
|
pip/_internal/utils/appdirs.py,sha256=r9i0BZLK9KcvrzI5tqlw8ehRTtSehWGERFLy7YppG3g,9398
|
||||||
|
pip/_internal/utils/compat.py,sha256=4mi-czTysz5Ocuq-5K6BvISCii6_agyNwkBPNtKgYfM,9596
|
||||||
|
pip/_internal/utils/deprecation.py,sha256=zcC388qvHnBLY1GalWEYnHyh3MXHQRe4-fOoyyZeQNQ,3209
|
||||||
|
pip/_internal/utils/encoding.py,sha256=tudXCoAPe9fZvNK4cmWQs2frREZ-QuGCwF_SlTyz6cI,1218
|
||||||
|
pip/_internal/utils/filesystem.py,sha256=ojaIDvOFOtkpKme5se6X2N8ARmQxu8cxvaaI-NFqVtk,990
|
||||||
|
pip/_internal/utils/glibc.py,sha256=di3treHUThyeXCxqgRgp-72nTizWpC8skE7RLbewKv4,4295
|
||||||
|
pip/_internal/utils/hashes.py,sha256=lF1VlTk2hOqnbmbiMN6GxJHTNQEDI9RzkBCUqBgSHok,3904
|
||||||
|
pip/_internal/utils/logging.py,sha256=k-7sr-yFTLDCgcrmrErlwBp2dYMhq157vT3P-xzrB0U,12883
|
||||||
|
pip/_internal/utils/marker_files.py,sha256=B-xFm0JZnrDStnA1jbQgKfDaMdXn53PqpZhtOJ-FWCc,595
|
||||||
|
pip/_internal/utils/misc.py,sha256=3tmhB5Zojxswgg1zGdPgAdGvu2sYU6g0BLiAbc2vhZY,38796
|
||||||
|
pip/_internal/utils/models.py,sha256=b7vdfIZrobxERktz8xZ7BqYnFLxoJzkWSeuq0JO9JYI,1041
|
||||||
|
pip/_internal/utils/outdated.py,sha256=C7TK-XuCmBQ5DUpHBzq2jL-1p7DQft84foQziUyX2Ms,6292
|
||||||
|
pip/_internal/utils/packaging.py,sha256=VtiwcAAL7LBi7tGL2je7LeW4bE11KMHGCsJ1NZY5XtM,3035
|
||||||
|
pip/_internal/utils/setuptools_build.py,sha256=Jjf0MRzSG60UvDnWwWixg1rWM5dEuQ5sE8kb-5KwYFI,1239
|
||||||
|
pip/_internal/utils/temp_dir.py,sha256=0Xq5ZlOd2OOeHwKM6hGy66gnMGAbyhio7DtjLHd7DFg,5339
|
||||||
|
pip/_internal/utils/typing.py,sha256=bF73ImJzIaxLLEVwfEaSJzFGqV9LaxkQBvDULIyr1jI,1125
|
||||||
|
pip/_internal/utils/ui.py,sha256=I2F3wRhWE9aere-cpCE0g9VPvgJRRLL8OC3FxXdj6_k,13768
|
||||||
|
pip/_internal/utils/virtualenv.py,sha256=oSTrUMQUqmuXcDvQZGwV65w-hlvhBAqyQiWRxLf8fN0,891
|
||||||
|
pip/_internal/vcs/__init__.py,sha256=9p9dzJZy7PR6TkHhqr-DnJTFIo6JopLgtHjHNrt85h4,597
|
||||||
|
pip/_internal/vcs/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/__pycache__/bazaar.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/__pycache__/git.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/__pycache__/mercurial.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/__pycache__/subversion.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/__pycache__/versioncontrol.cpython-38.pyc,,
|
||||||
|
pip/_internal/vcs/bazaar.py,sha256=wI5WdFt_Mmnqcm0c7zn5wM3R44s7s28DNx5Yg7CJlSw,3182
|
||||||
|
pip/_internal/vcs/git.py,sha256=pgTaCyWNBBfz6d0AxVnsLhft2i4XRe_hSTI_Xs7nkZg,12814
|
||||||
|
pip/_internal/vcs/mercurial.py,sha256=YzJx76Q4Nveqf8s80g-AocnfpKwCoVeHy77c95aTBO4,3335
|
||||||
|
pip/_internal/vcs/subversion.py,sha256=RuQJeToLicFp2itahUftlHKjyvDFWuCWuhHfdsP9oGs,11697
|
||||||
|
pip/_internal/vcs/versioncontrol.py,sha256=NifBlL90ovO8WNzlt4r6HGlGbPqxNI5fUMfwLC-gMkE,19010
|
||||||
|
pip/_internal/wheel.py,sha256=H3bdufsutvlXcLV0t3prIOTvq9m_Uc0JkLDoISZelD8,42309
|
||||||
|
pip/_vendor/__init__.py,sha256=iip2nWwH_riYqnDnM0q4BJFrWE-XWjYfxCejJKct0WM,4654
|
||||||
|
pip/_vendor/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/appdirs.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/distro.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/ipaddress.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/pyparsing.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/retrying.cpython-38.pyc,,
|
||||||
|
pip/_vendor/__pycache__/six.cpython-38.pyc,,
|
||||||
|
pip/_vendor/appdirs.py,sha256=BENKsvcA08IpccD9345-rMrg3aXWFA1q6BFEglnHg6I,24547
|
||||||
|
pip/_vendor/cachecontrol/__init__.py,sha256=6cRPchVqkAkeUtYTSW8qCetjSqJo-GxP-n4VMVDbvmc,302
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/adapter.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/cache.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/controller.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/serialize.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/_cmd.py,sha256=URGE0KrA87QekCG3SGPatlSPT571dZTDjNa-ZXX3pDc,1295
|
||||||
|
pip/_vendor/cachecontrol/adapter.py,sha256=eBGAtVNRZgtl_Kj5JV54miqL9YND-D0JZPahwY8kFtY,4863
|
||||||
|
pip/_vendor/cachecontrol/cache.py,sha256=1fc4wJP8HYt1ycnJXeEw5pCpeBL2Cqxx6g9Fb0AYDWQ,805
|
||||||
|
pip/_vendor/cachecontrol/caches/__init__.py,sha256=-gHNKYvaeD0kOk5M74eOrsSgIKUtC6i6GfbmugGweEo,86
|
||||||
|
pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-38.pyc,,
|
||||||
|
pip/_vendor/cachecontrol/caches/file_cache.py,sha256=8vrSzzGcdfEfICago1uSFbkumNJMGLbCdEkXsmUIExw,4177
|
||||||
|
pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=HxelMpNCo-dYr2fiJDwM3hhhRmxUYtB5tXm1GpAAT4Y,856
|
||||||
|
pip/_vendor/cachecontrol/compat.py,sha256=kHNvMRdt6s_Xwqq_9qJmr9ou3wYMOMUMxPPcwNxT8Mc,695
|
||||||
|
pip/_vendor/cachecontrol/controller.py,sha256=U7g-YwizQ2O5NRgK_MZreF1ntM4E49C3PuF3od-Vwz4,13698
|
||||||
|
pip/_vendor/cachecontrol/filewrapper.py,sha256=vACKO8Llzu_ZWyjV1Fxn1MA4TGU60N5N3GSrAFdAY2Q,2533
|
||||||
|
pip/_vendor/cachecontrol/heuristics.py,sha256=BFGHJ3yQcxvZizfo90LLZ04T_Z5XSCXvFotrp7Us0sc,4070
|
||||||
|
pip/_vendor/cachecontrol/serialize.py,sha256=GebE34fgToyWwAsRPguh8hEPN6CqoG-5hRMXRsjVABQ,6954
|
||||||
|
pip/_vendor/cachecontrol/wrapper.py,sha256=sfr9YHWx-5TwNz1H5rT6QOo8ggII6v3vbEDjQFwR6wc,671
|
||||||
|
pip/_vendor/certifi/__init__.py,sha256=phsMyKTQP7MMe1wAHfhXPbQVxL3wXixOomxzNh5Cwa4,52
|
||||||
|
pip/_vendor/certifi/__main__.py,sha256=NaCn6WtWME-zzVWQ2j4zFyl8cY4knDa9CwtHNIeFPhM,53
|
||||||
|
pip/_vendor/certifi/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/certifi/__pycache__/__main__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/certifi/__pycache__/core.cpython-38.pyc,,
|
||||||
|
pip/_vendor/certifi/cacert.pem,sha256=DddOv7pQyMB8zNNgiXSSFrPVn7EN8qbe7P6h_IYyuek,282085
|
||||||
|
pip/_vendor/certifi/core.py,sha256=EuFc2BsToG5O1-qsx4BSjQ1r1-7WRtH87b1WflZOWhI,218
|
||||||
|
pip/_vendor/chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559
|
||||||
|
pip/_vendor/chardet/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/big5freq.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/big5prober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/chardistribution.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/charsetprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/cp949prober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/enums.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/escprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/escsm.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/eucjpprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/euckrfreq.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/euckrprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/euctwfreq.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/euctwprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/gb2312freq.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/gb2312prober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/hebrewprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/jisfreq.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/jpcntx.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langthaimodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/latin1prober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/mbcssm.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/sjisprober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/universaldetector.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/utf8prober.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/__pycache__/version.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254
|
||||||
|
pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757
|
||||||
|
pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411
|
||||||
|
pip/_vendor/chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787
|
||||||
|
pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110
|
||||||
|
pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
||||||
|
pip/_vendor/chardet/cli/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-38.pyc,,
|
||||||
|
pip/_vendor/chardet/cli/chardetect.py,sha256=DI8dlV3FBD0c0XA_y3sQ78z754DUv1J8n34RtDjOXNw,2774
|
||||||
|
pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590
|
||||||
|
pip/_vendor/chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134
|
||||||
|
pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855
|
||||||
|
pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661
|
||||||
|
pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950
|
||||||
|
pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510
|
||||||
|
pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749
|
||||||
|
pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546
|
||||||
|
pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748
|
||||||
|
pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621
|
||||||
|
pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747
|
||||||
|
pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715
|
||||||
|
pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754
|
||||||
|
pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838
|
||||||
|
pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777
|
||||||
|
pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643
|
||||||
|
pip/_vendor/chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839
|
||||||
|
pip/_vendor/chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948
|
||||||
|
pip/_vendor/chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688
|
||||||
|
pip/_vendor/chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345
|
||||||
|
pip/_vendor/chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592
|
||||||
|
pip/_vendor/chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290
|
||||||
|
pip/_vendor/chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102
|
||||||
|
pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370
|
||||||
|
pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413
|
||||||
|
pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012
|
||||||
|
pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481
|
||||||
|
pip/_vendor/chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657
|
||||||
|
pip/_vendor/chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546
|
||||||
|
pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774
|
||||||
|
pip/_vendor/chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485
|
||||||
|
pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766
|
||||||
|
pip/_vendor/chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242
|
||||||
|
pip/_vendor/colorama/__init__.py,sha256=lJdY6COz9uM_pXwuk9oLr0fp8H8q2RrUqN16GKabvq4,239
|
||||||
|
pip/_vendor/colorama/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/__pycache__/ansi.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/__pycache__/ansitowin32.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/__pycache__/initialise.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/__pycache__/win32.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/__pycache__/winterm.cpython-38.pyc,,
|
||||||
|
pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524
|
||||||
|
pip/_vendor/colorama/ansitowin32.py,sha256=u8QaqdqS_xYSfNkPM1eRJLHz6JMWPodaJaP0mxgHCDc,10462
|
||||||
|
pip/_vendor/colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915
|
||||||
|
pip/_vendor/colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404
|
||||||
|
pip/_vendor/colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438
|
||||||
|
pip/_vendor/distlib/__init__.py,sha256=SkHYPuEQNQF2a2Cr18rfZ-LQyDqwwizn8tJE4seXPgU,587
|
||||||
|
pip/_vendor/distlib/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/database.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/index.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/locators.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/manifest.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/markers.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/metadata.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/resources.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/scripts.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/util.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/version.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/__pycache__/wheel.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274
|
||||||
|
pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/__pycache__/misc.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971
|
||||||
|
pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647
|
||||||
|
pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617
|
||||||
|
pip/_vendor/distlib/_backport/sysconfig.py,sha256=JdJ9ztRy4Hc-b5-VS74x3nUtdEIVr_OBvMsIb8O2sjc,26964
|
||||||
|
pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628
|
||||||
|
pip/_vendor/distlib/compat.py,sha256=xdNZmqFN5HwF30HjRn5M415pcC2kgXRBXn767xS8v-M,41404
|
||||||
|
pip/_vendor/distlib/database.py,sha256=-KJH63AJ7hqjLtGCwOTrionhKr2Vsytdwkjyo8UdEco,51029
|
||||||
|
pip/_vendor/distlib/index.py,sha256=SXKzpQCERctxYDMp_OLee2f0J0e19ZhGdCIoMlUfUQM,21066
|
||||||
|
pip/_vendor/distlib/locators.py,sha256=bqzEWP3Ad8UE3D1rmzW1pgzVTKkY4rDUA_EWIVYli54,51807
|
||||||
|
pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811
|
||||||
|
pip/_vendor/distlib/markers.py,sha256=6Ac3cCfFBERexiESWIOXmg-apIP8l2esafNSX3KMy-8,4387
|
||||||
|
pip/_vendor/distlib/metadata.py,sha256=OhbCKmf5lswE8unWBopI1hj7tRpHp4ZbFvU4d6aAEMM,40234
|
||||||
|
pip/_vendor/distlib/resources.py,sha256=2FGv0ZHF14KXjLIlL0R991lyQQGcewOS4mJ-5n-JVnc,10766
|
||||||
|
pip/_vendor/distlib/scripts.py,sha256=W24OXnZUmgRX_XtDrVZdfc-Frf4X4_cybvhP87iR-QU,16290
|
||||||
|
pip/_vendor/distlib/t32.exe,sha256=y8Yu3yao6zZrELYGIisxkhnQLOAOvpiXft8_Y9I8vyU,92672
|
||||||
|
pip/_vendor/distlib/t64.exe,sha256=qt1MpKO2NLqU8t1lD1T0frfFm5zwHm3mz7pLvmJ2kMI,102912
|
||||||
|
pip/_vendor/distlib/util.py,sha256=TvdqcwncBHaQbNw0jkXRvSZvt1fbdgE8HQW5wJwzvv4,59790
|
||||||
|
pip/_vendor/distlib/version.py,sha256=_n7F6juvQGAcn769E_SHa7fOcf5ERlEVymJ_EjPRwGw,23391
|
||||||
|
pip/_vendor/distlib/w32.exe,sha256=f98Etq_1giFgIQxrEh-sOAeO8qVtWqpDbGxdUucJ6pw,89088
|
||||||
|
pip/_vendor/distlib/w64.exe,sha256=6Hs-Wn0vXBHA6Qd76IlalqYXqrN80DCPpdoeIQzPRms,99840
|
||||||
|
pip/_vendor/distlib/wheel.py,sha256=2lviV6L4IvTP5DRkKE0HGpClvdoTJQHZJLfTQ6dfn2A,40437
|
||||||
|
pip/_vendor/distro.py,sha256=X2So5kjrRKyMbQJ90Xgy93HU5eFtujCzKaYNeoy1k1c,43251
|
||||||
|
pip/_vendor/html5lib/__init__.py,sha256=Ztrn7UvF-wIFAgRBBa0ML-Gu5AffH3BPX_INJx4SaBI,1162
|
||||||
|
pip/_vendor/html5lib/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/_inputstream.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/_utils.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/constants.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/html5parser.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/__pycache__/serializer.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/_ihatexml.py,sha256=3LBtJMlzgwM8vpQiU1TvGmEEmNH72sV0yD8yS53y07A,16705
|
||||||
|
pip/_vendor/html5lib/_inputstream.py,sha256=bPUWcAfJScK4xkjQQaG_HsI2BvEVbFvI0AsodDYPQj0,32552
|
||||||
|
pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580
|
||||||
|
pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289
|
||||||
|
pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/_trie/__pycache__/py.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/_trie/_base.py,sha256=CaybYyMro8uERQYjby2tTeSUatnWDfWroUN9N7ety5w,1013
|
||||||
|
pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178
|
||||||
|
pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775
|
||||||
|
pip/_vendor/html5lib/_utils.py,sha256=ismpASeqa2jqEPQjHUj8vReAf7yIoKnvLN5fuOw6nv0,4015
|
||||||
|
pip/_vendor/html5lib/constants.py,sha256=4lmZWLtEPRLnl8NzftOoYTJdo6jpeMtP6dqQC0g_bWQ,83518
|
||||||
|
pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/base.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/lint.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=lViZc2JMCclXi_5gduvmdzrRxtO5Xo9ONnbHBVCsykU,919
|
||||||
|
pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286
|
||||||
|
pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=egDXUEHXmAG9504xz0K6ALDgYkvUrC2q15YUVeNlVQg,2945
|
||||||
|
pip/_vendor/html5lib/filters/lint.py,sha256=jk6q56xY0ojiYfvpdP-OZSm9eTqcAdRqhCoPItemPYA,3643
|
||||||
|
pip/_vendor/html5lib/filters/optionaltags.py,sha256=8lWT75J0aBOHmPgfmqTHSfPpPMp01T84NKu0CRedxcE,10588
|
||||||
|
pip/_vendor/html5lib/filters/sanitizer.py,sha256=4ON02KNjuqda1lCw5_JCUZxb0BzWR5M7ON84dtJ7dm0,26248
|
||||||
|
pip/_vendor/html5lib/filters/whitespace.py,sha256=8eWqZxd4UC4zlFGW6iyY6f-2uuT8pOCSALc3IZt7_t4,1214
|
||||||
|
pip/_vendor/html5lib/html5parser.py,sha256=g5g2ezkusHxhi7b23vK_-d6K6BfIJRbqIQmvQ9z4EgI,118963
|
||||||
|
pip/_vendor/html5lib/serializer.py,sha256=yfcfBHse2wDs6ojxn-kieJjLT5s1ipilQJ0gL3-rJis,15758
|
||||||
|
pip/_vendor/html5lib/treeadapters/__init__.py,sha256=A0rY5gXIe4bJOiSGRO_j_tFhngRBO8QZPzPtPw5dFzo,679
|
||||||
|
pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treeadapters/genshi.py,sha256=CH27pAsDKmu4ZGkAUrwty7u0KauGLCZRLPMzaO3M5vo,1715
|
||||||
|
pip/_vendor/html5lib/treeadapters/sax.py,sha256=BKS8woQTnKiqeffHsxChUqL4q2ZR_wb5fc9MJ3zQC8s,1776
|
||||||
|
pip/_vendor/html5lib/treebuilders/__init__.py,sha256=AysSJyvPfikCMMsTVvaxwkgDieELD5dfR8FJIAuq7hY,3592
|
||||||
|
pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treebuilders/base.py,sha256=wQGp5yy22TNG8tJ6aREe4UUeTR7A99dEz0BXVaedWb4,14579
|
||||||
|
pip/_vendor/html5lib/treebuilders/dom.py,sha256=22whb0C71zXIsai5mamg6qzBEiigcBIvaDy4Asw3at0,8925
|
||||||
|
pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764
|
||||||
|
pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=9V0dXxbJYYq-Skgb5-_OL2NkVYpjioEb4CHajo0e9yI,14122
|
||||||
|
pip/_vendor/html5lib/treewalkers/__init__.py,sha256=yhXxHpjlSqfQyUag3v8-vWjMPriFBU8YRAPNpDgBTn8,5714
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-38.pyc,,
|
||||||
|
pip/_vendor/html5lib/treewalkers/base.py,sha256=ouiOsuSzvI0KgzdWP8PlxIaSNs9falhbiinAEc_UIJY,7476
|
||||||
|
pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413
|
||||||
|
pip/_vendor/html5lib/treewalkers/etree.py,sha256=sz1o6mmE93NQ53qJFDO7HKyDtuwgK-Ay3qSFZPC6u00,4550
|
||||||
|
pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309
|
||||||
|
pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309
|
||||||
|
pip/_vendor/idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58
|
||||||
|
pip/_vendor/idna/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/codec.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/core.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/idnadata.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/intranges.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/package_data.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/__pycache__/uts46data.cpython-38.pyc,,
|
||||||
|
pip/_vendor/idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299
|
||||||
|
pip/_vendor/idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232
|
||||||
|
pip/_vendor/idna/core.py,sha256=JDCZZ_PLESqIgEbU8mPyoEufWwoOiIqygA17-QZIe3s,11733
|
||||||
|
pip/_vendor/idna/idnadata.py,sha256=HXaPFw6_YAJ0qppACPu0YLAULtRs3QovRM_CCZHGdY0,40899
|
||||||
|
pip/_vendor/idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749
|
||||||
|
pip/_vendor/idna/package_data.py,sha256=kIzeKKXEouXLR4srqwf9Q3zv-NffKSOz5aSDOJARPB0,21
|
||||||
|
pip/_vendor/idna/uts46data.py,sha256=oLyNZ1pBaiBlj9zFzLFRd_P7J8MkRcgDisjExZR_4MY,198292
|
||||||
|
pip/_vendor/ipaddress.py,sha256=2OgbkeAD2rLkcXqbcvof3J5R7lRwjNLoBySyTkBtKnc,79852
|
||||||
|
pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371
|
||||||
|
pip/_vendor/lockfile/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/__pycache__/linklockfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652
|
||||||
|
pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096
|
||||||
|
pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090
|
||||||
|
pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506
|
||||||
|
pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616
|
||||||
|
pip/_vendor/msgpack/__init__.py,sha256=TF3o2_Ao3xbsvpOlmVZdthtsb7TkMW9seSJkXlW0dHE,1630
|
||||||
|
pip/_vendor/msgpack/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/msgpack/__pycache__/_version.cpython-38.pyc,,
|
||||||
|
pip/_vendor/msgpack/__pycache__/exceptions.cpython-38.pyc,,
|
||||||
|
pip/_vendor/msgpack/__pycache__/fallback.cpython-38.pyc,,
|
||||||
|
pip/_vendor/msgpack/_version.py,sha256=ldul7tIj_IHxvYxbEiEX1QhElrhQsA2ikYSM987iw1U,20
|
||||||
|
pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
|
||||||
|
pip/_vendor/msgpack/fallback.py,sha256=-FKXOBCF4CUs9QEOqAlssI-IZA0jBRa27VieFCngMC4,37491
|
||||||
|
pip/_vendor/packaging/__about__.py,sha256=Wg0-hNgTU2_lBZcGBh5pm1R9yroQ3rv-X0rig8KjA6o,744
|
||||||
|
pip/_vendor/packaging/__init__.py,sha256=6enbp5XgRfjBjsI9-bn00HjHf5TH21PDMOKkJW8xw-w,562
|
||||||
|
pip/_vendor/packaging/__pycache__/__about__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/_compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/_structures.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/markers.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/requirements.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/specifiers.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/utils.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/__pycache__/version.cpython-38.pyc,,
|
||||||
|
pip/_vendor/packaging/_compat.py,sha256=Ugdm-qcneSchW25JrtMIKgUxfEEBcCAz6WrEeXeqz9o,865
|
||||||
|
pip/_vendor/packaging/_structures.py,sha256=pVd90XcXRGwpZRB_qdFuVEibhCHpX_bL5zYr9-N0mc8,1416
|
||||||
|
pip/_vendor/packaging/markers.py,sha256=-QjvJkhSJBxBogO9J_EpPQudHaaLV3rgVYsBDqn-ZLc,8234
|
||||||
|
pip/_vendor/packaging/requirements.py,sha256=grcnFU8x7KD230JaFLXtWl3VClLuOmsOy4c-m55tOWs,4700
|
||||||
|
pip/_vendor/packaging/specifiers.py,sha256=0ZzQpcUnvrQ6LjR-mQRLzMr8G6hdRv-mY0VSf_amFtI,27778
|
||||||
|
pip/_vendor/packaging/utils.py,sha256=VaTC0Ei7zO2xl9ARiWmz2YFLFt89PuuhLbAlXMyAGms,1520
|
||||||
|
pip/_vendor/packaging/version.py,sha256=Npdwnb8OHedj_2L86yiUqscujb7w_i5gmSK1PhOAFzg,11978
|
||||||
|
pip/_vendor/pep517/__init__.py,sha256=nOY747zTld3oTdEetBG6DWxEcZXTeOQk0aHvbR-sa5w,84
|
||||||
|
pip/_vendor/pep517/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/_in_process.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/build.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/check.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/colorlog.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/envbuild.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/__pycache__/wrappers.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pep517/_in_process.py,sha256=xMY2kLutkjCti5WqTmKOLRRL3o8Ds_k-fObFyuMv1tk,6061
|
||||||
|
pip/_vendor/pep517/build.py,sha256=-n8PT-ugS1TdqoTUY1vatDQjrLtx48K_-Quu2MuQBiA,2699
|
||||||
|
pip/_vendor/pep517/check.py,sha256=Lu7nMdYu1JVV58fE3hv-d_avTy5h0yO9LsIzAt82Clk,5885
|
||||||
|
pip/_vendor/pep517/colorlog.py,sha256=Tk9AuYm_cLF3BKTBoSTJt9bRryn0aFojIQOwbfVUTxQ,4098
|
||||||
|
pip/_vendor/pep517/compat.py,sha256=4SFG4QN-cNj8ebSa0wV0HUtEEQWwmbok2a0uk1gYEOM,631
|
||||||
|
pip/_vendor/pep517/envbuild.py,sha256=9-u4KffexPMEm52rTaIjEOxsCAd2DMByxzv5H566QLw,5763
|
||||||
|
pip/_vendor/pep517/wrappers.py,sha256=9dZn-q7F5KyQKUJMie2uKwur2FG0CLXz_kLZzkJOhZc,5912
|
||||||
|
pip/_vendor/pkg_resources/__init__.py,sha256=ZVHzk7ZiFIIgE2RTJj8F7wwjdMGrAngMWtQo-rGNsm4,107910
|
||||||
|
pip/_vendor/pkg_resources/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562
|
||||||
|
pip/_vendor/progress/__init__.py,sha256=fcbQQXo5np2CoQyhSH5XprkicwLZNLePR3uIahznSO0,4857
|
||||||
|
pip/_vendor/progress/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/progress/__pycache__/bar.cpython-38.pyc,,
|
||||||
|
pip/_vendor/progress/__pycache__/counter.cpython-38.pyc,,
|
||||||
|
pip/_vendor/progress/__pycache__/spinner.cpython-38.pyc,,
|
||||||
|
pip/_vendor/progress/bar.py,sha256=QuDuVNcmXgpxtNtxO0Fq72xKigxABaVmxYGBw4J3Z_E,2854
|
||||||
|
pip/_vendor/progress/counter.py,sha256=MznyBrvPWrOlGe4MZAlGUb9q3aODe6_aNYeAE_VNoYA,1372
|
||||||
|
pip/_vendor/progress/spinner.py,sha256=k8JbDW94T0-WXuXfxZIFhdoNPYp3jfnpXqBnfRv5fGs,1380
|
||||||
|
pip/_vendor/pyparsing.py,sha256=sxGUe_YcWBB5ZoHec0m1iJtgcj4iKv_SGfdA_zVCYII,245385
|
||||||
|
pip/_vendor/pytoml/__init__.py,sha256=W_SKx36Hsew-Fty36BOpreLm4uF4V_Tgkm_z9rIoOE8,127
|
||||||
|
pip/_vendor/pytoml/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/__pycache__/core.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/__pycache__/parser.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/__pycache__/test.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/__pycache__/utils.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/__pycache__/writer.cpython-38.pyc,,
|
||||||
|
pip/_vendor/pytoml/core.py,sha256=9CrLLTs1PdWjEwRnYzt_i4dhHcZvGxs_GsMlYAX3iY4,509
|
||||||
|
pip/_vendor/pytoml/parser.py,sha256=2tDXkldqPQJhyadXzL2rGhVbjUyBNeXXhaEfncHl2iQ,10326
|
||||||
|
pip/_vendor/pytoml/test.py,sha256=2nQs4aX3XQEaaQCx6x_OJTS2Hb0_IiTZRqNOeDmLCzo,1021
|
||||||
|
pip/_vendor/pytoml/utils.py,sha256=JCLHx77Hu1R3F-bRgiROIiKyCzLwyebnp5P35cRJxWs,1665
|
||||||
|
pip/_vendor/pytoml/writer.py,sha256=WbNNQg3sh_V-s3kt88LkNNbxEq6pPDdhRE-daJzArcI,3198
|
||||||
|
pip/_vendor/requests/__init__.py,sha256=ONVsH6kJuPTV9nf-XVoubWsVX3qVtjCyju42kTW6Uug,4074
|
||||||
|
pip/_vendor/requests/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/__version__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/_internal_utils.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/adapters.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/api.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/auth.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/certs.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/cookies.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/exceptions.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/help.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/hooks.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/models.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/packages.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/sessions.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/status_codes.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/structures.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__pycache__/utils.cpython-38.pyc,,
|
||||||
|
pip/_vendor/requests/__version__.py,sha256=Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc,436
|
||||||
|
pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096
|
||||||
|
pip/_vendor/requests/adapters.py,sha256=e-bmKEApNVqFdylxuMJJfiaHdlmS_zhWhIMEzlHvGuc,21548
|
||||||
|
pip/_vendor/requests/api.py,sha256=fbUo11QoLOoNgWU6FfvNz8vMj9bE_cMmICXBa7TZHJs,6271
|
||||||
|
pip/_vendor/requests/auth.py,sha256=QB2-cSUj1jrvWZfPXttsZpyAacQgtKLVk14vQW9TpSE,10206
|
||||||
|
pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465
|
||||||
|
pip/_vendor/requests/compat.py,sha256=FZX4Q_EMKiMnhZpZ3g_gOsT-j2ca9ij2gehDx1cwYeo,1941
|
||||||
|
pip/_vendor/requests/cookies.py,sha256=Y-bKX6TvW3FnYlE6Au0SXtVVWcaNdFvuAwQxw-G0iTI,18430
|
||||||
|
pip/_vendor/requests/exceptions.py,sha256=-mLam3TAx80V09EaH3H-ZxR61eAVuLRZ8zgBBSLjK44,3197
|
||||||
|
pip/_vendor/requests/help.py,sha256=SJPVcoXeo7KfK4AxJN5eFVQCjr0im87tU2n7ubLsksU,3578
|
||||||
|
pip/_vendor/requests/hooks.py,sha256=QReGyy0bRcr5rkwCuObNakbYsc7EkiKeBwG4qHekr2Q,757
|
||||||
|
pip/_vendor/requests/models.py,sha256=6s-37iAqXVptq8z7U_LoH_pbIPrCQUm_Z8QuIGE29Q0,34275
|
||||||
|
pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695
|
||||||
|
pip/_vendor/requests/sessions.py,sha256=DjbCotDW6xSAaBsjbW-L8l4N0UcwmrxVNgSrZgIjGWM,29332
|
||||||
|
pip/_vendor/requests/status_codes.py,sha256=XWlcpBjbCtq9sSqpH9_KKxgnLTf9Z__wCWolq21ySlg,4129
|
||||||
|
pip/_vendor/requests/structures.py,sha256=zoP8qly2Jak5e89HwpqjN1z2diztI-_gaqts1raJJBc,2981
|
||||||
|
pip/_vendor/requests/utils.py,sha256=LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A,30049
|
||||||
|
pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972
|
||||||
|
pip/_vendor/six.py,sha256=h9jch2pS86y4R36pKRS3LOYUCVFNIJMRwjZ4fJDtJ44,32452
|
||||||
|
pip/_vendor/urllib3/__init__.py,sha256=dW1kWCz7bYGr-1q7xbDvJ_0_GwfyJtWq4VaLIzMcviA,2721
|
||||||
|
pip/_vendor/urllib3/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/_collections.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/connection.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/connectionpool.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/exceptions.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/fields.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/filepost.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/poolmanager.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/request.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/__pycache__/response.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/_collections.py,sha256=-CAKsDE-WdubAjlBSZLx7b0e7WKenaNGwWvGLDEF1TM,10746
|
||||||
|
pip/_vendor/urllib3/connection.py,sha256=hdUK2hwFNWlKxpm7JbY_YxGYJWbe6s0AYUSt9wguHk0,15001
|
||||||
|
pip/_vendor/urllib3/connectionpool.py,sha256=jkmLBXUD8wB0exYjDoEsg_cXVZUv-iDbhC3vAUUH82Q,35307
|
||||||
|
pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=lhYXvB5_oGKSeurX7za3XhcGyERvNjXRQ3eJp2GmQ3M,717
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=6ZRejHBpquHtJaXPDm0cBsEwOBe2l9bTnDvVzd0HwJw,17576
|
||||||
|
pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=Umy5u-3Z957GirdapnicXVOpHaM4xdOZABJuJxfaeJA,12162
|
||||||
|
pip/_vendor/urllib3/contrib/appengine.py,sha256=VvDpkc5gf9dTXNxXmyG1mPdON_3DrYG_eW4uOqN98oQ,10938
|
||||||
|
pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=5ZpMF7N9B6NEjVU-r-xjDOV_-hkNvsDoNc84J2yqauI,4459
|
||||||
|
pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=raR9jRVPK485CjBp9emmWfoZIyMA1b3vcYJ2-CLg03A,16468
|
||||||
|
pip/_vendor/urllib3/contrib/securetransport.py,sha256=IfPZ2wA3x3NXxHjKr--Q7Xz4A37ZSyWHn_1WvGxvTKQ,32826
|
||||||
|
pip/_vendor/urllib3/contrib/socks.py,sha256=ZJ7lEUlErvAgQkd4xo_xvfx-acym2tDtJqyE0It4VRI,7012
|
||||||
|
pip/_vendor/urllib3/exceptions.py,sha256=rFeIfBNKC8KJ61ux-MtJyJlEC9G9ggkmCeF751JwVR4,6604
|
||||||
|
pip/_vendor/urllib3/fields.py,sha256=0EYvHsgnUflhb-UhMMVjAwiRp1InCe-uy1McDD6nhPU,8575
|
||||||
|
pip/_vendor/urllib3/filepost.py,sha256=40CROlpRKVBpFUkD0R6wJf_PpvbcRQRFUu0OOQlFkKM,2436
|
||||||
|
pip/_vendor/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109
|
||||||
|
pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/__pycache__/six.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/backports/makefile.py,sha256=so2z9BiNM8kh38Ve5tomQP_mp2_ubEqzdlCpLZKzzCI,1456
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__init__.py,sha256=Y2dGb08ZJuqIrAqfmrGMpNi2zjzKVTxfeZ8iF-Db338,1562
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/_mixin.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/abnf_regexp.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/api.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/builder.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/compat.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/exceptions.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/iri.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/misc.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/normalizers.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/parseresult.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/uri.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/__pycache__/validators.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/_mixin.py,sha256=fnxYtuAQwo6RlGZzsawcICxUhLqQ_Tyob_Kamy-92QU,13214
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/abnf_regexp.py,sha256=0cPq-UrpihByHkDsZd_7p6ruqYh2MuqCqIjc67PFHCs,9081
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/api.py,sha256=5wYJ3IvszICEY5cgeLTtLRWCyc9mJhgZ_4QZVtYoSKI,3887
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/builder.py,sha256=BFbuFFZUcAnGJzvtQ0n7ffHqgG-CBf-Xi_6aU68n-OA,9577
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/compat.py,sha256=jnSGxU4M13w5vuLldgKmXmpxcZBxmUwg8dBzNQEWzYc,1513
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/exceptions.py,sha256=dadexlPfwsYbcbFdbR1lp5WyuF8PMsSmx2gA3nrger4,3775
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/iri.py,sha256=UWHdKI_aOiK_SC3oE_nTrxsgiS8shJQRkmKn_AAxyms,5483
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/misc.py,sha256=MbL7MgqbTef5VddkaaPKkLpe0hPRNCEx0-kKhJfRyk8,4094
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/normalizers.py,sha256=L6DOXDi7vZ_BDoXS8IUl9CW21E-siDJluK2mmImljtY,5259
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/parseresult.py,sha256=cdmsiBExo5o2A2jWI-TtGFeXTPenyXQbGf5Nmv7nh6M,14654
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/uri.py,sha256=r_KhSNmvWfoBGRPBf1dnlwWnCwuM-JHFtGa-6DH_jH4,5227
|
||||||
|
pip/_vendor/urllib3/packages/rfc3986/validators.py,sha256=jbJGdqUcoeSD2E_gmuFbrujLsVtEpjhJg7oxpiFeyY4,13854
|
||||||
|
pip/_vendor/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
|
||||||
|
pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py,sha256=WBVbxQBojNAxfZwNavkox3BgJiMA9BJmm-_fwd0jD_o,688
|
||||||
|
pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=E-9J-kAaUn76WMZ4PpzKUxM4C3yjY7mopOpbPIy3Dso,5700
|
||||||
|
pip/_vendor/urllib3/poolmanager.py,sha256=GrUSFRcQbhxPMRlePxOUbXvmsOgGTiNrxQpICmXd30I,17050
|
||||||
|
pip/_vendor/urllib3/request.py,sha256=OfelFYzPnxGlU3amEz9uBLjCBOriwgJh4QC_aW9SF3U,5991
|
||||||
|
pip/_vendor/urllib3/response.py,sha256=GxiW6sI0NZgdlDL4hzPfKDZmH7OFTiGZosaXu2DMG7k,27171
|
||||||
|
pip/_vendor/urllib3/util/__init__.py,sha256=P-VlwgBFaga7i1BTWPNHGK4TN-SES0VoexbeIPIKs_0,1082
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/connection.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/queue.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/request.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/response.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/retry.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/timeout.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/url.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/__pycache__/wait.cpython-38.pyc,,
|
||||||
|
pip/_vendor/urllib3/util/connection.py,sha256=-AyqcRTuNUHuo5ndtsU0Og_nMyCGATC-kYqOUdBHwIQ,4639
|
||||||
|
pip/_vendor/urllib3/util/queue.py,sha256=myTX3JDHntglKQNBf3b6dasHH-uF-W59vzGSQiFdAfI,497
|
||||||
|
pip/_vendor/urllib3/util/request.py,sha256=_pmOHJWpOHk7w8BDz6WZkmMunNmplEPBmh2-5bl3Do4,3832
|
||||||
|
pip/_vendor/urllib3/util/response.py,sha256=028PNXDZhwBtnm2uXvnAHi_l9_AAGrAMH2Igh2AbgWg,2586
|
||||||
|
pip/_vendor/urllib3/util/retry.py,sha256=1m-XI9_LORj1FLbwOzgWC6pTt2deycyGl4BWRI9r4Zc,15150
|
||||||
|
pip/_vendor/urllib3/util/ssl_.py,sha256=bYkkcBpWIbtFL3WCiX2pgTRjS2Ukdpv0oTtHHK0g8Mw,13798
|
||||||
|
pip/_vendor/urllib3/util/timeout.py,sha256=dTF-iEp8DZiPd-8g2X7CVucDoBWJBn221T8ghg-tjkQ,9768
|
||||||
|
pip/_vendor/urllib3/util/url.py,sha256=DyEkFjkLo4C82N1elJgpePfccgLb6IHMjBTnPgs9QmU,9827
|
||||||
|
pip/_vendor/urllib3/util/wait.py,sha256=p4BZo_Ukp5JF0Dn6jro7cUfqIjnU6WFtuoA6poaV5Jk,5403
|
||||||
|
pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579
|
||||||
|
pip/_vendor/webencodings/__pycache__/__init__.cpython-38.pyc,,
|
||||||
|
pip/_vendor/webencodings/__pycache__/labels.cpython-38.pyc,,
|
||||||
|
pip/_vendor/webencodings/__pycache__/mklabels.cpython-38.pyc,,
|
||||||
|
pip/_vendor/webencodings/__pycache__/tests.cpython-38.pyc,,
|
||||||
|
pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-38.pyc,,
|
||||||
|
pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979
|
||||||
|
pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305
|
||||||
|
pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563
|
||||||
|
pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307
|
@ -0,0 +1,6 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.33.6)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
[console_scripts]
|
||||||
|
pip = pip._internal:main
|
||||||
|
pip3 = pip._internal:main
|
||||||
|
pip3.7 = pip._internal:main
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1 @@
|
|||||||
|
__version__ = "19.2.3"
|
@ -0,0 +1,19 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# If we are running from a wheel, add the wheel to sys.path
|
||||||
|
# This allows the usage python pip-*.whl/pip install pip-*.whl
|
||||||
|
if __package__ == '':
|
||||||
|
# __file__ is pip-*.whl/pip/__main__.py
|
||||||
|
# first dirname call strips of '/__main__.py', second strips off '/pip'
|
||||||
|
# Resulting path is the name of the wheel itself
|
||||||
|
# Add that to sys.path so we can import pip
|
||||||
|
path = os.path.dirname(os.path.dirname(__file__))
|
||||||
|
sys.path.insert(0, path)
|
||||||
|
|
||||||
|
from pip._internal import main as _main # isort:skip # noqa
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(_main())
|
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import locale
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# 2016-06-17 barry@debian.org: urllib3 1.14 added optional support for socks,
|
||||||
|
# but if invoked (i.e. imported), it will issue a warning to stderr if socks
|
||||||
|
# isn't available. requests unconditionally imports urllib3's socks contrib
|
||||||
|
# module, triggering this warning. The warning breaks DEP-8 tests (because of
|
||||||
|
# the stderr output) and is just plain annoying in normal usage. I don't want
|
||||||
|
# to add socks as yet another dependency for pip, nor do I want to allow-stderr
|
||||||
|
# in the DEP-8 tests, so just suppress the warning. pdb tells me this has to
|
||||||
|
# be done before the import of pip.vcs.
|
||||||
|
from pip._vendor.urllib3.exceptions import DependencyWarning
|
||||||
|
warnings.filterwarnings("ignore", category=DependencyWarning) # noqa
|
||||||
|
|
||||||
|
# We want to inject the use of SecureTransport as early as possible so that any
|
||||||
|
# references or sessions or what have you are ensured to have it, however we
|
||||||
|
# only want to do this in the case that we're running on macOS and the linked
|
||||||
|
# OpenSSL is too old to handle TLSv1.2
|
||||||
|
try:
|
||||||
|
import ssl
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# Checks for OpenSSL 1.0.1 on MacOS
|
||||||
|
if sys.platform == "darwin" and ssl.OPENSSL_VERSION_NUMBER < 0x1000100f:
|
||||||
|
try:
|
||||||
|
from pip._vendor.urllib3.contrib import securetransport
|
||||||
|
except (ImportError, OSError):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
securetransport.inject_into_urllib3()
|
||||||
|
|
||||||
|
from pip._internal.cli.autocompletion import autocomplete
|
||||||
|
from pip._internal.cli.main_parser import parse_command
|
||||||
|
from pip._internal.commands import commands_dict
|
||||||
|
from pip._internal.exceptions import PipError
|
||||||
|
from pip._internal.utils import deprecation
|
||||||
|
from pip._vendor.urllib3.exceptions import InsecureRequestWarning
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# Hide the InsecureRequestWarning from urllib3
|
||||||
|
warnings.filterwarnings("ignore", category=InsecureRequestWarning)
|
||||||
|
|
||||||
|
|
||||||
|
def main(args=None):
|
||||||
|
if args is None:
|
||||||
|
args = sys.argv[1:]
|
||||||
|
|
||||||
|
# Configure our deprecation warnings to be sent through loggers
|
||||||
|
deprecation.install_warning_logger()
|
||||||
|
|
||||||
|
autocomplete()
|
||||||
|
|
||||||
|
try:
|
||||||
|
cmd_name, cmd_args = parse_command(args)
|
||||||
|
except PipError as exc:
|
||||||
|
sys.stderr.write("ERROR: %s" % exc)
|
||||||
|
sys.stderr.write(os.linesep)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Needed for locale.getpreferredencoding(False) to work
|
||||||
|
# in pip._internal.utils.encoding.auto_decode
|
||||||
|
try:
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except locale.Error as e:
|
||||||
|
# setlocale can apparently crash if locale are uninitialized
|
||||||
|
logger.debug("Ignoring error %s when setting locale", e)
|
||||||
|
command = commands_dict[cmd_name](isolated=("--isolated" in cmd_args))
|
||||||
|
return command.main(cmd_args)
|
@ -0,0 +1,218 @@
|
|||||||
|
"""Build Environment used for isolation during sdist building
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import textwrap
|
||||||
|
from collections import OrderedDict
|
||||||
|
from distutils.sysconfig import get_python_lib
|
||||||
|
from sysconfig import get_paths
|
||||||
|
|
||||||
|
from pip._vendor.pkg_resources import Requirement, VersionConflict, WorkingSet
|
||||||
|
|
||||||
|
from pip import __file__ as pip_location
|
||||||
|
from pip._internal.utils.misc import call_subprocess
|
||||||
|
from pip._internal.utils.temp_dir import TempDirectory
|
||||||
|
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||||
|
from pip._internal.utils.ui import open_spinner
|
||||||
|
|
||||||
|
if MYPY_CHECK_RUNNING:
|
||||||
|
from typing import Tuple, Set, Iterable, Optional, List
|
||||||
|
from pip._internal.index import PackageFinder
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class _Prefix:
|
||||||
|
|
||||||
|
def __init__(self, path):
|
||||||
|
# type: (str) -> None
|
||||||
|
self.path = path
|
||||||
|
self.setup = False
|
||||||
|
self.bin_dir = get_paths(
|
||||||
|
'nt' if os.name == 'nt' else 'posix_prefix',
|
||||||
|
vars={'base': path, 'platbase': path}
|
||||||
|
)['scripts']
|
||||||
|
# Note: prefer distutils' sysconfig to get the
|
||||||
|
# library paths so PyPy is correctly supported.
|
||||||
|
purelib = get_python_lib(plat_specific=False, prefix=path)
|
||||||
|
platlib = get_python_lib(plat_specific=True, prefix=path)
|
||||||
|
if purelib == platlib:
|
||||||
|
self.lib_dirs = [purelib]
|
||||||
|
else:
|
||||||
|
self.lib_dirs = [purelib, platlib]
|
||||||
|
|
||||||
|
|
||||||
|
class BuildEnvironment(object):
|
||||||
|
"""Creates and manages an isolated environment to install build deps
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# type: () -> None
|
||||||
|
self._temp_dir = TempDirectory(kind="build-env")
|
||||||
|
self._temp_dir.create()
|
||||||
|
|
||||||
|
self._prefixes = OrderedDict((
|
||||||
|
(name, _Prefix(os.path.join(self._temp_dir.path, name)))
|
||||||
|
for name in ('normal', 'overlay')
|
||||||
|
))
|
||||||
|
|
||||||
|
self._bin_dirs = [] # type: List[str]
|
||||||
|
self._lib_dirs = [] # type: List[str]
|
||||||
|
for prefix in reversed(list(self._prefixes.values())):
|
||||||
|
self._bin_dirs.append(prefix.bin_dir)
|
||||||
|
self._lib_dirs.extend(prefix.lib_dirs)
|
||||||
|
|
||||||
|
# Customize site to:
|
||||||
|
# - ensure .pth files are honored
|
||||||
|
# - prevent access to system site packages
|
||||||
|
system_sites = {
|
||||||
|
os.path.normcase(site) for site in (
|
||||||
|
get_python_lib(plat_specific=False),
|
||||||
|
get_python_lib(plat_specific=True),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
self._site_dir = os.path.join(self._temp_dir.path, 'site')
|
||||||
|
if not os.path.exists(self._site_dir):
|
||||||
|
os.mkdir(self._site_dir)
|
||||||
|
with open(os.path.join(self._site_dir, 'sitecustomize.py'), 'w') as fp:
|
||||||
|
fp.write(textwrap.dedent(
|
||||||
|
'''
|
||||||
|
import os, site, sys
|
||||||
|
|
||||||
|
# First, drop system-sites related paths.
|
||||||
|
original_sys_path = sys.path[:]
|
||||||
|
known_paths = set()
|
||||||
|
for path in {system_sites!r}:
|
||||||
|
site.addsitedir(path, known_paths=known_paths)
|
||||||
|
system_paths = set(
|
||||||
|
os.path.normcase(path)
|
||||||
|
for path in sys.path[len(original_sys_path):]
|
||||||
|
)
|
||||||
|
original_sys_path = [
|
||||||
|
path for path in original_sys_path
|
||||||
|
if os.path.normcase(path) not in system_paths
|
||||||
|
]
|
||||||
|
sys.path = original_sys_path
|
||||||
|
|
||||||
|
# Second, add lib directories.
|
||||||
|
# ensuring .pth file are processed.
|
||||||
|
for path in {lib_dirs!r}:
|
||||||
|
assert not path in sys.path
|
||||||
|
site.addsitedir(path)
|
||||||
|
'''
|
||||||
|
).format(system_sites=system_sites, lib_dirs=self._lib_dirs))
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
self._save_env = {
|
||||||
|
name: os.environ.get(name, None)
|
||||||
|
for name in ('PATH', 'PYTHONNOUSERSITE', 'PYTHONPATH')
|
||||||
|
}
|
||||||
|
|
||||||
|
path = self._bin_dirs[:]
|
||||||
|
old_path = self._save_env['PATH']
|
||||||
|
if old_path:
|
||||||
|
path.extend(old_path.split(os.pathsep))
|
||||||
|
|
||||||
|
pythonpath = [self._site_dir]
|
||||||
|
|
||||||
|
os.environ.update({
|
||||||
|
'PATH': os.pathsep.join(path),
|
||||||
|
'PYTHONNOUSERSITE': '1',
|
||||||
|
'PYTHONPATH': os.pathsep.join(pythonpath),
|
||||||
|
})
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
|
for varname, old_value in self._save_env.items():
|
||||||
|
if old_value is None:
|
||||||
|
os.environ.pop(varname, None)
|
||||||
|
else:
|
||||||
|
os.environ[varname] = old_value
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
# type: () -> None
|
||||||
|
self._temp_dir.cleanup()
|
||||||
|
|
||||||
|
def check_requirements(self, reqs):
|
||||||
|
# type: (Iterable[str]) -> Tuple[Set[Tuple[str, str]], Set[str]]
|
||||||
|
"""Return 2 sets:
|
||||||
|
- conflicting requirements: set of (installed, wanted) reqs tuples
|
||||||
|
- missing requirements: set of reqs
|
||||||
|
"""
|
||||||
|
missing = set()
|
||||||
|
conflicting = set()
|
||||||
|
if reqs:
|
||||||
|
ws = WorkingSet(self._lib_dirs)
|
||||||
|
for req in reqs:
|
||||||
|
try:
|
||||||
|
if ws.find(Requirement.parse(req)) is None:
|
||||||
|
missing.add(req)
|
||||||
|
except VersionConflict as e:
|
||||||
|
conflicting.add((str(e.args[0].as_requirement()),
|
||||||
|
str(e.args[1])))
|
||||||
|
return conflicting, missing
|
||||||
|
|
||||||
|
def install_requirements(
|
||||||
|
self,
|
||||||
|
finder, # type: PackageFinder
|
||||||
|
requirements, # type: Iterable[str]
|
||||||
|
prefix_as_string, # type: str
|
||||||
|
message # type: Optional[str]
|
||||||
|
):
|
||||||
|
# type: (...) -> None
|
||||||
|
prefix = self._prefixes[prefix_as_string]
|
||||||
|
assert not prefix.setup
|
||||||
|
prefix.setup = True
|
||||||
|
if not requirements:
|
||||||
|
return
|
||||||
|
args = [
|
||||||
|
sys.executable, os.path.dirname(pip_location), 'install',
|
||||||
|
'--ignore-installed', '--no-user', '--prefix', prefix.path,
|
||||||
|
'--no-warn-script-location',
|
||||||
|
] # type: List[str]
|
||||||
|
if logger.getEffectiveLevel() <= logging.DEBUG:
|
||||||
|
args.append('-v')
|
||||||
|
for format_control in ('no_binary', 'only_binary'):
|
||||||
|
formats = getattr(finder.format_control, format_control)
|
||||||
|
args.extend(('--' + format_control.replace('_', '-'),
|
||||||
|
','.join(sorted(formats or {':none:'}))))
|
||||||
|
|
||||||
|
index_urls = finder.index_urls
|
||||||
|
if index_urls:
|
||||||
|
args.extend(['-i', index_urls[0]])
|
||||||
|
for extra_index in index_urls[1:]:
|
||||||
|
args.extend(['--extra-index-url', extra_index])
|
||||||
|
else:
|
||||||
|
args.append('--no-index')
|
||||||
|
for link in finder.find_links:
|
||||||
|
args.extend(['--find-links', link])
|
||||||
|
|
||||||
|
for host in finder.trusted_hosts:
|
||||||
|
args.extend(['--trusted-host', host])
|
||||||
|
if finder.allow_all_prereleases:
|
||||||
|
args.append('--pre')
|
||||||
|
args.append('--')
|
||||||
|
args.extend(requirements)
|
||||||
|
with open_spinner(message) as spinner:
|
||||||
|
call_subprocess(args, spinner=spinner)
|
||||||
|
|
||||||
|
|
||||||
|
class NoOpBuildEnvironment(BuildEnvironment):
|
||||||
|
"""A no-op drop-in replacement for BuildEnvironment
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def install_requirements(self, finder, requirements, prefix, message):
|
||||||
|
raise NotImplementedError()
|
@ -0,0 +1,224 @@
|
|||||||
|
"""Cache Management
|
||||||
|
"""
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import hashlib
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
from pip._vendor.packaging.utils import canonicalize_name
|
||||||
|
|
||||||
|
from pip._internal.models.link import Link
|
||||||
|
from pip._internal.utils.compat import expanduser
|
||||||
|
from pip._internal.utils.misc import path_to_url
|
||||||
|
from pip._internal.utils.temp_dir import TempDirectory
|
||||||
|
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||||
|
from pip._internal.wheel import InvalidWheelFilename, Wheel
|
||||||
|
|
||||||
|
if MYPY_CHECK_RUNNING:
|
||||||
|
from typing import Optional, Set, List, Any
|
||||||
|
from pip._internal.index import FormatControl
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Cache(object):
|
||||||
|
"""An abstract class - provides cache directories for data from links
|
||||||
|
|
||||||
|
|
||||||
|
:param cache_dir: The root of the cache.
|
||||||
|
:param format_control: An object of FormatControl class to limit
|
||||||
|
binaries being read from the cache.
|
||||||
|
:param allowed_formats: which formats of files the cache should store.
|
||||||
|
('binary' and 'source' are the only allowed values)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, cache_dir, format_control, allowed_formats):
|
||||||
|
# type: (str, FormatControl, Set[str]) -> None
|
||||||
|
super(Cache, self).__init__()
|
||||||
|
self.cache_dir = expanduser(cache_dir) if cache_dir else None
|
||||||
|
self.format_control = format_control
|
||||||
|
self.allowed_formats = allowed_formats
|
||||||
|
|
||||||
|
_valid_formats = {"source", "binary"}
|
||||||
|
assert self.allowed_formats.union(_valid_formats) == _valid_formats
|
||||||
|
|
||||||
|
def _get_cache_path_parts(self, link):
|
||||||
|
# type: (Link) -> List[str]
|
||||||
|
"""Get parts of part that must be os.path.joined with cache_dir
|
||||||
|
"""
|
||||||
|
|
||||||
|
# We want to generate an url to use as our cache key, we don't want to
|
||||||
|
# just re-use the URL because it might have other items in the fragment
|
||||||
|
# and we don't care about those.
|
||||||
|
key_parts = [link.url_without_fragment]
|
||||||
|
if link.hash_name is not None and link.hash is not None:
|
||||||
|
key_parts.append("=".join([link.hash_name, link.hash]))
|
||||||
|
key_url = "#".join(key_parts)
|
||||||
|
|
||||||
|
# Encode our key url with sha224, we'll use this because it has similar
|
||||||
|
# security properties to sha256, but with a shorter total output (and
|
||||||
|
# thus less secure). However the differences don't make a lot of
|
||||||
|
# difference for our use case here.
|
||||||
|
hashed = hashlib.sha224(key_url.encode()).hexdigest()
|
||||||
|
|
||||||
|
# We want to nest the directories some to prevent having a ton of top
|
||||||
|
# level directories where we might run out of sub directories on some
|
||||||
|
# FS.
|
||||||
|
parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]]
|
||||||
|
|
||||||
|
return parts
|
||||||
|
|
||||||
|
def _get_candidates(self, link, package_name):
|
||||||
|
# type: (Link, Optional[str]) -> List[Any]
|
||||||
|
can_not_cache = (
|
||||||
|
not self.cache_dir or
|
||||||
|
not package_name or
|
||||||
|
not link
|
||||||
|
)
|
||||||
|
if can_not_cache:
|
||||||
|
return []
|
||||||
|
|
||||||
|
canonical_name = canonicalize_name(package_name)
|
||||||
|
formats = self.format_control.get_allowed_formats(
|
||||||
|
canonical_name
|
||||||
|
)
|
||||||
|
if not self.allowed_formats.intersection(formats):
|
||||||
|
return []
|
||||||
|
|
||||||
|
root = self.get_path_for_link(link)
|
||||||
|
try:
|
||||||
|
return os.listdir(root)
|
||||||
|
except OSError as err:
|
||||||
|
if err.errno in {errno.ENOENT, errno.ENOTDIR}:
|
||||||
|
return []
|
||||||
|
raise
|
||||||
|
|
||||||
|
def get_path_for_link(self, link):
|
||||||
|
# type: (Link) -> str
|
||||||
|
"""Return a directory to store cached items in for link.
|
||||||
|
"""
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def get(self, link, package_name):
|
||||||
|
# type: (Link, Optional[str]) -> Link
|
||||||
|
"""Returns a link to a cached item if it exists, otherwise returns the
|
||||||
|
passed link.
|
||||||
|
"""
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def _link_for_candidate(self, link, candidate):
|
||||||
|
# type: (Link, str) -> Link
|
||||||
|
root = self.get_path_for_link(link)
|
||||||
|
path = os.path.join(root, candidate)
|
||||||
|
|
||||||
|
return Link(path_to_url(path))
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
# type: () -> None
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleWheelCache(Cache):
|
||||||
|
"""A cache of wheels for future installs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, cache_dir, format_control):
|
||||||
|
# type: (str, FormatControl) -> None
|
||||||
|
super(SimpleWheelCache, self).__init__(
|
||||||
|
cache_dir, format_control, {"binary"}
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_path_for_link(self, link):
|
||||||
|
# type: (Link) -> str
|
||||||
|
"""Return a directory to store cached wheels for link
|
||||||
|
|
||||||
|
Because there are M wheels for any one sdist, we provide a directory
|
||||||
|
to cache them in, and then consult that directory when looking up
|
||||||
|
cache hits.
|
||||||
|
|
||||||
|
We only insert things into the cache if they have plausible version
|
||||||
|
numbers, so that we don't contaminate the cache with things that were
|
||||||
|
not unique. E.g. ./package might have dozens of installs done for it
|
||||||
|
and build a version of 0.0...and if we built and cached a wheel, we'd
|
||||||
|
end up using the same wheel even if the source has been edited.
|
||||||
|
|
||||||
|
:param link: The link of the sdist for which this will cache wheels.
|
||||||
|
"""
|
||||||
|
parts = self._get_cache_path_parts(link)
|
||||||
|
|
||||||
|
# Store wheels within the root cache_dir
|
||||||
|
return os.path.join(self.cache_dir, "wheels", *parts)
|
||||||
|
|
||||||
|
def get(self, link, package_name):
|
||||||
|
# type: (Link, Optional[str]) -> Link
|
||||||
|
candidates = []
|
||||||
|
|
||||||
|
for wheel_name in self._get_candidates(link, package_name):
|
||||||
|
try:
|
||||||
|
wheel = Wheel(wheel_name)
|
||||||
|
except InvalidWheelFilename:
|
||||||
|
continue
|
||||||
|
if not wheel.supported():
|
||||||
|
# Built for a different python/arch/etc
|
||||||
|
continue
|
||||||
|
candidates.append((wheel.support_index_min(), wheel_name))
|
||||||
|
|
||||||
|
if not candidates:
|
||||||
|
return link
|
||||||
|
|
||||||
|
return self._link_for_candidate(link, min(candidates)[1])
|
||||||
|
|
||||||
|
|
||||||
|
class EphemWheelCache(SimpleWheelCache):
|
||||||
|
"""A SimpleWheelCache that creates it's own temporary cache directory
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, format_control):
|
||||||
|
# type: (FormatControl) -> None
|
||||||
|
self._temp_dir = TempDirectory(kind="ephem-wheel-cache")
|
||||||
|
self._temp_dir.create()
|
||||||
|
|
||||||
|
super(EphemWheelCache, self).__init__(
|
||||||
|
self._temp_dir.path, format_control
|
||||||
|
)
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
# type: () -> None
|
||||||
|
self._temp_dir.cleanup()
|
||||||
|
|
||||||
|
|
||||||
|
class WheelCache(Cache):
|
||||||
|
"""Wraps EphemWheelCache and SimpleWheelCache into a single Cache
|
||||||
|
|
||||||
|
This Cache allows for gracefully degradation, using the ephem wheel cache
|
||||||
|
when a certain link is not found in the simple wheel cache first.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, cache_dir, format_control):
|
||||||
|
# type: (str, FormatControl) -> None
|
||||||
|
super(WheelCache, self).__init__(
|
||||||
|
cache_dir, format_control, {'binary'}
|
||||||
|
)
|
||||||
|
self._wheel_cache = SimpleWheelCache(cache_dir, format_control)
|
||||||
|
self._ephem_cache = EphemWheelCache(format_control)
|
||||||
|
|
||||||
|
def get_path_for_link(self, link):
|
||||||
|
# type: (Link) -> str
|
||||||
|
return self._wheel_cache.get_path_for_link(link)
|
||||||
|
|
||||||
|
def get_ephem_path_for_link(self, link):
|
||||||
|
# type: (Link) -> str
|
||||||
|
return self._ephem_cache.get_path_for_link(link)
|
||||||
|
|
||||||
|
def get(self, link, package_name):
|
||||||
|
# type: (Link, Optional[str]) -> Link
|
||||||
|
retval = self._wheel_cache.get(link, package_name)
|
||||||
|
if retval is link:
|
||||||
|
retval = self._ephem_cache.get(link, package_name)
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
# type: () -> None
|
||||||
|
self._wheel_cache.cleanup()
|
||||||
|
self._ephem_cache.cleanup()
|
@ -0,0 +1,4 @@
|
|||||||
|
"""Subpackage containing all of pip's command line interface related code
|
||||||
|
"""
|
||||||
|
|
||||||
|
# This file intentionally does not import submodules
|
@ -0,0 +1,152 @@
|
|||||||
|
"""Logic that powers autocompletion installed by ``pip completion``.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import optparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from pip._internal.cli.main_parser import create_main_parser
|
||||||
|
from pip._internal.commands import commands_dict, get_summaries
|
||||||
|
from pip._internal.utils.misc import get_installed_distributions
|
||||||
|
|
||||||
|
|
||||||
|
def autocomplete():
|
||||||
|
"""Entry Point for completion of main and subcommand options.
|
||||||
|
"""
|
||||||
|
# Don't complete if user hasn't sourced bash_completion file.
|
||||||
|
if 'PIP_AUTO_COMPLETE' not in os.environ:
|
||||||
|
return
|
||||||
|
cwords = os.environ['COMP_WORDS'].split()[1:]
|
||||||
|
cword = int(os.environ['COMP_CWORD'])
|
||||||
|
try:
|
||||||
|
current = cwords[cword - 1]
|
||||||
|
except IndexError:
|
||||||
|
current = ''
|
||||||
|
|
||||||
|
subcommands = [cmd for cmd, summary in get_summaries()]
|
||||||
|
options = []
|
||||||
|
# subcommand
|
||||||
|
try:
|
||||||
|
subcommand_name = [w for w in cwords if w in subcommands][0]
|
||||||
|
except IndexError:
|
||||||
|
subcommand_name = None
|
||||||
|
|
||||||
|
parser = create_main_parser()
|
||||||
|
# subcommand options
|
||||||
|
if subcommand_name:
|
||||||
|
# special case: 'help' subcommand has no options
|
||||||
|
if subcommand_name == 'help':
|
||||||
|
sys.exit(1)
|
||||||
|
# special case: list locally installed dists for show and uninstall
|
||||||
|
should_list_installed = (
|
||||||
|
subcommand_name in ['show', 'uninstall'] and
|
||||||
|
not current.startswith('-')
|
||||||
|
)
|
||||||
|
if should_list_installed:
|
||||||
|
installed = []
|
||||||
|
lc = current.lower()
|
||||||
|
for dist in get_installed_distributions(local_only=True):
|
||||||
|
if dist.key.startswith(lc) and dist.key not in cwords[1:]:
|
||||||
|
installed.append(dist.key)
|
||||||
|
# if there are no dists installed, fall back to option completion
|
||||||
|
if installed:
|
||||||
|
for dist in installed:
|
||||||
|
print(dist)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
subcommand = commands_dict[subcommand_name]()
|
||||||
|
|
||||||
|
for opt in subcommand.parser.option_list_all:
|
||||||
|
if opt.help != optparse.SUPPRESS_HELP:
|
||||||
|
for opt_str in opt._long_opts + opt._short_opts:
|
||||||
|
options.append((opt_str, opt.nargs))
|
||||||
|
|
||||||
|
# filter out previously specified options from available options
|
||||||
|
prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]]
|
||||||
|
options = [(x, v) for (x, v) in options if x not in prev_opts]
|
||||||
|
# filter options by current input
|
||||||
|
options = [(k, v) for k, v in options if k.startswith(current)]
|
||||||
|
# get completion type given cwords and available subcommand options
|
||||||
|
completion_type = get_path_completion_type(
|
||||||
|
cwords, cword, subcommand.parser.option_list_all,
|
||||||
|
)
|
||||||
|
# get completion files and directories if ``completion_type`` is
|
||||||
|
# ``<file>``, ``<dir>`` or ``<path>``
|
||||||
|
if completion_type:
|
||||||
|
options = auto_complete_paths(current, completion_type)
|
||||||
|
options = ((opt, 0) for opt in options)
|
||||||
|
for option in options:
|
||||||
|
opt_label = option[0]
|
||||||
|
# append '=' to options which require args
|
||||||
|
if option[1] and option[0][:2] == "--":
|
||||||
|
opt_label += '='
|
||||||
|
print(opt_label)
|
||||||
|
else:
|
||||||
|
# show main parser options only when necessary
|
||||||
|
|
||||||
|
opts = [i.option_list for i in parser.option_groups]
|
||||||
|
opts.append(parser.option_list)
|
||||||
|
opts = (o for it in opts for o in it)
|
||||||
|
if current.startswith('-'):
|
||||||
|
for opt in opts:
|
||||||
|
if opt.help != optparse.SUPPRESS_HELP:
|
||||||
|
subcommands += opt._long_opts + opt._short_opts
|
||||||
|
else:
|
||||||
|
# get completion type given cwords and all available options
|
||||||
|
completion_type = get_path_completion_type(cwords, cword, opts)
|
||||||
|
if completion_type:
|
||||||
|
subcommands = auto_complete_paths(current, completion_type)
|
||||||
|
|
||||||
|
print(' '.join([x for x in subcommands if x.startswith(current)]))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def get_path_completion_type(cwords, cword, opts):
|
||||||
|
"""Get the type of path completion (``file``, ``dir``, ``path`` or None)
|
||||||
|
|
||||||
|
:param cwords: same as the environmental variable ``COMP_WORDS``
|
||||||
|
:param cword: same as the environmental variable ``COMP_CWORD``
|
||||||
|
:param opts: The available options to check
|
||||||
|
:return: path completion type (``file``, ``dir``, ``path`` or None)
|
||||||
|
"""
|
||||||
|
if cword < 2 or not cwords[cword - 2].startswith('-'):
|
||||||
|
return
|
||||||
|
for opt in opts:
|
||||||
|
if opt.help == optparse.SUPPRESS_HELP:
|
||||||
|
continue
|
||||||
|
for o in str(opt).split('/'):
|
||||||
|
if cwords[cword - 2].split('=')[0] == o:
|
||||||
|
if not opt.metavar or any(
|
||||||
|
x in ('path', 'file', 'dir')
|
||||||
|
for x in opt.metavar.split('/')):
|
||||||
|
return opt.metavar
|
||||||
|
|
||||||
|
|
||||||
|
def auto_complete_paths(current, completion_type):
|
||||||
|
"""If ``completion_type`` is ``file`` or ``path``, list all regular files
|
||||||
|
and directories starting with ``current``; otherwise only list directories
|
||||||
|
starting with ``current``.
|
||||||
|
|
||||||
|
:param current: The word to be completed
|
||||||
|
:param completion_type: path completion type(`file`, `path` or `dir`)i
|
||||||
|
:return: A generator of regular files and/or directories
|
||||||
|
"""
|
||||||
|
directory, filename = os.path.split(current)
|
||||||
|
current_path = os.path.abspath(directory)
|
||||||
|
# Don't complete paths if they can't be accessed
|
||||||
|
if not os.access(current_path, os.R_OK):
|
||||||
|
return
|
||||||
|
filename = os.path.normcase(filename)
|
||||||
|
# list all files that start with ``filename``
|
||||||
|
file_list = (x for x in os.listdir(current_path)
|
||||||
|
if os.path.normcase(x).startswith(filename))
|
||||||
|
for f in file_list:
|
||||||
|
opt = os.path.join(current_path, f)
|
||||||
|
comp_file = os.path.normcase(os.path.join(directory, f))
|
||||||
|
# complete regular files when there is not ``<dir>`` after option
|
||||||
|
# complete directories when there is ``<file>``, ``<path>`` or
|
||||||
|
# ``<dir>``after option
|
||||||
|
if completion_type != 'dir' and os.path.isfile(opt):
|
||||||
|
yield comp_file
|
||||||
|
elif os.path.isdir(opt):
|
||||||
|
yield os.path.join(comp_file, '')
|