Working program

This commit is contained in:
Krzysztof Rudnicki 2023-03-18 15:27:54 +00:00
parent 92a5c0d9e0
commit 7435a26030
9888 changed files with 628146 additions and 0 deletions

12
.breakpoints Normal file
View File

@ -0,0 +1,12 @@
{
"files": {
"report.tex": [
{
"id": "a2e5af68-47fa-4920-aea5-ea9002a21051",
"line": 1,
"version": 8,
"index": 0
}
]
}
}

108
.replit Normal file
View File

@ -0,0 +1,108 @@
# The command that runs the program. If the interpreter field is set, it will have priority and this run command will do nothing
run = "python3 main.py"
# The primary language of the repl. There can be others, though!
language = "python3"
entrypoint = "main.py"
# A list of globs that specify which files and directories should
# be hidden in the workspace.
hidden = ["venv", ".config", "**/__pycache__", "**/.mypy_cache", "**/*.pyc"]
# Specifies which nix channel to use when building the environment.
[nix]
channel = "stable-22_11"
# The command to start the interpreter.
[interpreter]
[interpreter.command]
args = [
"stderred",
"--",
"prybar-python310",
"-q",
"--ps1",
"\u0001\u001b[33m\u0002\u0001\u001b[00m\u0002 ",
"-i",
]
env = { LD_LIBRARY_PATH = "$PYTHON_LD_LIBRARY_PATH" }
[env]
VIRTUAL_ENV = "/home/runner/${REPL_SLUG}/venv"
PATH = "${VIRTUAL_ENV}/bin"
PYTHONPATH = "$PYTHONHOME/lib/python3.10:${VIRTUAL_ENV}/lib/python3.10/site-packages"
REPLIT_POETRY_PYPI_REPOSITORY = "https://package-proxy.replit.com/pypi/"
MPLBACKEND = "TkAgg"
POETRY_CACHE_DIR = "${HOME}/${REPL_SLUG}/.cache/pypoetry"
# Enable unit tests. This is only supported for a few languages.
[unitTest]
language = "python3"
# Add a debugger!
[debugger]
support = true
# How to start the debugger.
[debugger.interactive]
transport = "localhost:0"
startCommand = ["dap-python", "main.py"]
# How to communicate with the debugger.
[debugger.interactive.integratedAdapter]
dapTcpAddress = "localhost:0"
# How to tell the debugger to start a debugging session.
[debugger.interactive.initializeMessage]
command = "initialize"
type = "request"
[debugger.interactive.initializeMessage.arguments]
adapterID = "debugpy"
clientID = "replit"
clientName = "replit.com"
columnsStartAt1 = true
linesStartAt1 = true
locale = "en-us"
pathFormat = "path"
supportsInvalidatedEvent = true
supportsProgressReporting = true
supportsRunInTerminalRequest = true
supportsVariablePaging = true
supportsVariableType = true
# How to tell the debugger to start the debuggee application.
[debugger.interactive.launchMessage]
command = "attach"
type = "request"
[debugger.interactive.launchMessage.arguments]
logging = {}
# Configures the packager.
[packager]
language = "python3"
ignoredPackages = ["unit_tests"]
[packager.features]
enabledForHosting = false
# Enable searching packages from the sidebar.
packageSearch = true
# Enable guessing what packages are needed from the code.
guessImports = true
# These are the files that need to be preserved when this
# language template is used as the base language template
# for Python repos imported from GitHub
[gitHubImport]
requiredFiles = [".replit", "replit.nix", ".config", "venv"]
[languages]
[languages.python3]
pattern = "**/*.py"
[languages.python3.languageServer]
start = "pylsp"
[deployment]
run = ["sh", "-c", "python3 main.py"]

BIN
EARIN_LAB_Instruction.pdf Normal file

Binary file not shown.

BIN
EARIN_Lab1.pdf Normal file

Binary file not shown.

145
main.py Normal file
View File

@ -0,0 +1,145 @@
"""
Write a program that solves a maze using greedy best-first search algorithm.
The maze is a 2D grid with empty space, walls, a start, and an end position.
The objective is to find a path from start to end position.
The maze should be loaded from file. A step-by-step visualization of the
algorithm is required. It can be done in the console and an interface may be
as simple as possible (but of course it does not have to). Example solution:
https://angeluriot.com/maze_solver/.
Test multiple heuristics (at least two) h(n) and discuss the differences be-
tween the obtained results.
"""
""" Technical requirements:
- implemented in Python.
- adheres to basic standards of lean coding in accordance to PEP8
- comments in the crucial parts to help with readability and understanding.
- The clear instruction how to run and test the code should be included.
"""
"""
Thinks that do not work:
Does not work if no Start (Should print out NO START FOUND)
Does not work if no End (Should print out NO END FOUND)
Does not work if no path (Should print out NO PATH FOUND)
"""
import heapq
class MazeSolver:
# self corresponds to "this" in js, it refers to object of MazeSolver class
def __init__(self, maze):
# assign readed maze 2D array to parameter from class MazeSolver
self.maze = maze
self.start, self.end = self.find_start_and_end()
# go through each character in 2D array and find one that corresponds to Start/End character
def find_start_and_end(self):
start = end = None
for row in range(len(self.maze)):
for col in range(len(self.maze[row])):
if self.maze[row][col] == 'S':
start = (row, col)
elif self.maze[row][col] == 'E':
end = (row, col)
if start != None and end != None:
return start, end
print(f"DID NOT FOUND START OR END, Start: {start}, End: {end}")
# Go through each neighboor
# N
# N * N
# N
# If it is not a "wall" (#) add its position to list of neighbors
def get_neighbors(self, position):
row, col = position
neighbors = []
if row > 0 and self.maze[row - 1][col] != '#':
neighbors.append((row - 1, col))
if col > 0 and self.maze[row][col - 1] != '#':
neighbors.append((row, col - 1))
if row < len(self.maze) - 1 and self.maze[row + 1][col] != '#':
neighbors.append((row + 1, col))
if col < len(self.maze[row]) - 1 and self.maze[row][col + 1] != '#':
neighbors.append((row, col + 1))
return neighbors
# find path through maze
def solve(self):
queue = []
# set means that values inside can not repeat
visited = set()
# https://docs.python.org/3/library/heapq.html
# push onto the queue (which becomes heapq), element containinig values
# we use heapq so the element with lowest heurisitc value will always be at the top of heap
heapq.heappush(
queue, (self.heuristicEuclidean(self.start), self.start, [self.start]))
# go through queue until it's empty
# find neighbour (which is not wall) closests to END point (based on heuristic)
# go there and repeat
# if cannot find path it starts over but skips the path that lead it to dead end
while queue:
# pop first element of heap
# first value is skipped and we only save current position and path on heap
_, current, path = heapq.heappop(queue)
# if we already visited current skip code and go to next iteration
if current in visited:
continue
# if we found the end return path
if current == self.end:
return path
visited.add(current)
for neighbor in self.get_neighbors(current):
if neighbor not in visited:
new_path = path + [neighbor]
heapq.heappush(queue,
(self.heuristicEuclidean(neighbor), neighbor, new_path))
print_maze(self.maze, new_path)
print()
# This heuristic returns the Manhatan distance between the given position and the maze's end
def heuristicManhatan(self, position):
return abs(position[0] - self.end[0]) + abs(position[1] - self.end[1])
# This heuristic returns the Euclidean distance between the given position and the maze's end
def heuristicEuclidean(self, position):
return (abs(position[0] - self.end[0])**2 +
abs(position[1] - self.end[1])**2)**0.5
# Open and load text file to array
def load_maze(filename):
# Open for reading only and save to fileContents
fileContents = open(filename, 'r')
# strip() removes extra white spaces from the beginning and the end of a string
# list() changes string to array of chars
# Inside of square brackets we will have an array of characters for each line of file
# after going through every line in a file we will have 2D array of arrays of characters of every line
maze = [list(line.strip()) for line in fileContents]
return maze
def print_maze(maze, path=None):
if path is None:
path = []
for row in range(len(maze)):
for col in range(len(maze[row])):
if (row, col) in path:
print('*', end='')
else:
print(maze[row][col], end='')
print()
# Ran first in the code
if __name__ == '__main__':
# Open and load text file to array
maze = load_maze('mazes/mazeDeadEnd.txt')
# Initialize MazeSolver object with maze as paramater
solver = MazeSolver(maze)
# Find path using MazeSolver solve method
path = solver.solve()
print_maze(maze, path)

10
maze.txt Normal file
View File

@ -0,0 +1,10 @@
##########
#S #
# #### #
# # #
# # ## #
# # #
##### ##
# # #
# #E #
##########

5
mazes/mazeDeadEnd.txt Normal file
View File

@ -0,0 +1,5 @@
#################
# #
# ####### #
#S # E#
#################

32
mazes/mazeNoEnd.txt Normal file
View File

@ -0,0 +1,32 @@
################################
# S # # #
# ######### #### ## # #
# # # # #
# # ######### ####### #
# # # #
# # #### # ####### #######
# # # # # #
# ####### ########### # #
# # ##### #
#### ######### # # # #
# # # #### #
#### ########### # #
# # ##### #####
# ######### # # #
# ###### #####
# ####### ####### #
# # # # #####
# # ######### # # #
# # # # ######
# ####### ######### #
# # #
# ######### ############ #
# # # #
# ######### #### ####### #
# # # # #
# # ####### # ######### #
# # # # # #
# # # #### ######### ####
# # # # #
# ######### ###### ##### #
################################

View File

@ -0,0 +1,32 @@
################################
# # # #
# ######### #### ## # #
# # # # #
# # ######### ####### #
# # # #
# # #### # ####### #######
# # # # # #
# ####### ########### # #
# # ##### #
#### ######### # # # #
# # # #### #
#### ########### # #
# # ##### #####
# ######### # # #
# ###### #####
# ####### ####### #
# # # # #####
# # ######### # # #
# # # # ######
# ####### ######### #
# # #
# ######### ############ #
# # # #
# ######### #### ####### #
# # # # #
# # ####### # ######### #
# # # # # #
# # # #### ######### ####
# # # # #
# ######### ###### ##### #
################################

32
mazes/mazeNoPath.txt Normal file
View File

@ -0,0 +1,32 @@
################################
# # # #
# ######### #### ## # #
# # # # #
# # ######### ####### #
# # # #
# # #### # ####### #######
# # # # # #
# ####### ########### # #
# # ##### #
#### ######### # # # #
# # # #### #
#### ########### # #
# # ##### #####
# ######### # # #
# ###### #####
# ####### ####### #
# # # # #####
# # ######### # # #
# # # # ######
# ####### ######### #
# # #
# ######### ############ #
# # # #
# ######### #### ####### #
# # # # #
# # ####### # ######### #
# # # # # #
# # # #### ######### ####
# # # # # #
# ######### ###### #####E#
################################

32
mazes/mazeNoStart.txt Normal file
View File

@ -0,0 +1,32 @@
################################
# # # #
# ######### #### ## # #
# # # # #
# # ######### ####### #
# # # #
# # #### # ####### #######
# # # # # #
# ####### ########### # #
# # ##### #
#### ######### # # # #
# # # #### #
#### ########### # #
# # ##### #####
# ######### # # #
# ###### #####
# ####### ####### #
# # # # #####
# # ######### # # #
# # # # ######
# ####### ######### #
# # #
# ######### ############ #
# # # #
# ######### #### ####### #
# # # # #
# # ####### # ######### #
# # # # # #
# # # #### ######### ####
# # # # #
# ######### ###### #####E#
################################

View File

@ -0,0 +1,32 @@
################################
# S # # #
# ######### #### ## # #
# # # # #
# # ######### ####### #
# # # #
# # #### # ####### #######
# # # # # #
# ####### ########### # #
# # ##### #
#### ######### # # # #
# # # #### #
#### ########### # #
# # ##### #####
# ######### # # #
# ###### #####
# ####### ####### #
# # # # #####
# # ######### # # #
# # # # ######
# ####### ######### #
# # #
# ######### ############ #
# # # #
# ######### #### ####### #
# # # # #
# # ####### # ######### #
# # # # # #
# # # #### ######### ####
# # # # # #
# ######### ###### #####E#
################################

664
poetry.lock generated Normal file
View File

@ -0,0 +1,664 @@
[[package]]
name = "aiohttp"
version = "3.8.3"
description = "Async http client/server framework (asyncio)"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
aiosignal = ">=1.1.2"
async-timeout = ">=4.0.0a3,<5.0"
attrs = ">=17.3.0"
charset-normalizer = ">=2.0,<3.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0"
yarl = ">=1.0,<2.0"
[package.extras]
speedups = ["aiodns", "brotli", "cchardet"]
[[package]]
name = "aiosignal"
version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
frozenlist = ">=1.1.0"
[[package]]
name = "argon2-cffi"
version = "21.3.0"
description = "The secure Argon2 password hashing algorithm."
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
argon2-cffi-bindings = "*"
[package.extras]
dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"]
docs = ["sphinx", "sphinx-notfound-page", "furo"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"]
[[package]]
name = "argon2-cffi-bindings"
version = "21.2.0"
description = "Low-level CFFI bindings for Argon2"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
cffi = ">=1.0.1"
[package.extras]
dev = ["pytest", "cogapp", "pre-commit", "wheel"]
tests = ["pytest"]
[[package]]
name = "async-timeout"
version = "4.0.2"
description = "Timeout context manager for asyncio programs"
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "attrs"
version = "22.2.0"
description = "Classes Without Boilerplate"
category = "main"
optional = false
python-versions = ">=3.6"
[package.extras]
cov = ["attrs", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"]
dev = ["attrs"]
docs = ["furo", "sphinx", "myst-parser", "zope.interface", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"]
tests = ["attrs", "zope.interface"]
tests-no-zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"]
tests_no_zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"]
[[package]]
name = "certifi"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "cffi"
version = "1.15.1"
description = "Foreign Function Interface for Python calling C code."
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
pycparser = "*"
[[package]]
name = "charset-normalizer"
version = "2.1.1"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
python-versions = ">=3.6.0"
[package.extras]
unicode_backport = ["unicodedata2"]
[[package]]
name = "click"
version = "8.1.3"
description = "Composable command line interface toolkit"
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
[[package]]
name = "cryptography"
version = "38.0.4"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
cffi = ">=1.12"
[package.extras]
docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
sdist = ["setuptools-rust (>=0.11.4)"]
ssh = ["bcrypt (>=3.1.5)"]
test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
[[package]]
name = "debugpy"
version = "1.6.5"
description = "An implementation of the Debug Adapter Protocol for Python"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "flask"
version = "2.2.2"
description = "A simple framework for building complex web applications."
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
click = ">=8.0"
importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""}
itsdangerous = ">=2.0"
Jinja2 = ">=3.0"
Werkzeug = ">=2.2.2"
[package.extras]
async = ["asgiref (>=3.2)"]
dotenv = ["python-dotenv"]
[[package]]
name = "frozenlist"
version = "1.3.3"
description = "A list-like structure which implements collections.abc.MutableSequence"
category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=3.5"
[[package]]
name = "importlib-metadata"
version = "6.0.0"
description = "Read metadata from Python packages"
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
zipp = ">=0.5"
[package.extras]
docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"]
perf = ["ipython"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8", "importlib-resources (>=1.3)"]
[[package]]
name = "iso8601"
version = "1.1.0"
description = "Simple module to parse ISO 8601 dates"
category = "main"
optional = false
python-versions = ">=3.6.2,<4.0"
[[package]]
name = "itsdangerous"
version = "2.1.2"
description = "Safely pass data to untrusted environments and back."
category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "jedi"
version = "0.18.2"
description = "An autocompletion tool for Python that can be used for text editors."
category = "dev"
optional = false
python-versions = ">=3.6"
[package.dependencies]
parso = ">=0.8.0,<0.9.0"
[package.extras]
docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx-rtd-theme (==0.4.3)", "sphinx (==1.8.5)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
[[package]]
name = "jinja2"
version = "3.1.2"
description = "A very fast and expressive template engine."
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
[[package]]
name = "markupsafe"
version = "2.1.2"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "multidict"
version = "6.0.4"
description = "multidict implementation"
category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "numpy"
version = "1.24.1"
description = "Fundamental package for array computing in Python"
category = "main"
optional = false
python-versions = ">=3.8"
[[package]]
name = "packaging"
version = "23.0"
description = "Core utilities for Python packages"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "parso"
version = "0.8.3"
description = "A Python Parser"
category = "dev"
optional = false
python-versions = ">=3.6"
[package.extras]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest (<6.0.0)"]
[[package]]
name = "passlib"
version = "1.7.4"
description = "comprehensive password hashing framework supporting over 30 schemes"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
argon2-cffi = {version = ">=18.2.0", optional = true, markers = "extra == \"argon2\""}
[package.extras]
argon2 = ["argon2-cffi (>=18.2.0)"]
bcrypt = ["bcrypt (>=3.1.0)"]
build_docs = ["sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)", "cloud-sptheme (>=1.10.1)"]
totp = ["cryptography"]
[[package]]
name = "platformdirs"
version = "2.6.2"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.19.5)", "sphinx (>=5.3)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest (>=7.2)"]
[[package]]
name = "pluggy"
version = "1.0.0"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=3.6"
[package.extras]
testing = ["pytest-benchmark", "pytest"]
dev = ["tox", "pre-commit"]
[[package]]
name = "protobuf"
version = "4.21.12"
description = ""
category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "pycparser"
version = "2.21"
description = "C parser in Python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pycryptodomex"
version = "3.16.0"
description = "Cryptographic library for Python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "pyflakes"
version = "2.5.0"
description = "passive checker of Python programs"
category = "dev"
optional = false
python-versions = ">=3.6"
[[package]]
name = "pyseto"
version = "1.7.0"
description = "A Python implementation of PASETO/PASERK."
category = "main"
optional = false
python-versions = ">=3.7,<4.0"
[package.dependencies]
cryptography = ">=36,<39"
iso8601 = ">=1.0.2,<2.0.0"
passlib = {version = ">=1.7.4,<2.0.0", extras = ["argon2"]}
pycryptodomex = ">=3.12.0,<4.0.0"
[package.extras]
docs = ["Sphinx[docs] (>=4.3.2,<6.0.0)", "sphinx-autodoc-typehints[docs] (==1.12.0)", "sphinx-rtd-theme[docs] (>=1.0.0,<2.0.0)"]
[[package]]
name = "python-lsp-jsonrpc"
version = "1.0.0"
description = "JSON RPC 2.0 server library"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
ujson = ">=3.0.0"
[package.extras]
test = ["coverage", "pytest-cov", "pytest", "pyflakes", "pycodestyle", "pylint"]
[[package]]
name = "pytoolconfig"
version = "1.2.4"
description = "Python tool configuration"
category = "dev"
optional = false
python-versions = ">=3.7"
[package.dependencies]
packaging = ">=22.0"
platformdirs = {version = ">=1.4.4", optional = true, markers = "extra == \"global\""}
tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""}
[package.extras]
doc = ["tabulate (>=0.8.9)", "sphinx (>=4.5.0)"]
gen_docs = ["sphinx (>=4.5.0)", "sphinx-autodoc-typehints (>=1.18.1)", "sphinx-rtd-theme (>=1.0.0)", "pytoolconfig"]
global = ["platformdirs (>=1.4.4)"]
validation = ["pydantic (>=1.7.4)"]
[[package]]
name = "replit"
version = "3.2.5"
description = "A library for interacting with features of repl.it"
category = "main"
optional = false
python-versions = ">=3.8,<4.0"
[package.dependencies]
aiohttp = ">=3.6.2,<4.0.0"
Flask = ">=2.0.0,<3.0.0"
protobuf = ">=4.21.8,<5.0.0"
pyseto = ">=1.6.11,<2.0.0"
requests = ">=2.25.1,<3.0.0"
typing_extensions = ">=3.7.4,<4.0.0"
Werkzeug = ">=2.0.0,<3.0.0"
[[package]]
name = "replit-python-lsp-server"
version = "1.15.9"
description = "Python Language Server for the Language Server Protocol"
category = "dev"
optional = false
python-versions = ">=3.7"
[package.dependencies]
jedi = ">=0.17.2,<0.19.0"
pluggy = ">=1.0.0"
pyflakes = {version = ">=2.5.0,<2.6.0", optional = true, markers = "extra == \"pyflakes\""}
python-lsp-jsonrpc = ">=1.0.0"
rope = {version = ">0.10.5", optional = true, markers = "extra == \"rope\""}
toml = ">=0.10.2"
ujson = ">=3.0.0"
whatthepatch = {version = ">=1.0.2,<2.0.0", optional = true, markers = "extra == \"yapf\""}
yapf = {version = "*", optional = true, markers = "extra == \"yapf\""}
[package.extras]
all = ["autopep8 (>=1.6.0,<1.7.0)", "flake8 (>=5.0.0,<5.1.0)", "mccabe (>=0.7.0,<0.8.0)", "pycodestyle (>=2.9.0,<2.10.0)", "pydocstyle (>=2.0.0)", "pyflakes (>=2.5.0,<2.6.0)", "pylint (>=2.5.0)", "rope (>=0.10.5)", "yapf", "whatthepatch"]
autopep8 = ["autopep8 (>=1.6.0,<1.7.0)"]
flake8 = ["flake8 (>=5.0.0,<5.1.0)"]
mccabe = ["mccabe (>=0.7.0,<0.8.0)"]
pycodestyle = ["pycodestyle (>=2.9.0,<2.10.0)"]
pydocstyle = ["pydocstyle (>=2.0.0)"]
pyflakes = ["pyflakes (>=2.5.0,<2.6.0)"]
pylint = ["pylint (>=2.5.0)"]
rope = ["rope (>0.10.5)"]
test = ["pylint (>=2.5.0)", "pytest", "pytest-cov", "coverage", "numpy (<1.23)", "pandas", "matplotlib", "pyqt5", "flaky"]
websockets = ["websockets (>=10.3)"]
yapf = ["yapf", "whatthepatch (>=1.0.2,<2.0.0)"]
[[package]]
name = "requests"
version = "2.28.2"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.7, <4"
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = ">=2,<4"
idna = ">=2.5,<4"
urllib3 = ">=1.21.1,<1.27"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "rope"
version = "1.7.0"
description = "a python refactoring library..."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.dependencies]
pytoolconfig = {version = ">=1.2.2", extras = ["global"]}
[package.extras]
dev = ["pytest (>=7.0.1)", "pytest-timeout (>=2.1.0)", "build (>=0.7.0)", "pre-commit (>=2.20.0)"]
doc = ["pytoolconfig", "sphinx (>=4.5.0)", "sphinx-autodoc-typehints (>=1.18.1)", "sphinx-rtd-theme (>=1.0.0)"]
[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "typing-extensions"
version = "3.10.0.2"
description = "Backported and Experimental Type Hints for Python 3.5+"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "ujson"
version = "5.7.0"
description = "Ultra fast JSON encoder and decoder for Python"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "urllib3"
version = "1.26.14"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[package.extras]
brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "werkzeug"
version = "2.2.2"
description = "The comprehensive WSGI web application library."
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
MarkupSafe = ">=2.1.1"
[package.extras]
watchdog = ["watchdog"]
[[package]]
name = "whatthepatch"
version = "1.0.3"
description = "A patch parsing and application library."
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "yapf"
version = "0.32.0"
description = "A formatter for Python code."
category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "yarl"
version = "1.8.2"
description = "Yet another URL library"
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
idna = ">=2.0"
multidict = ">=4.0"
[[package]]
name = "zipp"
version = "3.11.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8"]
[metadata]
lock-version = "1.1"
python-versions = ">=3.8.0,<3.9"
content-hash = "f328c469a46d9cb95c79b10c69318f07ccca3f40cc6eb43ef51c87ad2ff1879b"
[metadata.files]
aiohttp = []
aiosignal = []
argon2-cffi = []
argon2-cffi-bindings = []
async-timeout = []
attrs = []
certifi = []
cffi = []
charset-normalizer = []
click = []
colorama = []
cryptography = []
debugpy = []
flask = []
frozenlist = []
idna = []
importlib-metadata = []
iso8601 = []
itsdangerous = []
jedi = []
jinja2 = []
markupsafe = []
multidict = []
numpy = []
packaging = []
parso = []
passlib = []
platformdirs = []
pluggy = []
protobuf = []
pycparser = []
pycryptodomex = []
pyflakes = []
pyseto = []
python-lsp-jsonrpc = []
pytoolconfig = []
replit = []
replit-python-lsp-server = []
requests = []
rope = []
toml = []
tomli = []
typing-extensions = []
ujson = []
urllib3 = []
werkzeug = []
whatthepatch = []
yapf = []
yarl = []
zipp = []

20
pyproject.toml Normal file
View File

@ -0,0 +1,20 @@
[tool.poetry]
name = "python-template"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = ">=3.10.0,<3.11"
numpy = "^1.22.2"
replit = "^3.2.4"
Flask = "^2.2.0"
urllib3 = "^1.26.12"
[tool.poetry.dev-dependencies]
debugpy = "^1.6.2"
replit-python-lsp-server = {extras = ["yapf", "rope", "pyflakes"], version = "^1.5.9"}
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

23
replit.nix Normal file
View File

@ -0,0 +1,23 @@
{ pkgs }: {
deps = [
pkgs.python310Full
pkgs.replitPackages.prybar-python310
pkgs.replitPackages.stderred
];
env = {
PYTHON_LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
# Needed for pandas / numpy
pkgs.stdenv.cc.cc.lib
pkgs.zlib
# Needed for pygame
pkgs.glib
# Needed for matplotlib
pkgs.xorg.libX11
];
PYTHONHOME = "${pkgs.python310Full}";
PYTHONBIN = "${pkgs.python310Full}/bin/python3.10";
LANG = "en_US.UTF-8";
STDERREDBIN = "${pkgs.replitPackages.stderred}/bin/stderred";
PRYBAR_PYTHON_BIN = "${pkgs.replitPackages.prybar-python310}/bin/prybar-python310";
};
}

247
venv/bin/Activate.ps1 Normal file
View File

@ -0,0 +1,247 @@
<#
.Synopsis
Activate a Python virtual environment for the current PowerShell session.
.Description
Pushes the python executable for a virtual environment to the front of the
$Env:PATH environment variable and sets the prompt to signify that you are
in a Python virtual environment. Makes use of the command line switches as
well as the `pyvenv.cfg` file values present in the virtual environment.
.Parameter VenvDir
Path to the directory that contains the virtual environment to activate. The
default value for this is the parent of the directory that the Activate.ps1
script is located within.
.Parameter Prompt
The prompt prefix to display when this virtual environment is activated. By
default, this prompt is the name of the virtual environment folder (VenvDir)
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
.Example
Activate.ps1
Activates the Python virtual environment that contains the Activate.ps1 script.
.Example
Activate.ps1 -Verbose
Activates the Python virtual environment that contains the Activate.ps1 script,
and shows extra information about the activation as it executes.
.Example
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
Activates the Python virtual environment located in the specified location.
.Example
Activate.ps1 -Prompt "MyPython"
Activates the Python virtual environment that contains the Activate.ps1 script,
and prefixes the current prompt with the specified string (surrounded in
parentheses) while the virtual environment is active.
.Notes
On Windows, it may be required to enable this Activate.ps1 script by setting the
execution policy for the user. You can do this by issuing the following PowerShell
command:
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
For more information on Execution Policies:
https://go.microsoft.com/fwlink/?LinkID=135170
#>
Param(
[Parameter(Mandatory = $false)]
[String]
$VenvDir,
[Parameter(Mandatory = $false)]
[String]
$Prompt
)
<# Function declarations --------------------------------------------------- #>
<#
.Synopsis
Remove all shell session elements added by the Activate script, including the
addition of the virtual environment's Python executable from the beginning of
the PATH variable.
.Parameter NonDestructive
If present, do not remove this function from the global namespace for the
session.
#>
function global:deactivate ([switch]$NonDestructive) {
# Revert to original values
# The prior prompt:
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
}
# The prior PYTHONHOME:
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
}
# The prior PATH:
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
}
# Just remove the VIRTUAL_ENV altogether:
if (Test-Path -Path Env:VIRTUAL_ENV) {
Remove-Item -Path env:VIRTUAL_ENV
}
# Just remove VIRTUAL_ENV_PROMPT altogether.
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
}
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
}
# Leave deactivate function in the global namespace if requested:
if (-not $NonDestructive) {
Remove-Item -Path function:deactivate
}
}
<#
.Description
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
given folder, and returns them in a map.
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
two strings separated by `=` (with any amount of whitespace surrounding the =)
then it is considered a `key = value` line. The left hand string is the key,
the right hand is the value.
If the value starts with a `'` or a `"` then the first and last character is
stripped from the value before being captured.
.Parameter ConfigDir
Path to the directory that contains the `pyvenv.cfg` file.
#>
function Get-PyVenvConfig(
[String]
$ConfigDir
) {
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
# An empty map will be returned if no config file is found.
$pyvenvConfig = @{ }
if ($pyvenvConfigPath) {
Write-Verbose "File exists, parse `key = value` lines"
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
$pyvenvConfigContent | ForEach-Object {
$keyval = $PSItem -split "\s*=\s*", 2
if ($keyval[0] -and $keyval[1]) {
$val = $keyval[1]
# Remove extraneous quotations around a string value.
if ("'""".Contains($val.Substring(0, 1))) {
$val = $val.Substring(1, $val.Length - 2)
}
$pyvenvConfig[$keyval[0]] = $val
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
}
}
}
return $pyvenvConfig
}
<# Begin Activate script --------------------------------------------------- #>
# Determine the containing directory of this script
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$VenvExecDir = Get-Item -Path $VenvExecPath
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
# Set values required in priority: CmdLine, ConfigFile, Default
# First, get the location of the virtual environment, it might not be
# VenvExecDir if specified on the command line.
if ($VenvDir) {
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
}
else {
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
Write-Verbose "VenvDir=$VenvDir"
}
# Next, read the `pyvenv.cfg` file to determine any required value such
# as `prompt`.
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
# Next, set the prompt from the command line, or the config file, or
# just use the name of the virtual environment folder.
if ($Prompt) {
Write-Verbose "Prompt specified as argument, using '$Prompt'"
}
else {
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
$Prompt = $pyvenvCfg['prompt'];
}
else {
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
$Prompt = Split-Path -Path $venvDir -Leaf
}
}
Write-Verbose "Prompt = '$Prompt'"
Write-Verbose "VenvDir='$VenvDir'"
# Deactivate any currently active virtual environment, but leave the
# deactivate function in place.
deactivate -nondestructive
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
# that there is an activated venv.
$env:VIRTUAL_ENV = $VenvDir
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
Write-Verbose "Setting prompt to '$Prompt'"
# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT { "" }
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
function global:prompt {
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
_OLD_VIRTUAL_PROMPT
}
$env:VIRTUAL_ENV_PROMPT = $Prompt
}
# Clear PYTHONHOME
if (Test-Path -Path Env:PYTHONHOME) {
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
Remove-Item -Path Env:PYTHONHOME
}
# Add the venv to the PATH
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"

69
venv/bin/activate Normal file
View File

@ -0,0 +1,69 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
# reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
PATH="${_OLD_VIRTUAL_PATH:-}"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
unset VIRTUAL_ENV_PROMPT
if [ ! "${1:-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
VIRTUAL_ENV="/home/runner/Python/venv"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
PS1="(venv) ${PS1:-}"
export PS1
VIRTUAL_ENV_PROMPT="(venv) "
export VIRTUAL_ENV_PROMPT
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi

26
venv/bin/activate.csh Normal file
View File

@ -0,0 +1,26 @@
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
# Unset irrelevant variables.
deactivate nondestructive
setenv VIRTUAL_ENV "/home/runner/Python/venv"
set _OLD_VIRTUAL_PATH="$PATH"
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
set prompt = "(venv) $prompt"
setenv VIRTUAL_ENV_PROMPT "(venv) "
endif
alias pydoc python -m pydoc
rehash

66
venv/bin/activate.fish Normal file
View File

@ -0,0 +1,66 @@
# This file must be used with "source <venv>/bin/activate.fish" *from fish*
# (https://fishshell.com/); you cannot run it directly.
function deactivate -d "Exit virtual environment and return to normal shell environment"
# reset old environment variables
if test -n "$_OLD_VIRTUAL_PATH"
set -gx PATH $_OLD_VIRTUAL_PATH
set -e _OLD_VIRTUAL_PATH
end
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
set -e _OLD_VIRTUAL_PYTHONHOME
end
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
functions -e fish_prompt
set -e _OLD_FISH_PROMPT_OVERRIDE
functions -c _old_fish_prompt fish_prompt
functions -e _old_fish_prompt
end
set -e VIRTUAL_ENV
set -e VIRTUAL_ENV_PROMPT
if test "$argv[1]" != "nondestructive"
# Self-destruct!
functions -e deactivate
end
end
# Unset irrelevant variables.
deactivate nondestructive
set -gx VIRTUAL_ENV "/home/runner/Python/venv"
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
# Unset PYTHONHOME if set.
if set -q PYTHONHOME
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
set -e PYTHONHOME
end
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
# fish uses a function instead of an env var to generate the prompt.
# Save the current fish_prompt function as the function _old_fish_prompt.
functions -c fish_prompt _old_fish_prompt
# With the original prompt function renamed, we can override with our own.
function fish_prompt
# Save the return status of the last command.
set -l old_status $status
# Output the venv prompt; color taken from the blue of the Python logo.
printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal)
# Restore the return status of the previous command.
echo "exit $old_status" | .
# Output the original/"old" prompt.
_old_fish_prompt
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
set -gx VIRTUAL_ENV_PROMPT "(venv) "
end

8
venv/bin/doesitcache Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from cachecontrol._cmd import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/f2py Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from numpy.f2py.f2py2e import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/f2py3 Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from numpy.f2py.f2py2e import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/f2py3.10 Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from numpy.f2py.f2py2e import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/flask Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from flask.cli import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/keyring Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from keyring.cli import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/normalizer Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from charset_normalizer.cli.normalizer import cli_detect
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(cli_detect())

8
venv/bin/pip Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pip3 Executable file
View File

@ -0,0 +1,8 @@
#!/home/runner/Python/venv/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pip3.10 Executable file
View File

@ -0,0 +1,8 @@
#!/home/runner/Python/venv/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pkginfo Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from pkginfo.commandline import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/poetry Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from poetry.console import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pyflakes Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from pyflakes.api import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pylsp Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from pylsp.__main__ import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

1
venv/bin/python Symbolic link
View File

@ -0,0 +1 @@
python3

3
venv/bin/python3 Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
LD_LIBRARY_PATH="${PYTHON_LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}" exec -a "$0" "${PYTHONBIN}" "$@"

1
venv/bin/python3.10 Symbolic link
View File

@ -0,0 +1 @@
python3

8
venv/bin/replit Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from replit.__main__ import cli
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(cli())

8
venv/bin/virtualenv Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from virtualenv.__main__ import run_with_catch
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(run_with_catch())

8
venv/bin/yapf Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from yapf import run_main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(run_main())

8
venv/bin/yapf-diff Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from yapf.third_party.yapf_diff.yapf_diff import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

View File

@ -0,0 +1,315 @@
Changes
=======
Unreleased
----------
Version 1.7.0
-------------
Released 2022-12-17
- Drop support for Python 3.6. `#196 <https://github.com/dajiaji/pyseto/pull/196>`__
- Add CI for Python 11. `#191 <https://github.com/dajiaji/pyseto/pull/191>`__
- Fix typo on PASETO usage document. `#183 <https://github.com/dajiaji/pyseto/pull/183>`__
- Update dependencies.
- Bump pycryptodomex to 3.16.0. `#195 <https://github.com/dajiaji/pyseto/pull/195>`__
- Bump cryptography to 38.0.4. `#195 <https://github.com/dajiaji/pyseto/pull/195>`__
- Update dev dependencies.
- Bump pytest to 7.2.0. `#195 <https://github.com/dajiaji/pyseto/pull/195>`__
- Bump pre-commit/isort to 5.11.1. `#193 <https://github.com/dajiaji/pyseto/pull/193>`__
- Bump pre-commit/black to 22.12.0. `#193 <https://github.com/dajiaji/pyseto/pull/193>`__
- Bump pre-commit/pre-commit-hooks to 4.4.0. `#190 <https://github.com/dajiaji/pyseto/pull/190>`__
- Bump pre-commit/flake8 to 6.0.0. `#190 <https://github.com/dajiaji/pyseto/pull/190>`__
- Bump pre-commit/mirrors-mypy to 0.991. `#187 <https://github.com/dajiaji/pyseto/pull/187>`__
- Bump tox to 3.27.1. `#185 <https://github.com/dajiaji/pyseto/pull/185>`__
- Bump sphinx-rtd-theme to 1.1.1. `#184 <https://github.com/dajiaji/pyseto/pull/184>`__
Version 1.6.12
--------------
Released 2022-11-03
- Update dependencies.
- Bump cryptography to 38.0.3. `#180 <https://github.com/dajiaji/pyseto/pull/180>`__
- Update dev dependencies.
- Bump sphinx-rtd-theme to 1.1.0. `#179 <https://github.com/dajiaji/pyseto/pull/179>`__
- Bump tox to 3.27.0. `#178 <https://github.com/dajiaji/pyseto/pull/178>`__
- Bump sphinx to 5.3.0. `#177 <https://github.com/dajiaji/pyseto/pull/177>`__
- Bump pre-commit/mirrors-mypy to 0.982. `#176 <https://github.com/dajiaji/pyseto/pull/176>`__
- Bump pre-commit/black to 22.10.0. `#176 <https://github.com/dajiaji/pyseto/pull/176>`__
Version 1.6.11
--------------
Released 2022-10-08
- Update dependencies.
- Bump iso8601 to 1.1.0. `#171 <https://github.com/dajiaji/pyseto/pull/171>`__
- Bump cryptography to 38.0.1. `#167 <https://github.com/dajiaji/pyseto/pull/167>`__
- Update dev dependencies.
- Bump pre-commit/mirrors-mypy to 0.981. `#174 <https://github.com/dajiaji/pyseto/pull/174>`__
- Bump sphinx to 5.2.3. `#173 <https://github.com/dajiaji/pyseto/pull/173>`__
- Bump pytest-cov to 4.0.0. `#172 <https://github.com/dajiaji/pyseto/pull/172>`__
- Bump tox to 3.26.0. `#168 <https://github.com/dajiaji/pyseto/pull/168>`__
- Bump pre-commit/black to 22.8.0. `#166 <https://github.com/dajiaji/pyseto/pull/166>`__
- Bump freezegun to 1.2.2. `#165 <https://github.com/dajiaji/pyseto/pull/165>`__
Version 1.6.10
--------------
Released 2022-08-10
- Update dependencies.
- Bump cryptography to 37.0.4. `#157 <https://github.com/dajiaji/pyseto/pull/157>`__
- Bump pycryptodomex to 3.15.0. `#153 <https://github.com/dajiaji/pyseto/pull/153>`__
- Update dev dependencies.
- Bump pre-commit/flake8 to 5.0.4. `#162 <https://github.com/dajiaji/pyseto/pull/162>`__
- Bump sphinx to 5.1.1. `#160 <https://github.com/dajiaji/pyseto/pull/160>`__
- Bump pre-commit/mirrors-mypy to 0.971. `#159 <https://github.com/dajiaji/pyseto/pull/159>`__
- Bump pre-commit/black to 22.6.0. `#156 <https://github.com/dajiaji/pyseto/pull/156>`__
- Bump tox to 3.25.1. `#155 <https://github.com/dajiaji/pyseto/pull/155>`__
- Drop support for Python3.6. `#154 <https://github.com/dajiaji/pyseto/pull/154>`__
Version 1.6.9
-------------
Released 2022-06-18
- Update dependencies.
- Bump cryptography to 37.0.2. `#146 <https://github.com/dajiaji/pyseto/pull/146>`__
- Update dev dependencies.
- Bump sphinx to 5.0.2. `#151 <https://github.com/dajiaji/pyseto/pull/151>`__
- Bump pre-commit/mirrors-mypy to 0.961. `#150 <https://github.com/dajiaji/pyseto/pull/150>`__
- Bump pre-commit/pre-commit-hooks to 4.3.0. `#150 <https://github.com/dajiaji/pyseto/pull/150>`__
Version 1.6.8
-------------
Released 2022-05-01
- Compare MACs in constant time. `#143 <https://github.com/dajiaji/pyseto/pull/143>`__
- Refine pyproject to add tool.poetry.extras. `#138 <https://github.com/dajiaji/pyseto/pull/138>`__
- Update dependencies.
- Bump cryptography to 37.0.1. `#142 <https://github.com/dajiaji/pyseto/pull/142>`__
- Update dev dependencies.
- Bump pre-commit/pre-commit-hooks from 4.1.0 to 4.2.0. `#140 <https://github.com/dajiaji/pyseto/pull/140>`__
- Bump tox from 3.24.5 to 3.25.0. `#139 <https://github.com/dajiaji/pyseto/pull/139>`__
Version 1.6.7
-------------
Released 2022-04-03
- Update dependencies.
- Bump cryptography from 36.0.1 to 36.0.2. `#132 <https://github.com/dajiaji/pyseto/pull/132>`__
- Update dependencies.
- Bump sphinx from 4.4.0 to 4.5.0. `#135 <https://github.com/dajiaji/pyseto/pull/135>`__
- Bump freezegun from 1.1.0 to 1.2.1. `#133 <https://github.com/dajiaji/pyseto/pull/133>`__
- Bump pre-commit/mirrors-mypy from 0.931 to 0.940. `#131 <https://github.com/dajiaji/pyseto/pull/131>`__
Version 1.6.6
-------------
Released 2022-03-01
- Fix bug on to_peer_paserk_id for v1/2 local key. `#128 <https://github.com/dajiaji/pyseto/pull/128>`__
- Add support for to_peer_paserk_id on v1/v3. `#128 <https://github.com/dajiaji/pyseto/pull/128>`__
Version 1.6.5
-------------
Released 2022-01-20
- Avoid re-encoding/decoding output from serializer. `#118 <https://github.com/dajiaji/pyseto/pull/118>`__
Version 1.6.4
-------------
Released 2022-01-14
- Fix bug on deserializing payload in local paseto. `#114 <https://github.com/dajiaji/pyseto/pull/114>`__
Version 1.6.3
-------------
Released 2022-01-03
- Add optional flag to docs dependencies. `#109 <https://github.com/dajiaji/pyseto/pull/109>`__
- Remove tool.poetry.extra from pyproject.toml. `#109 <https://github.com/dajiaji/pyseto/pull/109>`__
- Add pre-commit hooks for checking json, toml and yaml files. `#108 <https://github.com/dajiaji/pyseto/pull/108>`__
Version 1.6.2
-------------
Released 2022-01-02
- Introduce freezegun for test. `#106 <https://github.com/dajiaji/pyseto/pull/106>`__
- Add 2022 to copyright and license. `#105 <https://github.com/dajiaji/pyseto/pull/105>`__
- Add license information to PyPI. `#104 <https://github.com/dajiaji/pyseto/pull/104>`__
Version 1.6.1
-------------
Released 2021-12-31
- Refine github actions. `#99 <https://github.com/dajiaji/pyseto/pull/99>`__
- Use pytest-cov instead of coverage. `#98 <https://github.com/dajiaji/pyseto/pull/98>`__
- Refine pyproject.toml. `#97 <https://github.com/dajiaji/pyseto/pull/97>`__
- Refine tox.ini. `#96 <https://github.com/dajiaji/pyseto/pull/96>`__
- Update pytest requirement form ^5.2 to ^6.2. `#91 <https://github.com/dajiaji/pyseto/pull/91>`__
Version 1.6.0
-------------
Released 2021-12-11
- Migrate to poetry. `#89 <https://github.com/dajiaji/pyseto/pull/89>`__
- Update max line length to 128. `#89 <https://github.com/dajiaji/pyseto/pull/89>`__
Version 1.5.0
-------------
Released 2021-11-24
- Add support for aud verification. `#86 <https://github.com/dajiaji/pyseto/pull/86>`__
- Add to_peer_paserk_id to KeyInterface. `#85 <https://github.com/dajiaji/pyseto/pull/85>`__
Version 1.4.0
-------------
Released 2021-11-22
- Add is_secret to KeyInterface. `#82 <https://github.com/dajiaji/pyseto/pull/82>`__
- Disclose KeyInterface class. `#81 <https://github.com/dajiaji/pyseto/pull/81>`__
- Disclose Token class. `#80 <https://github.com/dajiaji/pyseto/pull/80>`__
Version 1.3.0
-------------
Released 2021-11-20
- Add support for nbf validation. `#76 <https://github.com/dajiaji/pyseto/pull/76>`__
- Add support for dict typed footer. `#75 <https://github.com/dajiaji/pyseto/pull/75>`__
- Add leeway for exp validation. `#74 <https://github.com/dajiaji/pyseto/pull/74>`__
- Add Paseto class. `#72 <https://github.com/dajiaji/pyseto/pull/72>`__
- Add support for exp claim. `#71 <https://github.com/dajiaji/pyseto/pull/71>`__
Version 1.2.0
-------------
Released 2021-11-14
- Refine README (Add CONTRIBUTING, etc.). `#68 <https://github.com/dajiaji/pyseto/pull/68>`__
- Introduce serializer/deserializer for payload. `#67 <https://github.com/dajiaji/pyseto/pull/67>`__
- Sync official test vectors. `#64 <https://github.com/dajiaji/pyseto/pull/64>`__
Version 1.1.0
-------------
Released 2021-10-16
- Add support for Python 3.10. `#60 <https://github.com/dajiaji/pyseto/pull/60>`__
- Add support for k2.seal and k4.seal. `#57 <https://github.com/dajiaji/pyseto/pull/57>`__
- Add py.typed. `#56 <https://github.com/dajiaji/pyseto/pull/56>`__
Version 1.0.0
-------------
Released 2021-09-25
- [Breaking Change] Remove str support for version. `#53 <https://github.com/dajiaji/pyseto/pull/53>`__
- [Breaking Change] Rename type of Key.new to purpose. `#52 <https://github.com/dajiaji/pyseto/pull/52>`__
- Add support for PASERK password-based key wrapping. `#47 <https://github.com/dajiaji/pyseto/pull/47>`__
- Add support for PASERK key wrapping. `#46 <https://github.com/dajiaji/pyseto/pull/46>`__
Version 0.7.1
-------------
Released 2021-09-18
- Make PASERK secret for Ed25519 compliant with PASERK spec. `#44 <https://github.com/dajiaji/pyseto/pull/44>`__
Version 0.7.0
-------------
Released 2021-09-16
- Add from_paserk to Key. `#41 <https://github.com/dajiaji/pyseto/pull/41>`__
- Add support for paserk lid. `#40 <https://github.com/dajiaji/pyseto/pull/40>`__
- Add support for paserk local. `#40 <https://github.com/dajiaji/pyseto/pull/40>`__
- Add to_paserk_id to KeyInterface. `#39 <https://github.com/dajiaji/pyseto/pull/39>`__
- Add to_paserk to KeyInterface. `#38 <https://github.com/dajiaji/pyseto/pull/38>`__
- Fix public key compression for v3.
Version 0.6.1
-------------
Released 2021-09-12
- Add usage examples and related tests. `#36 <https://github.com/dajiaji/pyseto/pull/36>`__
Version 0.6.0
-------------
Released 2021-09-11
- Add tests for sample code. `#34 <https://github.com/dajiaji/pyseto/pull/34>`__
- Allow int type version for Key.new. `#33 <https://github.com/dajiaji/pyseto/pull/33>`__
Version 0.5.0
-------------
Released 2021-09-11
- Add API reference about Token. `#30 <https://github.com/dajiaji/pyseto/pull/30>`__
- Add support for multiple keys on decode. `#29 <https://github.com/dajiaji/pyseto/pull/29>`__
Version 0.4.0
-------------
Released 2021-09-10
- Add tests for public and fix error message. `#26 <https://github.com/dajiaji/pyseto/pull/26>`__
- Add tests for local and fix error message. `#25 <https://github.com/dajiaji/pyseto/pull/25>`__
- Add tests for Token. `#24 <https://github.com/dajiaji/pyseto/pull/24>`__
- Add tests for Key and fix checking argument. `#22 <https://github.com/dajiaji/pyseto/pull/22>`__
- Add docstrings for KeyInterface. `#21 <https://github.com/dajiaji/pyseto/pull/21>`__
Version 0.3.2
-------------
Released 2021-09-07
- Add API reference. `#17 <https://github.com/dajiaji/pyseto/pull/17>`__
Version 0.3.1
-------------
Released 2021-09-06
- Fix readthedocs build error. `#13 <https://github.com/dajiaji/pyseto/pull/13>`__
Version 0.3.0
-------------
Released 2021-09-06
- Add docs. `#10 <https://github.com/dajiaji/pyseto/pull/10>`__
- Add Key.from_asymmetric_key_params. `#8 <https://github.com/dajiaji/pyseto/pull/8>`__
- Make NotSupportedError public. `#8 <https://github.com/dajiaji/pyseto/pull/8>`__
Version 0.2.0
-------------
Released 2021-09-05
- Add Token object as a response of decode(). `#6 <https://github.com/dajiaji/pyseto/pull/6>`__
Version 0.1.0
-------------
Released 2021-09-05
- First public preview release.

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/86/ee/ee/87be2a43f3ff1f56496f451f69243926f025fedbb033666c304c4c161b

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/9b/7d/e2/dc2ad8512710e874c92456698b083c5d18eeb270db33f3c05c5d717777

View File

@ -0,0 +1,34 @@
../../../bin/doesitcache,sha256=1RWmJD4ag9idCYwglvOznVpra4pzgRqnBTbglKKmubo,220
CacheControl-0.12.11.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
CacheControl-0.12.11.dist-info/LICENSE.txt,sha256=hu7uh74qQ_P_H1ZJb0UfaSQ5JvAl_tuwM2ZsMExMFhs,558
CacheControl-0.12.11.dist-info/METADATA,sha256=m33i3CrYUScQ6HTJJFZpiwg8XRjusnDbM_PAXF1xd3c,2218
CacheControl-0.12.11.dist-info/RECORD,,
CacheControl-0.12.11.dist-info/WHEEL,sha256=WzZ8cwjh8l0jtULNjYq1Hpr-WCqCRgPr--TX4P5I1Wo,110
CacheControl-0.12.11.dist-info/entry_points.txt,sha256=HjCekaRCv8kfNqP5WehMR29IWxIA5VrhoOeKrCykCLc,56
CacheControl-0.12.11.dist-info/top_level.txt,sha256=vGYWzpbe3h6gkakV4f7iCK2x3KyK3oMkV5pe5v25-d4,13
cachecontrol/__init__.py,sha256=hrxlv3q7upsfyMw8k3gQ9vagBax1pYHSGGqYlZ0Zk0M,465
cachecontrol/__pycache__/__init__.cpython-310.pyc,,
cachecontrol/__pycache__/_cmd.cpython-310.pyc,,
cachecontrol/__pycache__/adapter.cpython-310.pyc,,
cachecontrol/__pycache__/cache.cpython-310.pyc,,
cachecontrol/__pycache__/compat.cpython-310.pyc,,
cachecontrol/__pycache__/controller.cpython-310.pyc,,
cachecontrol/__pycache__/filewrapper.cpython-310.pyc,,
cachecontrol/__pycache__/heuristics.cpython-310.pyc,,
cachecontrol/__pycache__/serialize.cpython-310.pyc,,
cachecontrol/__pycache__/wrapper.cpython-310.pyc,,
cachecontrol/_cmd.py,sha256=HjFJdGgPOLsvS_5e8BvqYrweXJj1gR7dSsqCB1X24uw,1326
cachecontrol/adapter.py,sha256=du8CsHKttAWL9-pWmSvyNDVzHrH-qfiSOgo6fcanM-0,5021
cachecontrol/cache.py,sha256=Tty45fOjH40fColTGkqKQvQQmbYsMpk-nCyfLcv2vG4,1535
cachecontrol/caches/__init__.py,sha256=h-1cUmOz6mhLsjTjOrJ8iPejpGdLCyG4lzTftfGZvLg,242
cachecontrol/caches/__pycache__/__init__.cpython-310.pyc,,
cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc,,
cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc,,
cachecontrol/caches/file_cache.py,sha256=GpexcE29LoY4MaZwPUTcUBZaDdcsjqyLxZFznk8Hbr4,5271
cachecontrol/caches/redis_cache.py,sha256=bGKAU0IOcJUFmU_blBI3w6zKj1L4IyfDPmLNyzjp_y4,1021
cachecontrol/compat.py,sha256=JOVKyIibp8nNq3jAbv7nXBsNOtXHVEKPh5u8r2qLGVo,730
cachecontrol/controller.py,sha256=6jyT4j4LFsIvfDeSFD6xKK15RCOInwE2Nr8Ug7ICtww,16404
cachecontrol/filewrapper.py,sha256=X4BAQOO26GNOR7nH_fhTzAfeuct2rBQcx_15MyFBpcs,3946
cachecontrol/heuristics.py,sha256=8kAyuZLSCyEIgQr6vbUwfhpqg9ows4mM0IV6DWazevI,4154
cachecontrol/serialize.py,sha256=qbMVbnUSDuQRlJWTn6-CKrXYShaUn9dSigtvtAaI3xA,7076
cachecontrol/wrapper.py,sha256=X3-KMZ20Ho3VtqyVaXclpeQpFzokR5NE8tZSfvKVaB8,774

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/5b/36/7c/7308e1f25d23b542cd8d8ab51e9afe582a824603ebfbe4d7e0fe48d56a

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/1e/30/9e/91a442bfc91f36a3f959e84c476f485b1200e55ae1a0e78aac2ca408b7

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/bc/66/16/ce96dede1ea091a915e1fee208adb1dcac8ade8324579a5ee6fdb9f9de

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/d2/9b/14/3947f93a52db0117af3cf12d1c23d2eafa047fa8360eccc739112132d5

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/dd/a8/44/9f8df0985bf7ef17669e589bce358e9910204927a2153a05308a0b5549

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/37/03/b8/d8a581a6e4d74b94e1c7482c0d19b1cabbdf8ae771ecf29e775291d022

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/ce/03/1f/518df9c3502e122d1aa6416e1e8fcd40e7f3b02c6e67d80dd6cde80218

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/4c/3c/6b/986189bf0b6afd76517637b956749988a2daa1cb3ffaf4b22199ce7d07

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/b0/cc/3b/df26477a89e61b1f41862c80effff83d0268714d3848c45c0e39f22766

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/2b/98/45/ea76f6afc16c1e180b5f68ab77250caa0e0f0b0ac082eebc34d854d5a8

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/90/3a/28/6b3331635f7bdd232d3ee84d27d7faf0f4b870d5b29f261aec2a160b8f

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/dd/70/e3/b5506c89ada43ef76e701d7dfc511cdf333b8522bc24a2a62be6fc72f5

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/5e/05/64/f703affd5efb2db4269b6e0ed91f8f0ecb3c2621dfc35d646ab6af2822

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/be/ce/d4/8246721eb8ad2b49571aa50c0e9ab1164c46808cdc4ea78c6008f56e93

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/fe/5d/71/86d3b20666041cfec5b6693c11066929e817f69dcde6d7240bf3cfbded

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/5b/4b/4e/9819283737f0b7080f1bd4f0d1d526dec67c2158677a14db01cda346de

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/87/55/39/8b1383cccf4dc0ba57f6868825d790d2e6d8783798f66eaeaf4e5d2827

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/79/b8/07/3aa3468c2625228161dd6e4a5d8d7b6909ef7248e1402f533c42aa3ee6

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/b6/13/59/013c59d10faf3a1fd5ed0559bba27f112bebf66700ebb5a5415fe73f50

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/aa/62/1a/80e2e13061b6db5b02ec1007f717b9967c64da2ca295b798a02de2b787

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/6a/bb/f8/521bfb9528002f7e81fd5c790cbfacff5f0a73dfd37a33717ed329e07e

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/f8/5a/cf/d59b021a68be062cc97534b116ee90de7a7e593d9d07e3875b697fa71a

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/5d/16/79/ff4bfcc362d4603d381b3dc491ecbd3f16016499d497ed2b56fdaafe06

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/1f/74/41/af7bfc7c4dd37afeb729f35759594d147bd9c27070b408a749728b61f6

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/7e/b0/a3/ce6489ae53d5a7e6743ff11e7fdc9849f04d6577de8f1bfed35ec6e89a

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/4a/ec/da/62105cfd0eefa0e0c3990dab0b320b9dd3e9985d67eaa8ad0cc9a4ee7a

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/e2/f8/ea/fc737c34aed4f5575a687220b35efe7f25bc4913c365a1f2de329592da

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/39/33/51/19b691b8345f6d0f0432953a8c845bd227475e87a715a7b1576c327838

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/7e/2e/93/11e3746d77339c59322f3b1aa0bc4d9aef623d3f939a9dc22ef26c1340

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/e8/98/40/5ec4956c931895cb9da4dc123440c1f57e4d8e17d118fcd9bdc39cfc0b

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/fc/dd/5a/1758fcf5b853906a32a714bd1bc42b4e0f16d458096fe4de16451958a2

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/09/d6/ae/dc0fd9b26a8e14cf322b84360bf845795db18ddf7f7d4f35dbf7dead73

View File

@ -0,0 +1 @@
/home/runner/.cache/pip/pool/e3/b0/c4/4298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Some files were not shown because too many files have changed in this diff Show More