mirror of
https://github.com/decompme/decomp.me.git
synced 2026-04-29 19:39:37 -05:00
update everything (#599)
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
[subrepo]
|
||||
remote = https://github.com/simonlindholm/asm-differ
|
||||
branch = main
|
||||
commit = 6ea3f697c10711e35d695449b84166c82fc466f8
|
||||
parent = 6c2148cb41f3fcd71607e9956b5450fcb1d221cd
|
||||
commit = 1e81f181396b9561d0ec5b5329b609068a74b348
|
||||
parent = 453f55ed9c7b1f2457cd5048406dc9f118898d30
|
||||
method = merge
|
||||
cmdver = 0.4.5
|
||||
|
||||
Generated
+6
@@ -1116,6 +1116,12 @@ def search_map_file(
|
||||
fail(f"Failed to open map file {project.mapfile} for reading.")
|
||||
|
||||
if project.map_format == "gnu":
|
||||
if for_binary and "load address" not in contents:
|
||||
fail(
|
||||
'Failed to find "load address" in map file. Maybe you need to add\n'
|
||||
'"export LANG := C" to your Makefile to avoid localized output?'
|
||||
)
|
||||
|
||||
lines = contents.split("\n")
|
||||
|
||||
try:
|
||||
|
||||
+3
-3
@@ -13,13 +13,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python 3.6
|
||||
- name: Set up Python 3.7
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.6
|
||||
python-version: 3.7
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade mypy dataclasses types-dataclasses pycparser coverage black==22.3.0
|
||||
python -m pip install --upgrade mypy pycparser coverage black==22.3.0
|
||||
- name: Run tests
|
||||
run: |
|
||||
./run_tests.py
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
[subrepo]
|
||||
remote = https://github.com/matt-kempster/mips_to_c
|
||||
branch = master
|
||||
commit = eb5a48c6b76099a3d9584cbcce0f2c693a226e56
|
||||
parent = d4479355a594070407cc18eb90f835e630e0a3b2
|
||||
commit = d9d3d6575355663122de59f6b2882d8f174e2355
|
||||
parent = e7398be6997239c8813170e6d9e7c34504d4cb42
|
||||
method = merge
|
||||
cmdver = 0.4.5
|
||||
|
||||
@@ -15,12 +15,9 @@ See the `tests/` directory for some example input and output.
|
||||
|
||||
## Install
|
||||
|
||||
This project requires Python 3.6 or later. To install the Python dependencies:
|
||||
This project requires Python 3.7 or later. To install the Python dependencies:
|
||||
```bash
|
||||
python3 -m pip install --upgrade pycparser
|
||||
|
||||
# Optional: If you are on python3.6, you will also need to install "dataclasses"
|
||||
python3.6 -m pip install --upgrade dataclasses
|
||||
```
|
||||
|
||||
You might need to install `pip` first; on Ubuntu this can be done with:
|
||||
|
||||
Generated
+6
-9
@@ -17,6 +17,8 @@ from src.options import Options
|
||||
|
||||
CRASH_STRING = "CRASHED\n"
|
||||
|
||||
PATH_FLAGS = {"--context", "--incbin-dir"}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class TestOptions:
|
||||
@@ -53,16 +55,11 @@ def get_test_flags(flags_path: Path) -> List[str]:
|
||||
flags_str = flags_path.read_text()
|
||||
flags_list = shlex.split(flags_str)
|
||||
for i, flag in enumerate(flags_list):
|
||||
if flag != "--context":
|
||||
if flag not in PATH_FLAGS:
|
||||
continue
|
||||
try:
|
||||
relative_context_path: str = flags_list[i + 1]
|
||||
except IndexError:
|
||||
raise Exception(
|
||||
f"{flags_path} contains --context without argument"
|
||||
) from None
|
||||
absolute_context_path: Path = flags_path.parent / relative_context_path
|
||||
flags_list[i + 1] = str(absolute_context_path)
|
||||
if i + 1 >= len(flags_list):
|
||||
raise Exception(f"{flags_path} contains {flag} without argument")
|
||||
flags_list[i + 1] = str(flags_path.parent / flags_list[i + 1])
|
||||
|
||||
return flags_list
|
||||
|
||||
|
||||
Generated
+74
-29
@@ -80,6 +80,7 @@ from .evaluate import (
|
||||
handle_add,
|
||||
handle_add_double,
|
||||
handle_add_float,
|
||||
handle_add_real,
|
||||
handle_addi,
|
||||
handle_bgez,
|
||||
handle_conditional_move,
|
||||
@@ -159,17 +160,10 @@ LENGTH_THREE: Set[str] = {
|
||||
"dsra",
|
||||
"dsra32",
|
||||
"dsrav",
|
||||
}
|
||||
|
||||
DIV_MULT_INSTRUCTIONS: Set[str] = {
|
||||
"div",
|
||||
"divu",
|
||||
"ddiv",
|
||||
"ddivu",
|
||||
"mult",
|
||||
"multu",
|
||||
"dmult",
|
||||
"dmultu",
|
||||
}
|
||||
|
||||
|
||||
@@ -677,6 +671,20 @@ class GpJumpPattern(SimpleAsmPattern):
|
||||
return Replacement([m.body[1]], len(m.body))
|
||||
|
||||
|
||||
class OriSpPattern(SimpleAsmPattern):
|
||||
"""Some versions of PS2 compilers emit ori for small stack additions instead
|
||||
of addiu. Normalize."""
|
||||
|
||||
pattern = make_pattern("ori $x, $sp, N")
|
||||
|
||||
def replace(self, m: AsmMatch) -> Optional[Replacement]:
|
||||
n = m.literals["N"]
|
||||
if 0 <= n < 16 and m.regs["x"] != Register("sp"):
|
||||
ins = AsmInstruction("addiu", [m.regs["x"], Register("sp"), AsmLiteral(n)])
|
||||
return Replacement([ins], len(m.body))
|
||||
return None
|
||||
|
||||
|
||||
class MipsArch(Arch):
|
||||
arch = Target.ArchEnum.MIPS
|
||||
|
||||
@@ -834,10 +842,6 @@ class MipsArch(Arch):
|
||||
return AsmInstruction("not", [args[0], args[1]])
|
||||
if instr.mnemonic == "addiu" and args[2] == AsmLiteral(0):
|
||||
return AsmInstruction("move", args[:2])
|
||||
if instr.mnemonic in DIV_MULT_INSTRUCTIONS:
|
||||
if args[0] != Register("zero"):
|
||||
raise DecompFailure("first argument to div/mult must be $zero")
|
||||
return AsmInstruction(instr.mnemonic, args[1:])
|
||||
if (
|
||||
instr.mnemonic == "ori"
|
||||
and args[1] == Register("zero")
|
||||
@@ -867,6 +871,8 @@ class MipsArch(Arch):
|
||||
return AsmInstruction("li", [args[0], lit])
|
||||
if instr.mnemonic == "jalr" and args[0] != Register("ra"):
|
||||
raise DecompFailure("Two-argument form of jalr is not supported.")
|
||||
if instr.mnemonic in ("mult", "multu", "dmult", "dmultu", "madd", "maddu"):
|
||||
return AsmInstruction(instr.mnemonic, [Register("zero"), *args])
|
||||
if instr.mnemonic in LENGTH_THREE:
|
||||
return cls.normalize_instruction(
|
||||
AsmInstruction(instr.mnemonic, [args[0]] + args)
|
||||
@@ -1165,18 +1171,32 @@ class MipsArch(Arch):
|
||||
)
|
||||
elif mnemonic in cls.instrs_hi_lo:
|
||||
assert (
|
||||
len(args) == 2
|
||||
len(args) == 3
|
||||
and isinstance(args[0], Register)
|
||||
and isinstance(args[1], Register)
|
||||
and isinstance(args[2], Register)
|
||||
)
|
||||
inputs = [args[0], args[1]]
|
||||
inputs = [args[1], args[2]]
|
||||
if mnemonic in ("madd", "maddu"):
|
||||
inputs.append(Register("lo"))
|
||||
outputs = [Register("hi"), Register("lo")]
|
||||
if args[0] != Register("zero"):
|
||||
outputs.append(args[0])
|
||||
|
||||
def eval_fn(s: NodeState, a: InstrArgs) -> None:
|
||||
hi, lo = cls.instrs_hi_lo[mnemonic](a)
|
||||
s.set_reg(Register("hi"), hi)
|
||||
s.set_reg(Register("lo"), lo)
|
||||
copy_lo_to = a.reg_ref(0)
|
||||
if copy_lo_to != Register("zero"):
|
||||
s.set_reg(copy_lo_to, lo)
|
||||
|
||||
elif mnemonic in ("mtlo", "mthi"):
|
||||
assert len(args) == 1 and isinstance(args[0], Register)
|
||||
inputs = [args[0]]
|
||||
output_reg = Register("hi") if mnemonic == "mthi" else Register("lo")
|
||||
outputs = [output_reg]
|
||||
eval_fn = lambda s, a: s.set_reg(output_reg, a.reg(0))
|
||||
elif mnemonic in cls.instrs_ignore:
|
||||
pass
|
||||
else:
|
||||
@@ -1231,6 +1251,7 @@ class MipsArch(Arch):
|
||||
AlignedMemcpyPattern(),
|
||||
UnalignedMemcpyPattern(),
|
||||
GpJumpPattern(),
|
||||
OriSpPattern(),
|
||||
]
|
||||
|
||||
instrs_ignore: Set[str] = {
|
||||
@@ -1364,37 +1385,61 @@ class MipsArch(Arch):
|
||||
}
|
||||
instrs_hi_lo: Dict[str, Callable[[InstrArgs], Tuple[Expression, Expression]]] = {
|
||||
# Div and mul output two results, to LO/HI registers. (Format: (hi, lo))
|
||||
# PS2's mult/multu/madd/maddu instructions additionally support an output
|
||||
# register to copy LO to, $zero meaning no copying, and GNU as extends
|
||||
# that as a pseudo-instruction to div instructions too.
|
||||
"div": lambda a: (
|
||||
BinaryOp.sint(a.reg(0), "%", a.reg(1)),
|
||||
BinaryOp.sint(a.reg(0), "/", a.reg(1)),
|
||||
BinaryOp.sint(a.reg(1), "%", a.reg(2)),
|
||||
BinaryOp.sint(a.reg(1), "/", a.reg(2)),
|
||||
),
|
||||
"divu": lambda a: (
|
||||
BinaryOp.uint(a.reg(0), "%", a.reg(1)),
|
||||
BinaryOp.uint(a.reg(0), "/", a.reg(1)),
|
||||
BinaryOp.uint(a.reg(1), "%", a.reg(2)),
|
||||
BinaryOp.uint(a.reg(1), "/", a.reg(2)),
|
||||
),
|
||||
"ddiv": lambda a: (
|
||||
BinaryOp.s64(a.reg(0), "%", a.reg(1)),
|
||||
BinaryOp.s64(a.reg(0), "/", a.reg(1)),
|
||||
BinaryOp.s64(a.reg(1), "%", a.reg(2)),
|
||||
BinaryOp.s64(a.reg(1), "/", a.reg(2)),
|
||||
),
|
||||
"ddivu": lambda a: (
|
||||
BinaryOp.u64(a.reg(0), "%", a.reg(1)),
|
||||
BinaryOp.u64(a.reg(0), "/", a.reg(1)),
|
||||
BinaryOp.u64(a.reg(1), "%", a.reg(2)),
|
||||
BinaryOp.u64(a.reg(1), "/", a.reg(2)),
|
||||
),
|
||||
"mult": lambda a: (
|
||||
fold_divmod(BinaryOp.int(a.reg(0), "MULT_HI", a.reg(1))),
|
||||
BinaryOp.int(a.reg(0), "*", a.reg(1)),
|
||||
fold_divmod(BinaryOp.int(a.reg(1), "MULT_HI", a.reg(2))),
|
||||
BinaryOp.int(a.reg(1), "*", a.reg(2)),
|
||||
),
|
||||
"multu": lambda a: (
|
||||
fold_divmod(BinaryOp.int(a.reg(0), "MULTU_HI", a.reg(1))),
|
||||
BinaryOp.int(a.reg(0), "*", a.reg(1)),
|
||||
fold_divmod(BinaryOp.int(a.reg(1), "MULTU_HI", a.reg(2))),
|
||||
BinaryOp.int(a.reg(1), "*", a.reg(2)),
|
||||
),
|
||||
"dmult": lambda a: (
|
||||
BinaryOp.int64(a.reg(0), "DMULT_HI", a.reg(1)),
|
||||
BinaryOp.int64(a.reg(0), "*", a.reg(1)),
|
||||
BinaryOp.int64(a.reg(1), "DMULT_HI", a.reg(2)),
|
||||
BinaryOp.int64(a.reg(1), "*", a.reg(2)),
|
||||
),
|
||||
"dmultu": lambda a: (
|
||||
BinaryOp.int64(a.reg(0), "DMULTU_HI", a.reg(1)),
|
||||
BinaryOp.int64(a.reg(0), "*", a.reg(1)),
|
||||
BinaryOp.int64(a.reg(1), "DMULTU_HI", a.reg(2)),
|
||||
BinaryOp.int64(a.reg(1), "*", a.reg(2)),
|
||||
),
|
||||
# madd/maddu are PS2 extensions, and act as u64(HI|LO) += x * y.
|
||||
# In practice, compiler-generated code only uses the lo part of the
|
||||
# output, which means we also only need the lo part of the input.
|
||||
"madd": lambda a: (
|
||||
ErrorExpr("madd top half"),
|
||||
handle_add_real(
|
||||
Register("lo"),
|
||||
a.regs[Register("lo")],
|
||||
BinaryOp.int(a.reg(1), "*", a.reg(2)),
|
||||
a,
|
||||
),
|
||||
),
|
||||
"maddu": lambda a: (
|
||||
ErrorExpr("maddu top half"),
|
||||
handle_add_real(
|
||||
Register("lo"),
|
||||
a.regs[Register("lo")],
|
||||
BinaryOp.int(a.reg(1), "*", a.reg(2)),
|
||||
a,
|
||||
),
|
||||
),
|
||||
}
|
||||
instrs_destination_first: InstrMap = {
|
||||
|
||||
Generated
+12
-5
@@ -259,9 +259,16 @@ def parse_incbin(
|
||||
args: List[str], options: Options, warnings: List[str]
|
||||
) -> Optional[bytes]:
|
||||
try:
|
||||
filename = args[0]
|
||||
offset = int(args[1], 0)
|
||||
size = int(args[2], 0)
|
||||
if len(args) == 3:
|
||||
filename = args[0]
|
||||
offset = int(args[1], 0)
|
||||
size = int(args[2], 0)
|
||||
elif len(args) == 1:
|
||||
filename = args[0]
|
||||
offset = 0
|
||||
size = -1
|
||||
else:
|
||||
raise ValueError
|
||||
except ValueError:
|
||||
raise DecompFailure(f"Could not parse asm_data .incbin directive: {args}")
|
||||
|
||||
@@ -283,7 +290,7 @@ def parse_incbin(
|
||||
except MemoryError:
|
||||
data = b""
|
||||
|
||||
if len(data) != size:
|
||||
if size >= 0 and len(data) != size:
|
||||
add_warning(
|
||||
warnings,
|
||||
f"Unable to read {size} bytes from {full_path} at {offset:#x} (got {len(data)} bytes)",
|
||||
@@ -517,7 +524,7 @@ def parse_file(f: typing.TextIO, arch: ArchAsm, options: Options) -> AsmFile:
|
||||
asm_file.new_data_bytes(data)
|
||||
|
||||
elif ifdef_level == 0:
|
||||
if directive in ("glabel", "dlabel"):
|
||||
if directive in ("glabel", "dlabel", "jlabel"):
|
||||
parts = line.split()
|
||||
if len(parts) >= 2:
|
||||
process_label(parts[1], glabel=True)
|
||||
|
||||
Generated
+2
-2
@@ -286,11 +286,11 @@ def parse_arg_elems(
|
||||
else:
|
||||
value = JumpTarget(word)
|
||||
elif tok == "%":
|
||||
# A macro (i.e. %hi(...) or %lo(...)).
|
||||
# A MIPS reloc macro, e.g. %hi(...) or %lo(...).
|
||||
assert value is None
|
||||
arg_elems.pop(0)
|
||||
macro_name = parse_word(arg_elems)
|
||||
assert macro_name in ("hi", "lo", "got", "gp_rel", "call16")
|
||||
assert macro_name
|
||||
expect("(")
|
||||
# Get the argument of the macro (which must exist).
|
||||
m = parse_arg_elems(
|
||||
|
||||
Generated
+24
-15
@@ -172,7 +172,7 @@ def load_upper(args: InstrArgs) -> Expression:
|
||||
stack_info = args.stack_info
|
||||
source = stack_info.global_info.address_of_gsym(ref.sym.symbol_name)
|
||||
imm = Literal(ref.offset)
|
||||
return handle_addi_real(args.reg_ref(0), None, source, imm, stack_info, args)
|
||||
return handle_addi_real(args.reg_ref(0), None, source, imm, args)
|
||||
|
||||
|
||||
def handle_convert(expr: Expression, dest_type: Type, source_type: Type) -> Cast:
|
||||
@@ -272,7 +272,7 @@ def handle_addi(args: InstrArgs) -> Expression:
|
||||
return add_imm(
|
||||
output_reg, uw_source.left, Literal(imm.value + uw_source.right.value), args
|
||||
)
|
||||
return handle_addi_real(output_reg, source_reg, source, imm, stack_info, args)
|
||||
return handle_addi_real(output_reg, source_reg, source, imm, args)
|
||||
|
||||
|
||||
def handle_addis(args: InstrArgs) -> Expression:
|
||||
@@ -280,7 +280,7 @@ def handle_addis(args: InstrArgs) -> Expression:
|
||||
source_reg = args.reg_ref(1)
|
||||
source = args.reg(1)
|
||||
imm = args.shifted_imm(2)
|
||||
return handle_addi_real(args.reg_ref(0), source_reg, source, imm, stack_info, args)
|
||||
return handle_addi_real(args.reg_ref(0), source_reg, source, imm, args)
|
||||
|
||||
|
||||
def handle_addi_real(
|
||||
@@ -288,9 +288,9 @@ def handle_addi_real(
|
||||
source_reg: Optional[Register],
|
||||
source: Expression,
|
||||
imm: Expression,
|
||||
stack_info: StackInfo,
|
||||
args: InstrArgs,
|
||||
) -> Expression:
|
||||
stack_info = args.stack_info
|
||||
if source_reg is not None and stack_info.is_stack_reg(source_reg):
|
||||
# Adding to sp, i.e. passing an address.
|
||||
assert isinstance(imm, Literal)
|
||||
@@ -970,9 +970,29 @@ def array_access_from_add(
|
||||
|
||||
|
||||
def handle_add(args: InstrArgs) -> Expression:
|
||||
stack_info = args.stack_info
|
||||
output_reg = args.reg_ref(0)
|
||||
lhs = args.reg(1)
|
||||
rhs = args.reg(2)
|
||||
|
||||
# addiu instructions can sometimes be emitted as addu instead, when the
|
||||
# offset is too large.
|
||||
if isinstance(rhs, Literal):
|
||||
return handle_addi_real(output_reg, args.reg_ref(1), lhs, rhs, args)
|
||||
if isinstance(lhs, Literal):
|
||||
return handle_addi_real(output_reg, args.reg_ref(2), rhs, lhs, args)
|
||||
|
||||
return handle_add_real(output_reg, lhs, rhs, args)
|
||||
|
||||
|
||||
def handle_add_real(
|
||||
output_reg: Register,
|
||||
lhs: Expression,
|
||||
rhs: Expression,
|
||||
args: InstrArgs,
|
||||
) -> Expression:
|
||||
stack_info = args.stack_info
|
||||
|
||||
type = Type.intptr()
|
||||
# Because lhs & rhs are in registers, it shouldn't be possible for them to be arrays.
|
||||
# If they are, treat them the same as pointers anyways.
|
||||
@@ -981,17 +1001,6 @@ def handle_add(args: InstrArgs) -> Expression:
|
||||
elif rhs.type.is_pointer_or_array():
|
||||
type = Type.ptr()
|
||||
|
||||
# addiu instructions can sometimes be emitted as addu instead, when the
|
||||
# offset is too large.
|
||||
if isinstance(rhs, Literal):
|
||||
return handle_addi_real(
|
||||
args.reg_ref(0), args.reg_ref(1), lhs, rhs, stack_info, args
|
||||
)
|
||||
if isinstance(lhs, Literal):
|
||||
return handle_addi_real(
|
||||
args.reg_ref(0), args.reg_ref(2), rhs, lhs, stack_info, args
|
||||
)
|
||||
|
||||
expr = BinaryOp(left=as_intptr(lhs), op="+", right=as_intptr(rhs), type=type)
|
||||
folded_expr = fold_mul_chains(expr)
|
||||
if isinstance(folded_expr, BinaryOp):
|
||||
|
||||
Generated
+17
-12
@@ -1236,16 +1236,7 @@ class Cast(Expression):
|
||||
# higher precedence than casts
|
||||
fn_sig = self.type.get_function_pointer_signature()
|
||||
if fn_sig:
|
||||
prototype_sig = self.expr.type.get_function_pointer_signature()
|
||||
if not prototype_sig or not prototype_sig.unify_with_args(fn_sig):
|
||||
# A function pointer cast is required if the inner expr is not
|
||||
# a function pointer, or has incompatible argument types
|
||||
return f"(({self.type.format(fmt)}) {self.expr.format(fmt)})"
|
||||
if not prototype_sig.return_type.unify(fn_sig.return_type):
|
||||
# Only cast the return value of the call
|
||||
return f"({fn_sig.return_type.format(fmt)}) {self.expr.format(fmt)}"
|
||||
# No cast needed
|
||||
return self.expr.format(fmt)
|
||||
return f"(({self.type.format(fmt)}) {self.expr.format(fmt)})"
|
||||
|
||||
return f"({self.type.format(fmt)}) {self.expr.format(fmt)}"
|
||||
|
||||
@@ -1260,11 +1251,25 @@ class FuncCall(Expression):
|
||||
return self.args + [self.function]
|
||||
|
||||
def format(self, fmt: Formatter) -> str:
|
||||
target = late_unwrap(self.function)
|
||||
fn_sig = target.type.get_function_pointer_signature()
|
||||
if fn_sig and isinstance(target, Cast) and target.reinterpret:
|
||||
prototype_sig = target.expr.type.get_function_pointer_signature()
|
||||
if prototype_sig and prototype_sig.unify_with_args(fn_sig):
|
||||
# We only have to cast the return value of the call, not the
|
||||
# whole function pointer.
|
||||
return Cast(
|
||||
FuncCall(target.expr, self.args, prototype_sig.return_type),
|
||||
self.type,
|
||||
reinterpret=True,
|
||||
silent=True,
|
||||
).format(fmt)
|
||||
|
||||
# TODO: The function type may have a different number of params than it had
|
||||
# when the FuncCall was created. Should we warn that there may be the wrong
|
||||
# number of arguments at this callsite?
|
||||
args = ", ".join(format_expr(arg, fmt) for arg in self.args)
|
||||
return f"{self.function.format(fmt)}({args})"
|
||||
return f"{target.format(fmt)}({args})"
|
||||
|
||||
|
||||
@dataclass(frozen=True, eq=True)
|
||||
@@ -3295,7 +3300,7 @@ class NodeState:
|
||||
transparent: Optional[bool] = None,
|
||||
emit_exactly_once: bool = False,
|
||||
function_return: bool = False,
|
||||
) -> Optional[Expression]:
|
||||
) -> Expression:
|
||||
source = self.regs.current_instr_ref()
|
||||
|
||||
if transparent is None:
|
||||
|
||||
Generated
+1
-1
@@ -1212,7 +1212,7 @@ class FunctionSignature:
|
||||
return False
|
||||
if not self.is_variadic and len(self.params) != len(concrete.params):
|
||||
return False
|
||||
can_unify = self.return_type.unify(concrete.return_type)
|
||||
can_unify = True
|
||||
for x, y in zip(self.params, concrete.params):
|
||||
can_unify &= x.type.unify(y.type)
|
||||
return can_unify
|
||||
|
||||
Generated
+34
@@ -0,0 +1,34 @@
|
||||
# Minimal stubs for Capstone
|
||||
|
||||
from typing import Any, Iterator, List, Optional
|
||||
|
||||
ppc: Any = ...
|
||||
|
||||
_CsMnemonic = int
|
||||
_CsRegister = int
|
||||
|
||||
CS_ARCH_PPC: int = ...
|
||||
CS_MODE_32: int = ...
|
||||
CS_MODE_BIG_ENDIAN: int = ...
|
||||
|
||||
class CsInsn:
|
||||
def __init__(self, cs: Any, all_info: Any) -> None: ...
|
||||
@property
|
||||
def id(self) -> _CsMnemonic: ...
|
||||
@property
|
||||
def address(self) -> int: ...
|
||||
@property
|
||||
def bytes(self) -> bytes: ...
|
||||
@property
|
||||
def mnemonic(self) -> str: ...
|
||||
@property
|
||||
def op_str(self) -> str: ...
|
||||
@property
|
||||
def operands(self) -> List[Any]: ...
|
||||
def reg_name(self, reg_id: _CsRegister, default: Optional[str] = ...) -> str: ...
|
||||
|
||||
class Cs:
|
||||
detail: bool
|
||||
imm_unsigned: bool
|
||||
def __init__(self, arch: int, mode: int) -> None: ...
|
||||
def disasm(self, data: bytes, base_address: int) -> Iterator[CsInsn]: ...
|
||||
+2
-7
@@ -14,18 +14,13 @@ from typing import Any, List, Union
|
||||
from . import c_ast
|
||||
from .c_parser import CParser
|
||||
|
||||
|
||||
def preprocess_file(
|
||||
filename: str, cpp_path: str = "cpp", cpp_args: Union[List[str], str] = ""
|
||||
) -> str:
|
||||
...
|
||||
|
||||
|
||||
) -> str: ...
|
||||
def parse_file(
|
||||
filename: str,
|
||||
use_cpp: bool = False,
|
||||
cpp_path: str = "cpp",
|
||||
cpp_args: str = "",
|
||||
parser: Any = None,
|
||||
) -> c_ast.FileAST:
|
||||
...
|
||||
) -> c_ast.FileAST: ...
|
||||
+108
-308
@@ -7,24 +7,16 @@
|
||||
# License: BSD
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
|
||||
from typing import TextIO, Iterable, List, Any, Optional, Union as Union_
|
||||
from .plyparser import Coord
|
||||
import sys
|
||||
|
||||
|
||||
class Node(object):
|
||||
coord: Optional[Coord]
|
||||
|
||||
def __repr__(self) -> str:
|
||||
...
|
||||
|
||||
def __iter__(self) -> Iterable[Node]:
|
||||
...
|
||||
|
||||
def children(self) -> Iterable[Node]:
|
||||
...
|
||||
|
||||
def __repr__(self) -> str: ...
|
||||
def __iter__(self) -> Iterable[Node]: ...
|
||||
def children(self) -> Iterable[Node]: ...
|
||||
def show(
|
||||
self,
|
||||
buf: TextIO = sys.stdout,
|
||||
@@ -32,9 +24,7 @@ class Node(object):
|
||||
attrnames: bool = False,
|
||||
nodenames: bool = False,
|
||||
showcoord: bool = False,
|
||||
) -> None:
|
||||
...
|
||||
|
||||
) -> None: ...
|
||||
|
||||
Expression = Union_[
|
||||
"ArrayRef",
|
||||
@@ -89,158 +79,57 @@ AnyNode = Union_[
|
||||
"Typename",
|
||||
]
|
||||
|
||||
|
||||
class NodeVisitor:
|
||||
def visit(self, node: Node) -> None:
|
||||
...
|
||||
|
||||
def generic_visit(self, node: Node) -> None:
|
||||
...
|
||||
|
||||
def visit_Alignas(self, node: Alignas) -> None:
|
||||
...
|
||||
|
||||
def visit_ArrayDecl(self, node: ArrayDecl) -> None:
|
||||
...
|
||||
|
||||
def visit_ArrayRef(self, node: ArrayRef) -> None:
|
||||
...
|
||||
|
||||
def visit_Assignment(self, node: Assignment) -> None:
|
||||
...
|
||||
|
||||
def visit_BinaryOp(self, node: BinaryOp) -> None:
|
||||
...
|
||||
|
||||
def visit_Break(self, node: Break) -> None:
|
||||
...
|
||||
|
||||
def visit_Case(self, node: Case) -> None:
|
||||
...
|
||||
|
||||
def visit_Cast(self, node: Cast) -> None:
|
||||
...
|
||||
|
||||
def visit_Compound(self, node: Compound) -> None:
|
||||
...
|
||||
|
||||
def visit_CompoundLiteral(self, node: CompoundLiteral) -> None:
|
||||
...
|
||||
|
||||
def visit_Constant(self, node: Constant) -> None:
|
||||
...
|
||||
|
||||
def visit_Continue(self, node: Continue) -> None:
|
||||
...
|
||||
|
||||
def visit_Decl(self, node: Decl) -> None:
|
||||
...
|
||||
|
||||
def visit_DeclList(self, node: DeclList) -> None:
|
||||
...
|
||||
|
||||
def visit_Default(self, node: Default) -> None:
|
||||
...
|
||||
|
||||
def visit_DoWhile(self, node: DoWhile) -> None:
|
||||
...
|
||||
|
||||
def visit_EllipsisParam(self, node: EllipsisParam) -> None:
|
||||
...
|
||||
|
||||
def visit_EmptyStatement(self, node: EmptyStatement) -> None:
|
||||
...
|
||||
|
||||
def visit_Enum(self, node: Enum) -> None:
|
||||
...
|
||||
|
||||
def visit_Enumerator(self, node: Enumerator) -> None:
|
||||
...
|
||||
|
||||
def visit_EnumeratorList(self, node: EnumeratorList) -> None:
|
||||
...
|
||||
|
||||
def visit_ExprList(self, node: ExprList) -> None:
|
||||
...
|
||||
|
||||
def visit_FileAST(self, node: FileAST) -> None:
|
||||
...
|
||||
|
||||
def visit_For(self, node: For) -> None:
|
||||
...
|
||||
|
||||
def visit_FuncCall(self, node: FuncCall) -> None:
|
||||
...
|
||||
|
||||
def visit_FuncDecl(self, node: FuncDecl) -> None:
|
||||
...
|
||||
|
||||
def visit_FuncDef(self, node: FuncDef) -> None:
|
||||
...
|
||||
|
||||
def visit_Goto(self, node: Goto) -> None:
|
||||
...
|
||||
|
||||
def visit_ID(self, node: ID) -> None:
|
||||
...
|
||||
|
||||
def visit_IdentifierType(self, node: IdentifierType) -> None:
|
||||
...
|
||||
|
||||
def visit_If(self, node: If) -> None:
|
||||
...
|
||||
|
||||
def visit_InitList(self, node: InitList) -> None:
|
||||
...
|
||||
|
||||
def visit_Label(self, node: Label) -> None:
|
||||
...
|
||||
|
||||
def visit_NamedInitializer(self, node: NamedInitializer) -> None:
|
||||
...
|
||||
|
||||
def visit_ParamList(self, node: ParamList) -> None:
|
||||
...
|
||||
|
||||
def visit_PtrDecl(self, node: PtrDecl) -> None:
|
||||
...
|
||||
|
||||
def visit_Return(self, node: Return) -> None:
|
||||
...
|
||||
|
||||
def visit_Struct(self, node: Struct) -> None:
|
||||
...
|
||||
|
||||
def visit_StructRef(self, node: StructRef) -> None:
|
||||
...
|
||||
|
||||
def visit_Switch(self, node: Switch) -> None:
|
||||
...
|
||||
|
||||
def visit_TernaryOp(self, node: TernaryOp) -> None:
|
||||
...
|
||||
|
||||
def visit_TypeDecl(self, node: TypeDecl) -> None:
|
||||
...
|
||||
|
||||
def visit_Typedef(self, node: Typedef) -> None:
|
||||
...
|
||||
|
||||
def visit_Typename(self, node: Typename) -> None:
|
||||
...
|
||||
|
||||
def visit_UnaryOp(self, node: UnaryOp) -> None:
|
||||
...
|
||||
|
||||
def visit_Union(self, node: Union) -> None:
|
||||
...
|
||||
|
||||
def visit_While(self, node: While) -> None:
|
||||
...
|
||||
|
||||
def visit_Pragma(self, node: Pragma) -> None:
|
||||
...
|
||||
|
||||
def visit(self, node: Node) -> None: ...
|
||||
def generic_visit(self, node: Node) -> None: ...
|
||||
def visit_Alignas(self, node: Alignas) -> None: ...
|
||||
def visit_ArrayDecl(self, node: ArrayDecl) -> None: ...
|
||||
def visit_ArrayRef(self, node: ArrayRef) -> None: ...
|
||||
def visit_Assignment(self, node: Assignment) -> None: ...
|
||||
def visit_BinaryOp(self, node: BinaryOp) -> None: ...
|
||||
def visit_Break(self, node: Break) -> None: ...
|
||||
def visit_Case(self, node: Case) -> None: ...
|
||||
def visit_Cast(self, node: Cast) -> None: ...
|
||||
def visit_Compound(self, node: Compound) -> None: ...
|
||||
def visit_CompoundLiteral(self, node: CompoundLiteral) -> None: ...
|
||||
def visit_Constant(self, node: Constant) -> None: ...
|
||||
def visit_Continue(self, node: Continue) -> None: ...
|
||||
def visit_Decl(self, node: Decl) -> None: ...
|
||||
def visit_DeclList(self, node: DeclList) -> None: ...
|
||||
def visit_Default(self, node: Default) -> None: ...
|
||||
def visit_DoWhile(self, node: DoWhile) -> None: ...
|
||||
def visit_EllipsisParam(self, node: EllipsisParam) -> None: ...
|
||||
def visit_EmptyStatement(self, node: EmptyStatement) -> None: ...
|
||||
def visit_Enum(self, node: Enum) -> None: ...
|
||||
def visit_Enumerator(self, node: Enumerator) -> None: ...
|
||||
def visit_EnumeratorList(self, node: EnumeratorList) -> None: ...
|
||||
def visit_ExprList(self, node: ExprList) -> None: ...
|
||||
def visit_FileAST(self, node: FileAST) -> None: ...
|
||||
def visit_For(self, node: For) -> None: ...
|
||||
def visit_FuncCall(self, node: FuncCall) -> None: ...
|
||||
def visit_FuncDecl(self, node: FuncDecl) -> None: ...
|
||||
def visit_FuncDef(self, node: FuncDef) -> None: ...
|
||||
def visit_Goto(self, node: Goto) -> None: ...
|
||||
def visit_ID(self, node: ID) -> None: ...
|
||||
def visit_IdentifierType(self, node: IdentifierType) -> None: ...
|
||||
def visit_If(self, node: If) -> None: ...
|
||||
def visit_InitList(self, node: InitList) -> None: ...
|
||||
def visit_Label(self, node: Label) -> None: ...
|
||||
def visit_NamedInitializer(self, node: NamedInitializer) -> None: ...
|
||||
def visit_ParamList(self, node: ParamList) -> None: ...
|
||||
def visit_PtrDecl(self, node: PtrDecl) -> None: ...
|
||||
def visit_Return(self, node: Return) -> None: ...
|
||||
def visit_Struct(self, node: Struct) -> None: ...
|
||||
def visit_StructRef(self, node: StructRef) -> None: ...
|
||||
def visit_Switch(self, node: Switch) -> None: ...
|
||||
def visit_TernaryOp(self, node: TernaryOp) -> None: ...
|
||||
def visit_TypeDecl(self, node: TypeDecl) -> None: ...
|
||||
def visit_Typedef(self, node: Typedef) -> None: ...
|
||||
def visit_Typename(self, node: Typename) -> None: ...
|
||||
def visit_UnaryOp(self, node: UnaryOp) -> None: ...
|
||||
def visit_Union(self, node: Union) -> None: ...
|
||||
def visit_While(self, node: While) -> None: ...
|
||||
def visit_Pragma(self, node: Pragma) -> None: ...
|
||||
|
||||
class Alignas(Node):
|
||||
alignment: Union_[Expression, Typename]
|
||||
@@ -250,9 +139,7 @@ class Alignas(Node):
|
||||
self,
|
||||
alignment: Union_[Expression, Typename],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class ArrayDecl(Node):
|
||||
type: Type
|
||||
@@ -265,17 +152,13 @@ class ArrayDecl(Node):
|
||||
dim: Optional[Node],
|
||||
dim_quals: List[str],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class ArrayRef(Node):
|
||||
name: Expression
|
||||
subscript: Expression
|
||||
|
||||
def __init__(self, name: Node, subscript: Node, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, name: Node, subscript: Node, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Assignment(Node):
|
||||
op: str
|
||||
@@ -288,23 +171,19 @@ class Assignment(Node):
|
||||
lvalue: Expression,
|
||||
rvalue: Expression,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class BinaryOp(Node):
|
||||
op: str
|
||||
left: Expression
|
||||
right: Expression
|
||||
|
||||
def __init__(self, op: str, left: Node, right: Node, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(
|
||||
self, op: str, left: Node, right: Node, coord: Optional[Coord] = None
|
||||
): ...
|
||||
|
||||
class Break(Node):
|
||||
def __init__(self, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Case(Node):
|
||||
expr: Expression
|
||||
@@ -312,9 +191,7 @@ class Case(Node):
|
||||
|
||||
def __init__(
|
||||
self, expr: Expression, stmts: List[Statement], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Cast(Node):
|
||||
to_type: "Typename"
|
||||
@@ -322,18 +199,14 @@ class Cast(Node):
|
||||
|
||||
def __init__(
|
||||
self, to_type: "Typename", expr: Expression, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Compound(Node):
|
||||
block_items: Optional[List[Statement]]
|
||||
|
||||
def __init__(
|
||||
self, block_items: Optional[List[Statement]], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class CompoundLiteral(Node):
|
||||
type: "Typename"
|
||||
@@ -341,22 +214,16 @@ class CompoundLiteral(Node):
|
||||
|
||||
def __init__(
|
||||
self, type: "Typename", init: "InitList", coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Constant(Node):
|
||||
type: str
|
||||
value: str
|
||||
|
||||
def __init__(self, type: str, value: str, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, type: str, value: str, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Continue(Node):
|
||||
def __init__(self, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Decl(Node):
|
||||
name: Optional[str]
|
||||
@@ -379,23 +246,17 @@ class Decl(Node):
|
||||
init: Optional[Expression],
|
||||
bitsize: Optional[Expression],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class DeclList(Node):
|
||||
decls: List[Decl]
|
||||
|
||||
def __init__(self, decls: List[Decl], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, decls: List[Decl], coord: Optional[Coord] = None): ...
|
||||
|
||||
class Default(Node):
|
||||
stmts: List[Statement]
|
||||
|
||||
def __init__(self, stmts: List[Statement], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, stmts: List[Statement], coord: Optional[Coord] = None): ...
|
||||
|
||||
class DoWhile(Node):
|
||||
cond: Expression
|
||||
@@ -403,19 +264,13 @@ class DoWhile(Node):
|
||||
|
||||
def __init__(
|
||||
self, cond: Expression, stmt: Statement, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class EllipsisParam(Node):
|
||||
def __init__(self, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, coord: Optional[Coord] = None): ...
|
||||
|
||||
class EmptyStatement(Node):
|
||||
def __init__(self, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Enum(Node):
|
||||
name: Optional[str]
|
||||
@@ -426,9 +281,7 @@ class Enum(Node):
|
||||
name: Optional[str],
|
||||
values: "Optional[EnumeratorList]",
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Enumerator(Node):
|
||||
name: str
|
||||
@@ -436,32 +289,28 @@ class Enumerator(Node):
|
||||
|
||||
def __init__(
|
||||
self, name: str, value: Optional[Expression], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class EnumeratorList(Node):
|
||||
enumerators: List[Enumerator]
|
||||
|
||||
def __init__(self, enumerators: List[Enumerator], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(
|
||||
self, enumerators: List[Enumerator], coord: Optional[Coord] = None
|
||||
): ...
|
||||
|
||||
class ExprList(Node):
|
||||
exprs: List[Union_[Expression, Typename]] # typename only for offsetof
|
||||
|
||||
def __init__(
|
||||
self, exprs: List[Union_[Expression, Typename]], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class FileAST(Node):
|
||||
ext: List[ExternalDeclaration]
|
||||
|
||||
def __init__(self, ext: List[ExternalDeclaration], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(
|
||||
self, ext: List[ExternalDeclaration], coord: Optional[Coord] = None
|
||||
): ...
|
||||
|
||||
class For(Node):
|
||||
init: Union_[None, Expression, DeclList]
|
||||
@@ -476,9 +325,7 @@ class For(Node):
|
||||
next: Optional[Expression],
|
||||
stmt: Statement,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class FuncCall(Node):
|
||||
name: Expression
|
||||
@@ -486,9 +333,7 @@ class FuncCall(Node):
|
||||
|
||||
def __init__(
|
||||
self, name: Expression, args: Optional[ExprList], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class FuncDecl(Node):
|
||||
args: Optional[ParamList]
|
||||
@@ -496,9 +341,7 @@ class FuncDecl(Node):
|
||||
|
||||
def __init__(
|
||||
self, args: Optional[ParamList], type: Type, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class FuncDef(Node):
|
||||
decl: Decl
|
||||
@@ -511,30 +354,22 @@ class FuncDef(Node):
|
||||
param_decls: Optional[List[Decl]],
|
||||
body: Compound,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Goto(Node):
|
||||
name: str
|
||||
|
||||
def __init__(self, name: str, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, name: str, coord: Optional[Coord] = None): ...
|
||||
|
||||
class ID(Node):
|
||||
name: str
|
||||
|
||||
def __init__(self, name: str, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, name: str, coord: Optional[Coord] = None): ...
|
||||
|
||||
class IdentifierType(Node):
|
||||
names: List[str] # e.g. ['long', 'int']
|
||||
|
||||
def __init__(self, names: List[str], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, names: List[str], coord: Optional[Coord] = None): ...
|
||||
|
||||
class If(Node):
|
||||
cond: Expression
|
||||
@@ -547,9 +382,7 @@ class If(Node):
|
||||
iftrue: Statement,
|
||||
iffalse: Optional[Statement],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class InitList(Node):
|
||||
exprs: List[Union_[Expression, "NamedInitializer"]]
|
||||
@@ -558,17 +391,13 @@ class InitList(Node):
|
||||
self,
|
||||
exprs: List[Union_[Expression, "NamedInitializer"]],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Label(Node):
|
||||
name: str
|
||||
stmt: Statement
|
||||
|
||||
def __init__(self, name: str, stmt: Statement, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, name: str, stmt: Statement, coord: Optional[Coord] = None): ...
|
||||
|
||||
class NamedInitializer(Node):
|
||||
name: List[Expression] # [ID(x), Constant(4)] for {.x[4] = ...}
|
||||
@@ -576,9 +405,7 @@ class NamedInitializer(Node):
|
||||
|
||||
def __init__(
|
||||
self, name: List[Expression], expr: Expression, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class ParamList(Node):
|
||||
params: List[Union_[Decl, ID, Typename, EllipsisParam]]
|
||||
@@ -587,24 +414,18 @@ class ParamList(Node):
|
||||
self,
|
||||
params: List[Union_[Decl, ID, Typename, EllipsisParam]],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class PtrDecl(Node):
|
||||
quals: List[str]
|
||||
type: Type
|
||||
|
||||
def __init__(self, quals: List[str], type: Type, coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, quals: List[str], type: Type, coord: Optional[Coord] = None): ...
|
||||
|
||||
class Return(Node):
|
||||
expr: Optional[Expression]
|
||||
|
||||
def __init__(self, expr: Optional[Expression], coord: Optional[Coord] = None):
|
||||
...
|
||||
|
||||
def __init__(self, expr: Optional[Expression], coord: Optional[Coord] = None): ...
|
||||
|
||||
class Struct(Node):
|
||||
name: Optional[str]
|
||||
@@ -615,9 +436,7 @@ class Struct(Node):
|
||||
name: Optional[str],
|
||||
decls: Optional[List[Union_[Decl, Pragma]]],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class StructRef(Node):
|
||||
name: Expression
|
||||
@@ -626,9 +445,7 @@ class StructRef(Node):
|
||||
|
||||
def __init__(
|
||||
self, name: Expression, type: str, field: ID, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Switch(Node):
|
||||
cond: Expression
|
||||
@@ -636,9 +453,7 @@ class Switch(Node):
|
||||
|
||||
def __init__(
|
||||
self, cond: Expression, stmt: Statement, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class TernaryOp(Node):
|
||||
cond: Expression
|
||||
@@ -651,9 +466,7 @@ class TernaryOp(Node):
|
||||
iftrue: Expression,
|
||||
iffalse: Expression,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class TypeDecl(Node):
|
||||
declname: Optional[str]
|
||||
@@ -668,9 +481,7 @@ class TypeDecl(Node):
|
||||
align: List[Alignas],
|
||||
type: InnerType,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Typedef(Node):
|
||||
name: str
|
||||
@@ -685,9 +496,7 @@ class Typedef(Node):
|
||||
storage: List[str],
|
||||
type: Type,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Typename(Node):
|
||||
name: None
|
||||
@@ -702,9 +511,7 @@ class Typename(Node):
|
||||
align: List[Alignas],
|
||||
type: Type,
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class UnaryOp(Node):
|
||||
op: str
|
||||
@@ -712,9 +519,7 @@ class UnaryOp(Node):
|
||||
|
||||
def __init__(
|
||||
self, op: str, expr: Union_[Expression, Typename], coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Union(Node):
|
||||
name: Optional[str]
|
||||
@@ -725,9 +530,7 @@ class Union(Node):
|
||||
name: Optional[str],
|
||||
decls: Optional[List[Union_[Decl, Pragma]]],
|
||||
coord: Optional[Coord] = None,
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class While(Node):
|
||||
cond: Expression
|
||||
@@ -735,12 +538,9 @@ class While(Node):
|
||||
|
||||
def __init__(
|
||||
self, cond: Expression, stmt: Statement, coord: Optional[Coord] = None
|
||||
):
|
||||
...
|
||||
|
||||
): ...
|
||||
|
||||
class Pragma(Node):
|
||||
string: str
|
||||
|
||||
def __init__(self, string: str, coord: Optional[Coord] = None):
|
||||
...
|
||||
def __init__(self, string: str, coord: Optional[Coord] = None): ...
|
||||
+2
-6
@@ -8,10 +8,6 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
from . import c_ast
|
||||
|
||||
|
||||
class CGenerator:
|
||||
def __init__(self) -> None:
|
||||
...
|
||||
|
||||
def visit(self, node: c_ast.Node) -> str:
|
||||
...
|
||||
def __init__(self) -> None: ...
|
||||
def visit(self, node: c_ast.Node) -> str: ...
|
||||
+2
-6
@@ -10,17 +10,13 @@
|
||||
from . import c_ast
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
|
||||
class CParser:
|
||||
clex: Any # CLexer
|
||||
cparser: Any # LRParser
|
||||
_scope_stack: List[Dict[str, bool]]
|
||||
_last_yielded_token: Optional[Any]
|
||||
|
||||
def __init__(self) -> None:
|
||||
...
|
||||
|
||||
def __init__(self) -> None: ...
|
||||
def parse(
|
||||
self, text: str, filename: str = "", debuglevel: int = 0
|
||||
) -> c_ast.FileAST:
|
||||
...
|
||||
) -> c_ast.FileAST: ...
|
||||
+2
-7
@@ -10,18 +10,13 @@
|
||||
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class Coord:
|
||||
file: str
|
||||
line: int
|
||||
column: Optional[int]
|
||||
|
||||
def __init__(self, file: str, line: int, column: Optional[int] = None):
|
||||
...
|
||||
|
||||
def __str__(self) -> str:
|
||||
...
|
||||
|
||||
def __init__(self, file: str, line: int, column: Optional[int] = None): ...
|
||||
def __str__(self) -> str: ...
|
||||
|
||||
class ParseError(Exception):
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
--incbin-dir .
|
||||
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
Unable to find README.md in any of 1 search paths
|
||||
*/
|
||||
static s32 foo[2] = { 0x01020304, 0x05060708 }; /* const */
|
||||
static s32 bar = 0x05060708; /* const */
|
||||
|
||||
s32 test(void) {
|
||||
return *foo + bar;
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
.section .rodata
|
||||
foo:
|
||||
.incbin "test.bin"
|
||||
|
||||
bar:
|
||||
.incbin "test.bin", 4, 4
|
||||
|
||||
baz:
|
||||
.incbin "README.md"
|
||||
|
||||
.section .text
|
||||
glabel test
|
||||
lui $a0, %hi(foo)
|
||||
lw $a0, %lo(foo)($a0)
|
||||
lui $a1, %hi(bar)
|
||||
lw $a1, %lo(bar)($a1)
|
||||
addu $v0, $a0, $a1
|
||||
jr $ra
|
||||
nop
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
? foo(void *, ? *, s32, s32); /* extern */
|
||||
|
||||
void test(s32 arg2, s32 arg3) {
|
||||
? sp4;
|
||||
s32 temp_a2;
|
||||
|
||||
M2C_ERROR(unknown instruction: sq $ra, 0x20($sp));
|
||||
temp_a2 = arg2 * 2;
|
||||
foo(sp, &sp4, temp_a2, arg3 + (temp_a2 * 2));
|
||||
M2C_ERROR(unknown instruction: lq $ra, 0x20($sp));
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
glabel test
|
||||
addiu $sp,$sp,-48
|
||||
sq $ra,32($sp)
|
||||
move $a0,$sp
|
||||
ori $a1,$sp,0x4
|
||||
li $t4,2
|
||||
mult $a2,$a2,$t4
|
||||
mtlo $a3
|
||||
madd $a2,$t4
|
||||
jal foo
|
||||
mflo $a3
|
||||
lq $ra,32($sp)
|
||||
jr $ra
|
||||
addiu $sp,$sp,48
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
Warning: missing "jr $ra" in last block (.label).
|
||||
|
||||
? test(void) {
|
||||
return 0x1233FFFF;
|
||||
s32 test(void) {
|
||||
return 0x1233FFFF * 2;
|
||||
}
|
||||
|
||||
+2
@@ -17,6 +17,8 @@ beq $zero, $zero, .label
|
||||
loc_whatever:
|
||||
lui $v0, (0x12345678 >> (8 + 0x4 * 2))
|
||||
.label: addiu $v0, 0xFFFF # subtract 1
|
||||
li $two, 2 # fictive register names are (currently) fine
|
||||
multu $v0, $v0, $two # multiply by two, ps2-style
|
||||
addiu $sp, $sp, 0x34
|
||||
|
||||
func_other:
|
||||
|
||||
Generated
+7
-24
@@ -7,27 +7,8 @@ from elf_file import ElfFile, ElfSection, ElfSymbol
|
||||
# Based on `doldisasm.py` from camthesaxman:
|
||||
# https://gist.github.com/camthesaxman/a36f610dbf4cc53a874322ef146c4123
|
||||
|
||||
|
||||
# Minimal stubs for Capstone
|
||||
# fmt: off
|
||||
CsMnemonic = int
|
||||
CsRegister = int
|
||||
class CsInsn:
|
||||
def __init__(self, cs: Any, all_info: Any) -> None: ...
|
||||
@property
|
||||
def id(self) -> CsMnemonic: ...
|
||||
@property
|
||||
def address(self) -> int: ...
|
||||
@property
|
||||
def bytes(self) -> bytes: ...
|
||||
@property
|
||||
def mnemonic(self) -> str: ...
|
||||
@property
|
||||
def op_str(self) -> str: ...
|
||||
@property
|
||||
def operands(self) -> List[Any]: ...
|
||||
def reg_name(self, reg_id: CsRegister, default: Optional[str] = ...) -> str: ...
|
||||
# fmt: on
|
||||
|
||||
|
||||
MANUAL_MNEMONICS: Set[CsMnemonic] = {
|
||||
@@ -121,14 +102,16 @@ def address_label(addr: int) -> str:
|
||||
|
||||
|
||||
# Returns true if the instruction is a load or store with the given register as a base
|
||||
def is_load_store_reg_offset(insn: CsInsn, reg: Optional[CsRegister]) -> bool:
|
||||
def is_load_store_reg_offset(insn: cs.CsInsn, reg: Optional[CsRegister]) -> bool:
|
||||
return insn.id in LOAD_STORE_MNEMONICS and (
|
||||
reg == None or insn.operands[1].mem.base == reg
|
||||
)
|
||||
|
||||
|
||||
# Converts the instruction to a string, fixing various issues with Capstone
|
||||
def instruction_to_text(insn: CsInsn, raw: int, section: ElfSection) -> Optional[str]:
|
||||
def instruction_to_text(
|
||||
insn: cs.CsInsn, raw: int, section: ElfSection
|
||||
) -> Optional[str]:
|
||||
# Look up the relocation for this address, which is either at offset+0 or offset+2
|
||||
# (It should be possible to determine which offset to use from either the relocation
|
||||
# type or the instruction mnemonic, but for now just check both since they should
|
||||
@@ -418,7 +401,7 @@ def disasm_mcrxr(inst: int) -> Optional[str]:
|
||||
# Disassemble code
|
||||
def disassemble_instruction(
|
||||
address: int,
|
||||
insn: Optional[CsInsn],
|
||||
insn: Optional[cs.CsInsn],
|
||||
raw_bytes: bytes,
|
||||
section: ElfSection,
|
||||
output: TextIO,
|
||||
@@ -470,8 +453,8 @@ def disassemble_instruction(
|
||||
|
||||
def disassemble_bytes(
|
||||
cap: cs.Cs, base_address: int, data: bytes
|
||||
) -> List[Tuple[Optional[CsInsn], int, bytes]]:
|
||||
output: List[Tuple[Optional[CsInsn], int, bytes]] = []
|
||||
) -> List[Tuple[Optional[cs.CsInsn], int, bytes]]:
|
||||
output: List[Tuple[Optional[cs.CsInsn], int, bytes]] = []
|
||||
offset = 0
|
||||
end = len(data)
|
||||
while offset < end:
|
||||
|
||||
Generated
+426
-101
@@ -18,7 +18,7 @@ optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"]
|
||||
tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
|
||||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
@@ -29,10 +29,10 @@ optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[package.extras]
|
||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
|
||||
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
|
||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
|
||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"]
|
||||
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
||||
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
||||
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"]
|
||||
tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
|
||||
|
||||
[[package]]
|
||||
name = "black"
|
||||
@@ -58,7 +58,7 @@ uvloop = ["uvloop (>=0.15.2)"]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2022.9.24"
|
||||
version = "2022.12.7"
|
||||
description = "Python package for providing Mozilla's CA Bundle."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -84,7 +84,7 @@ optional = false
|
||||
python-versions = ">=3.6.0"
|
||||
|
||||
[package.extras]
|
||||
unicode_backport = ["unicodedata2"]
|
||||
unicode-backport = ["unicodedata2"]
|
||||
|
||||
[[package]]
|
||||
name = "click"
|
||||
@@ -132,7 +132,7 @@ jinja2 = "*"
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "38.0.2"
|
||||
version = "38.0.4"
|
||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -143,11 +143,11 @@ 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)"]
|
||||
docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
|
||||
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)"]
|
||||
test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"]
|
||||
|
||||
[[package]]
|
||||
name = "cxxfilt"
|
||||
@@ -172,11 +172,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
wrapt = ">=1.10,<2"
|
||||
|
||||
[package.extras]
|
||||
dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"]
|
||||
dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version (<1)", "configparser (<5)", "importlib-metadata (<3)", "importlib-resources (<4)", "sphinx (<2)", "sphinxcontrib-websupport (<2)", "tox", "zipp (<2)"]
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "4.1.2"
|
||||
version = "4.1.4"
|
||||
description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -219,7 +219,7 @@ optional = false
|
||||
python-versions = ">=3.4,<4"
|
||||
|
||||
[package.extras]
|
||||
develop = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)", "furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"]
|
||||
develop = ["coverage[toml] (>=5.0a4)", "furo (>=2021.8.17b43,<2021.9.0)", "pytest (>=4.6.11)", "sphinx (>=3.5.0)", "sphinx-notfound-page"]
|
||||
docs = ["furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"]
|
||||
testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"]
|
||||
|
||||
@@ -360,7 +360,7 @@ cryptography = ">=3.1,<3.4.0 || >3.4.0"
|
||||
|
||||
[[package]]
|
||||
name = "libcst"
|
||||
version = "0.4.7"
|
||||
version = "0.4.9"
|
||||
description = "A concrete syntax tree with AST-like properties for Python 3.5, 3.6, 3.7, 3.8, 3.9, and 3.10 programs."
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -372,7 +372,7 @@ typing-extensions = ">=3.7.4.2"
|
||||
typing-inspect = ">=0.4.0"
|
||||
|
||||
[package.extras]
|
||||
dev = ["black (==22.3.0)", "coverage (>=4.5.4)", "fixit (==0.1.1)", "flake8 (>=3.7.8)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<0.9)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "setuptools-scm (>=6.0.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==1.3)", "usort (==1.0.0rc1)", "setuptools-rust (>=0.12.1)", "slotscheck (>=0.7.1)", "jinja2 (==3.0.3)", "pyre-check (==0.9.9)"]
|
||||
dev = ["Sphinx (>=5.1.1)", "black (==22.10.0)", "coverage (>=4.5.4)", "fixit (==0.1.1)", "flake8 (>=3.7.8,<5)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.2)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<0.14)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.9)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.0.1)", "usort (==1.0.5)"]
|
||||
|
||||
[[package]]
|
||||
name = "markupsafe"
|
||||
@@ -431,7 +431,7 @@ dev = ["jinja2"]
|
||||
|
||||
[[package]]
|
||||
name = "pathspec"
|
||||
version = "0.10.1"
|
||||
version = "0.10.2"
|
||||
description = "Utility library for gitignore style pattern matching of file paths."
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -439,7 +439,7 @@ python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "9.2.0"
|
||||
version = "9.3.0"
|
||||
description = "Python Imaging Library (Fork)"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -451,15 +451,15 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "2.5.2"
|
||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
version = "2.6.0"
|
||||
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 (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
|
||||
test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"]
|
||||
docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"]
|
||||
test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
|
||||
|
||||
[[package]]
|
||||
name = "psycopg2-binary"
|
||||
@@ -479,15 +479,15 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "pygithub"
|
||||
version = "1.56"
|
||||
version = "1.57"
|
||||
description = "Use the full Github API v3"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
deprecated = "*"
|
||||
pyjwt = ">=2.0"
|
||||
pyjwt = ">=2.4.0"
|
||||
pynacl = ">=1.4.0"
|
||||
requests = ">=2.14.0"
|
||||
|
||||
@@ -504,9 +504,9 @@ python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
crypto = ["cryptography (>=3.4.0)"]
|
||||
dev = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.4.0)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "pre-commit"]
|
||||
dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"]
|
||||
docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"]
|
||||
tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"]
|
||||
tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "pynacl"
|
||||
@@ -520,8 +520,8 @@ python-versions = ">=3.6"
|
||||
cffi = ">=1.4.1"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"]
|
||||
tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"]
|
||||
docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"]
|
||||
tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "python-levenshtein"
|
||||
@@ -531,9 +531,12 @@ category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
setuptools = "*"
|
||||
|
||||
[[package]]
|
||||
name = "pytz"
|
||||
version = "2022.5"
|
||||
version = "2022.6"
|
||||
description = "World timezone definitions, modern and historical"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -563,7 +566,7 @@ 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)"]
|
||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||
|
||||
[[package]]
|
||||
name = "responses"
|
||||
@@ -578,7 +581,20 @@ requests = ">=2.0,<3.0"
|
||||
urllib3 = ">=1.25.10"
|
||||
|
||||
[package.extras]
|
||||
tests = ["pytest (>=4.6)", "coverage (>=6.0.0)", "pytest-cov", "pytest-localserver", "flake8", "types-mock", "types-requests", "mypy"]
|
||||
tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=4.6)", "pytest-cov", "pytest-localserver", "types-mock", "types-requests"]
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "65.6.3"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
|
||||
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
|
||||
testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
|
||||
|
||||
[[package]]
|
||||
name = "sqlparse"
|
||||
@@ -650,7 +666,7 @@ pathspec = ">=0.8.1"
|
||||
|
||||
[[package]]
|
||||
name = "types-pytz"
|
||||
version = "2022.5.0.0"
|
||||
version = "2022.6.0.1"
|
||||
description = "Typing stubs for pytz"
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -658,7 +674,7 @@ python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "types-pyyaml"
|
||||
version = "6.0.12.1"
|
||||
version = "6.0.12.2"
|
||||
description = "Typing stubs for PyYAML"
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -666,7 +682,7 @@ python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "types-requests"
|
||||
version = "2.28.11.2"
|
||||
version = "2.28.11.5"
|
||||
description = "Typing stubs for requests"
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -677,7 +693,7 @@ types-urllib3 = "<1.27"
|
||||
|
||||
[[package]]
|
||||
name = "types-urllib3"
|
||||
version = "1.26.25.1"
|
||||
version = "1.26.25.4"
|
||||
description = "Typing stubs for urllib3"
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -705,7 +721,7 @@ typing-extensions = ">=3.7.4"
|
||||
|
||||
[[package]]
|
||||
name = "tzdata"
|
||||
version = "2022.5"
|
||||
version = "2022.7"
|
||||
description = "Provider of IANA time zone data"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -721,15 +737,15 @@ python-versions = ">=3.6"
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "1.26.12"
|
||||
version = "1.26.13"
|
||||
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.*, <4"
|
||||
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"]
|
||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
|
||||
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
|
||||
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
|
||||
[[package]]
|
||||
@@ -751,7 +767,7 @@ trailrunner = ">=1.0"
|
||||
|
||||
[[package]]
|
||||
name = "watchdog"
|
||||
version = "2.1.9"
|
||||
version = "2.2.0"
|
||||
description = "Filesystem events monitoring"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -782,9 +798,37 @@ asgiref = [
|
||||
{file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"},
|
||||
{file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"},
|
||||
]
|
||||
attrs = []
|
||||
black = []
|
||||
certifi = []
|
||||
attrs = [
|
||||
{file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
|
||||
{file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
|
||||
]
|
||||
black = [
|
||||
{file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"},
|
||||
{file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"},
|
||||
{file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"},
|
||||
{file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"},
|
||||
{file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"},
|
||||
{file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"},
|
||||
{file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"},
|
||||
{file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"},
|
||||
{file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"},
|
||||
{file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"},
|
||||
{file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"},
|
||||
{file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"},
|
||||
{file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"},
|
||||
{file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"},
|
||||
{file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"},
|
||||
{file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"},
|
||||
{file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"},
|
||||
{file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"},
|
||||
{file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"},
|
||||
{file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"},
|
||||
{file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"},
|
||||
]
|
||||
certifi = [
|
||||
{file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
|
||||
{file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
|
||||
]
|
||||
cffi = [
|
||||
{file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
|
||||
{file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
|
||||
@@ -851,12 +895,18 @@ cffi = [
|
||||
{file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
|
||||
{file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
|
||||
]
|
||||
charset-normalizer = []
|
||||
charset-normalizer = [
|
||||
{file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
|
||||
{file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
|
||||
]
|
||||
click = [
|
||||
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
|
||||
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
|
||||
]
|
||||
colorama = []
|
||||
colorama = [
|
||||
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||
]
|
||||
coreapi = [
|
||||
{file = "coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3"},
|
||||
{file = "coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb"},
|
||||
@@ -865,7 +915,34 @@ coreschema = [
|
||||
{file = "coreschema-0.0.4-py2-none-any.whl", hash = "sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f"},
|
||||
{file = "coreschema-0.0.4.tar.gz", hash = "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607"},
|
||||
]
|
||||
cryptography = []
|
||||
cryptography = [
|
||||
{file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-win32.whl", hash = "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744"},
|
||||
{file = "cryptography-38.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d"},
|
||||
{file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353"},
|
||||
{file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7"},
|
||||
{file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd"},
|
||||
{file = "cryptography-38.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2"},
|
||||
{file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b"},
|
||||
{file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6"},
|
||||
{file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876"},
|
||||
{file = "cryptography-38.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b"},
|
||||
{file = "cryptography-38.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285"},
|
||||
{file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b"},
|
||||
{file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083"},
|
||||
{file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee"},
|
||||
{file = "cryptography-38.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9"},
|
||||
{file = "cryptography-38.0.4.tar.gz", hash = "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290"},
|
||||
]
|
||||
cxxfilt = [
|
||||
{file = "cxxfilt-0.3.0-py2.py3-none-any.whl", hash = "sha256:774e85a8d0157775ed43276d89397d924b104135762d86b3a95f81f203094e07"},
|
||||
{file = "cxxfilt-0.3.0.tar.gz", hash = "sha256:7df6464ba5e8efbf0d8974c0b2c78b32546676f06059a83515dbdfa559b34214"},
|
||||
@@ -874,8 +951,14 @@ deprecated = [
|
||||
{file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"},
|
||||
{file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"},
|
||||
]
|
||||
django = []
|
||||
django-cleanup = []
|
||||
django = [
|
||||
{file = "Django-4.1.4-py3-none-any.whl", hash = "sha256:0b223bfa55511f950ff741983d408d78d772351284c75e9f77d2b830b6b4d148"},
|
||||
{file = "Django-4.1.4.tar.gz", hash = "sha256:d38a4e108d2386cb9637da66a82dc8d0733caede4c83c4afdbda78af4214211b"},
|
||||
]
|
||||
django-cleanup = [
|
||||
{file = "django-cleanup-6.0.0.tar.gz", hash = "sha256:922e06ef8839c92bd3ab37a84db6058b8764f3fe44dbb4487bbca941d288280a"},
|
||||
{file = "django_cleanup-6.0.0-py2.py3-none-any.whl", hash = "sha256:997feab3b1f7a2e84f71c29e83b1d664459ec0d4b1924977b1fa25b5babb8703"},
|
||||
]
|
||||
django-cors-headers = [
|
||||
{file = "django-cors-headers-3.13.0.tar.gz", hash = "sha256:f9dc6b4e3f611c3199700b3e5f3398c28757dcd559c2f82932687f3d0443cfdf"},
|
||||
{file = "django_cors_headers-3.13.0-py3-none-any.whl", hash = "sha256:37e42883b5f1f2295df6b4bba96eb2417a14a03270cb24b2a07f021cd4487cf4"},
|
||||
@@ -888,7 +971,10 @@ django-filter = [
|
||||
{file = "django-filter-21.1.tar.gz", hash = "sha256:632a251fa8f1aadb4b8cceff932bb52fe2f826dd7dfe7f3eac40e5c463d6836e"},
|
||||
{file = "django_filter-21.1-py3-none-any.whl", hash = "sha256:f4a6737a30104c98d2e2a5fb93043f36dd7978e0c7ddc92f5998e85433ea5063"},
|
||||
]
|
||||
django-resized = []
|
||||
django-resized = [
|
||||
{file = "django-resized-1.0.2.tar.gz", hash = "sha256:52d727860f64ef4fdadbe2e74b66231c71c59df4d95949e338fcd320450f77fa"},
|
||||
{file = "django_resized-1.0.2-py3-none-any.whl", hash = "sha256:d55a8d4125838486a1e76ffb689f8364f7d579bc7562b04400065602ec2ba7cc"},
|
||||
]
|
||||
django-stubs = [
|
||||
{file = "django-stubs-1.9.0.tar.gz", hash = "sha256:664843091636a917faf5256d028476559dc360fdef9050b6df87ab61b21607bf"},
|
||||
{file = "django_stubs-1.9.0-py3-none-any.whl", hash = "sha256:59c9f81af64d214b1954eaf90f037778c8d2b9c2de946a3cda177fefcf588fbd"},
|
||||
@@ -897,7 +983,10 @@ django-stubs-ext = [
|
||||
{file = "django-stubs-ext-0.4.0.tar.gz", hash = "sha256:3104c4748c34bd741c310a3e6af90dffba46e41bccbe243896e38a708262876b"},
|
||||
{file = "django_stubs_ext-0.4.0-py3-none-any.whl", hash = "sha256:901fc77b6338ea29fa381300ff598dd57d461a4882b756404e2aa7724f76fd7d"},
|
||||
]
|
||||
djangorestframework = []
|
||||
djangorestframework = [
|
||||
{file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"},
|
||||
{file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"},
|
||||
]
|
||||
djangorestframework-stubs = [
|
||||
{file = "djangorestframework-stubs-1.4.0.tar.gz", hash = "sha256:037f0582b1e6c79366b6a839da861474d59210c4bfa1d36291545cb6ede6a0da"},
|
||||
{file = "djangorestframework_stubs-1.4.0-py3-none-any.whl", hash = "sha256:f6ed5fb19c12aa752288ddc6ad28d4ca7c81681ca7f28a19aba9064b2a69489c"},
|
||||
@@ -906,8 +995,14 @@ drf-extensions = [
|
||||
{file = "drf-extensions-0.7.1.tar.gz", hash = "sha256:90abfc11a2221e8daf4cd54457e41ed38cd71134678de9622e806193db027db1"},
|
||||
{file = "drf_extensions-0.7.1-py2.py3-none-any.whl", hash = "sha256:007910437e64aa1d5ad6fc47266a4ac4280e31761e6458eb30fcac7494ac7d4e"},
|
||||
]
|
||||
html-json-forms = []
|
||||
idna = []
|
||||
html-json-forms = [
|
||||
{file = "html-json-forms-1.1.1.tar.gz", hash = "sha256:16dc413dc858fcc53602ad509c1aef735534838e1bae888bf429e210a9c48f6b"},
|
||||
{file = "html_json_forms-1.1.1-py3-none-any.whl", hash = "sha256:51e7e9088bc88e324027144ca25d8bcdd37da28f311a8436bfd88944138ed409"},
|
||||
]
|
||||
idna = [
|
||||
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
|
||||
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
|
||||
]
|
||||
itypes = [
|
||||
{file = "itypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6"},
|
||||
{file = "itypes-1.2.0.tar.gz", hash = "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1"},
|
||||
@@ -919,7 +1014,38 @@ jinja2 = [
|
||||
jwt = [
|
||||
{file = "jwt-1.3.1-py3-none-any.whl", hash = "sha256:61c9170f92e736b530655e75374681d4fcca9cfa8763ab42be57353b2b203494"},
|
||||
]
|
||||
libcst = []
|
||||
libcst = [
|
||||
{file = "libcst-0.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f9e42085c403e22201e5c41e707ef73e4ea910ad9fc67983ceee2368097f54e"},
|
||||
{file = "libcst-0.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1266530bf840cc40633a04feb578bb4cac1aa3aea058cc3729e24eab09a8e996"},
|
||||
{file = "libcst-0.4.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9679177391ccb9b0cdde3185c22bf366cb672457c4b7f4031fcb3b5e739fbd6"},
|
||||
{file = "libcst-0.4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d67bc87e0d8db9434f2ea063734938a320f541f4c6da1074001e372f840f385d"},
|
||||
{file = "libcst-0.4.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e316da5a126f2a9e1d7680f95f907b575f082a35e2f8bd5620c59b2aaaebfe0a"},
|
||||
{file = "libcst-0.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:7415569ab998a85b0fc9af3a204611ea7fadb2d719a12532c448f8fc98f5aca4"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:15ded11ff7f4572f91635e02b519ae959f782689fdb4445bbebb7a3cc5c71d75"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b266867b712a120fad93983de432ddb2ccb062eb5fd2bea748c9a94cb200c36"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:045b3b0b06413cdae6e9751b5f417f789ffa410f2cb2815e3e0e0ea6bef10ec0"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e799add8fba4976628b9c1a6768d73178bf898f0ed1bd1322930c2d3db9063ba"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10479371d04ee8dc978c889c1774bbf6a83df88fa055fcb0159a606f6679c565"},
|
||||
{file = "libcst-0.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:7a98286cbbfa90a42d376900c875161ad02a5a2a6b7c94c0f7afd9075e329ce4"},
|
||||
{file = "libcst-0.4.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:400166fc4efb9aa06ce44498d443aa78519082695b1894202dd73cd507d2d712"},
|
||||
{file = "libcst-0.4.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46123863fba35cc84f7b54dd68826419cabfd9504d8a101c7fe3313ea03776f9"},
|
||||
{file = "libcst-0.4.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27be8db54c0e5fe440021a771a38b81a7dbc23cd630eb8b0e9828b7717f9b702"},
|
||||
{file = "libcst-0.4.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:132bec627b064bd567e7e4cd6c89524d02842151eb0d8f5f3f7ffd2579ec1b09"},
|
||||
{file = "libcst-0.4.9-cp37-cp37m-win_amd64.whl", hash = "sha256:596860090aeed3ee6ad1e59c35c6c4110a57e4e896abf51b91cae003ec720a11"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4487608258109f774300466d4ca97353df29ae6ac23d1502e13e5509423c9d5"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa53993e9a2853efb3ed3605da39f2e7125df6430f613eb67ef886c1ce4f94b5"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ce794483d4c605ef0f5b199a49fb6996f9586ca938b7bfef213bd13858d7ab"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:786e562b54bbcd17a060d1244deeef466b7ee07fe544074c252c4a169e38f1ee"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794250d2359edd518fb698e5d21c38a5bdfc5e4a75d0407b4c19818271ce6742"},
|
||||
{file = "libcst-0.4.9-cp38-cp38-win_amd64.whl", hash = "sha256:76491f67431318c3145442e97dddcead7075b074c59eac51be7cc9e3fffec6ee"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3cf48d7aec6dc54b02aec0b1bb413c5bb3b02d852fd6facf1f05c7213e61a176"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b3348c6b7711a5235b133bd8e11d22e903c388db42485b8ceb5f2aa0fae9b9f"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e33b66762efaa014c38819efae5d8f726dd823e32d5d691035484411d2a2a69"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1350d375d3fb9b20a6cf10c09b2964baca9be753a033dde7c1aced49d8e58387"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3822056dc13326082362db35b3f649e0f4a97e36ddb4e487441da8e0fb9db7b3"},
|
||||
{file = "libcst-0.4.9-cp39-cp39-win_amd64.whl", hash = "sha256:183636141b839aa35b639e100883813744523bc7c12528906621121731b28443"},
|
||||
{file = "libcst-0.4.9.tar.gz", hash = "sha256:01786c403348f76f274dbaf3888ae237ffb73e6ed6973e65eba5c1fc389861dd"},
|
||||
]
|
||||
markupsafe = [
|
||||
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
|
||||
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
|
||||
@@ -992,20 +1118,166 @@ mypy-extensions = [
|
||||
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
|
||||
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
|
||||
]
|
||||
parameterized = []
|
||||
pathspec = []
|
||||
pillow = []
|
||||
platformdirs = [
|
||||
{file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
|
||||
{file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
|
||||
parameterized = [
|
||||
{file = "parameterized-0.8.1-py2.py3-none-any.whl", hash = "sha256:9cbb0b69a03e8695d68b3399a8a5825200976536fe1cb79db60ed6a4c8c9efe9"},
|
||||
{file = "parameterized-0.8.1.tar.gz", hash = "sha256:41bbff37d6186430f77f900d777e5bb6a24928a1c46fb1de692f8b52b8833b5c"},
|
||||
]
|
||||
pathspec = [
|
||||
{file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"},
|
||||
{file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"},
|
||||
]
|
||||
pillow = [
|
||||
{file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"},
|
||||
{file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"},
|
||||
{file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"},
|
||||
{file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"},
|
||||
{file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"},
|
||||
{file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"},
|
||||
{file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"},
|
||||
{file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"},
|
||||
{file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"},
|
||||
{file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"},
|
||||
{file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"},
|
||||
{file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"},
|
||||
{file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"},
|
||||
{file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"},
|
||||
{file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"},
|
||||
{file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"},
|
||||
{file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"},
|
||||
{file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"},
|
||||
]
|
||||
platformdirs = [
|
||||
{file = "platformdirs-2.6.0-py3-none-any.whl", hash = "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca"},
|
||||
{file = "platformdirs-2.6.0.tar.gz", hash = "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"},
|
||||
]
|
||||
psycopg2-binary = [
|
||||
{file = "psycopg2-binary-2.9.5.tar.gz", hash = "sha256:33e632d0885b95a8b97165899006c40e9ecdc634a529dca7b991eb7de4ece41c"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:0775d6252ccb22b15da3b5d7adbbf8cfe284916b14b6dc0ff503a23edb01ee85"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec46ed947801652c9643e0b1dc334cfb2781232e375ba97312c2fc256597632"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3520d7af1ebc838cc6084a3281145d5cd5bdd43fdef139e6db5af01b92596cb7"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cbc554ba47ecca8cd3396ddaca85e1ecfe3e48dd57dc5e415e59551affe568e"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:5d28ecdf191db558d0c07d0f16524ee9d67896edf2b7990eea800abeb23ebd61"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:b9c33d4aef08dfecbd1736ceab8b7b3c4358bf10a0121483e5cd60d3d308cc64"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:05b3d479425e047c848b9782cd7aac9c6727ce23181eb9647baf64ffdfc3da41"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e491e6489a6cb1d079df8eaa15957c277fdedb102b6a68cfbf40c4994412fd0"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:9e32cedc389bcb76d9f24ea8a012b3cb8385ee362ea437e1d012ffaed106c17d"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46850a640df62ae940e34a163f72e26aca1f88e2da79148e1862faaac985c302"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-win32.whl", hash = "sha256:3d790f84201c3698d1bfb404c917f36e40531577a6dda02e45ba29b64d539867"},
|
||||
{file = "psycopg2_binary-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:1764546ffeaed4f9428707be61d68972eb5ede81239b46a45843e0071104d0dd"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_10_9_universal2.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:426c2ae999135d64e6a18849a7d1ad0e1bd007277e4a8f4752eaa40a96b550ff"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cf1d44e710ca3a9ce952bda2855830fe9f9017ed6259e01fcd71ea6287565f5"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:024030b13bdcbd53d8a93891a2cf07719715724fc9fee40243f3bd78b4264b8f"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcda1c84a1c533c528356da5490d464a139b6e84eb77cc0b432e38c5c6dd7882"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:2ef892cabdccefe577088a79580301f09f2a713eb239f4f9f62b2b29cafb0577"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:af0516e1711995cb08dc19bbd05bec7dbdebf4185f68870595156718d237df3e"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e72c91bda9880f097c8aa3601a2c0de6c708763ba8128006151f496ca9065935"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e67b3c26e9b6d37b370c83aa790bbc121775c57bfb096c2e77eacca25fd0233b"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5fc447058d083b8c6ac076fc26b446d44f0145308465d745fba93a28c14c9e32"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d892bfa1d023c3781a3cab8dd5af76b626c483484d782e8bd047c180db590e4c"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-win32.whl", hash = "sha256:2abccab84d057723d2ca8f99ff7b619285d40da6814d50366f61f0fc385c3903"},
|
||||
{file = "psycopg2_binary-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:bef7e3f9dc6f0c13afdd671008534be5744e0e682fb851584c8c3a025ec09720"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:6e63814ec71db9bdb42905c925639f319c80e7909fb76c3b84edc79dadef8d60"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:212757ffcecb3e1a5338d4e6761bf9c04f750e7d027117e74aa3cd8a75bb6fbd"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f8a9bcab7b6db2e3dbf65b214dfc795b4c6b3bb3af922901b6a67f7cb47d5f8"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:56b2957a145f816726b109ee3d4e6822c23f919a7d91af5a94593723ed667835"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:f95b8aca2703d6a30249f83f4fe6a9abf2e627aa892a5caaab2267d56be7ab69"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:70831e03bd53702c941da1a1ad36c17d825a24fbb26857b40913d58df82ec18b"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dbc332beaf8492b5731229a881807cd7b91b50dbbbaf7fe2faf46942eda64a24"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2d964eb24c8b021623df1c93c626671420c6efadbdb8655cb2bd5e0c6fa422ba"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:95076399ec3b27a8f7fa1cc9a83417b1c920d55cf7a97f718a94efbb96c7f503"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:3fc33295cfccad697a97a76dec3f1e94ad848b7b163c3228c1636977966b51e2"},
|
||||
{file = "psycopg2_binary-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:02551647542f2bf89073d129c73c05a25c372fc0a49aa50e0de65c3c143d8bd0"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:63e318dbe52709ed10d516a356f22a635e07a2e34c68145484ed96a19b0c4c68"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7e518a0911c50f60313cb9e74a169a65b5d293770db4770ebf004245f24b5c5"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9d38a4656e4e715d637abdf7296e98d6267df0cc0a8e9a016f8ba07e4aa3eeb"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:68d81a2fe184030aa0c5c11e518292e15d342a667184d91e30644c9d533e53e1"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:7ee3095d02d6f38bd7d9a5358fcc9ea78fcdb7176921528dd709cc63f40184f5"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:46512486be6fbceef51d7660dec017394ba3e170299d1dc30928cbedebbf103a"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b911dfb727e247340d36ae20c4b9259e4a64013ab9888ccb3cbba69b77fd9636"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:422e3d43b47ac20141bc84b3d342eead8d8099a62881a501e97d15f6addabfe9"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c5682a45df7d9642eff590abc73157c887a68f016df0a8ad722dcc0f888f56d7"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:b8104f709590fff72af801e916817560dbe1698028cd0afe5a52d75ceb1fce5f"},
|
||||
{file = "psycopg2_binary-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7b3751857da3e224f5629400736a7b11e940b5da5f95fa631d86219a1beaafec"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:043a9fd45a03858ff72364b4b75090679bd875ee44df9c0613dc862ca6b98460"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9ffdc51001136b699f9563b1c74cc1f8c07f66ef7219beb6417a4c8aaa896c28"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15ba5982c177bc4b23a7940c7e4394197e2d6a424a2d282e7c236b66da6d896"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc85b3777068ed30aff8242be2813038a929f2084f69e43ef869daddae50f6ee"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:215d6bf7e66732a514f47614f828d8c0aaac9a648c46a831955cb103473c7147"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:7d07f552d1e412f4b4e64ce386d4c777a41da3b33f7098b6219012ba534fb2c2"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a0adef094c49f242122bb145c3c8af442070dc0e4312db17e49058c1702606d4"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:00475004e5ed3e3bf5e056d66e5dcdf41a0dc62efcd57997acd9135c40a08a50"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7d88db096fa19d94f433420eaaf9f3c45382da2dd014b93e4bf3215639047c16"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:902844f9c4fb19b17dfa84d9e2ca053d4a4ba265723d62ea5c9c26b38e0aa1e6"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-win32.whl", hash = "sha256:4e7904d1920c0c89105c0517dc7e3f5c20fb4e56ba9cdef13048db76947f1d79"},
|
||||
{file = "psycopg2_binary-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:a36a0e791805aa136e9cbd0ffa040d09adec8610453ee8a753f23481a0057af5"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:25382c7d174c679ce6927c16b6fbb68b10e56ee44b1acb40671e02d29f2fce7c"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9c38d3869238e9d3409239bc05bc27d6b7c99c2a460ea337d2814b35fb4fea1b"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5c6527c8efa5226a9e787507652dd5ba97b62d29b53c371a85cd13f957fe4d42"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e59137cdb970249ae60be2a49774c6dfb015bd0403f05af1fe61862e9626642d"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:d4c7b3a31502184e856df1f7bbb2c3735a05a8ce0ade34c5277e1577738a5c91"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:b9a794cef1d9c1772b94a72eec6da144c18e18041d294a9ab47669bc77a80c1d"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5254cbd4f4855e11cebf678c1a848a3042d455a22a4ce61349c36aafd4c2267"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c5e65c6ac0ae4bf5bef1667029f81010b6017795dcb817ba5c7b8a8d61fab76f"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:74eddec4537ab1f701a1647214734bc52cee2794df748f6ae5908e00771f180a"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:01ad49d68dd8c5362e4bfb4158f2896dc6e0c02e87b8a3770fc003459f1a4425"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-win32.whl", hash = "sha256:937880290775033a743f4836aa253087b85e62784b63fd099ee725d567a48aa1"},
|
||||
{file = "psycopg2_binary-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:484405b883630f3e74ed32041a87456c5e0e63a8e3429aa93e8714c366d62bd1"},
|
||||
]
|
||||
psycopg2-binary = []
|
||||
pycparser = [
|
||||
{file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
|
||||
{file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
|
||||
]
|
||||
pygithub = []
|
||||
pyjwt = []
|
||||
pygithub = [
|
||||
{file = "PyGithub-1.57-py3-none-any.whl", hash = "sha256:5822febeac2391f1306c55a99af2bc8f86c8bf82ded000030cd02c18f31b731f"},
|
||||
{file = "PyGithub-1.57.tar.gz", hash = "sha256:c273f252b278fb81f1769505cc6921bdb6791e1cebd6ac850cc97dad13c31ff3"},
|
||||
]
|
||||
pyjwt = [
|
||||
{file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"},
|
||||
{file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"},
|
||||
]
|
||||
pynacl = [
|
||||
{file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"},
|
||||
{file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"},
|
||||
@@ -1021,7 +1293,10 @@ pynacl = [
|
||||
python-levenshtein = [
|
||||
{file = "python-Levenshtein-0.12.2.tar.gz", hash = "sha256:dc2395fbd148a1ab31090dd113c366695934b9e85fe5a4b2a032745efd0346f6"},
|
||||
]
|
||||
pytz = []
|
||||
pytz = [
|
||||
{file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"},
|
||||
{file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"},
|
||||
]
|
||||
pyyaml = [
|
||||
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
|
||||
@@ -1030,6 +1305,13 @@ pyyaml = [
|
||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
|
||||
{file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
|
||||
{file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
|
||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
|
||||
@@ -1065,8 +1347,18 @@ responses = [
|
||||
{file = "responses-0.18.0-py3-none-any.whl", hash = "sha256:15c63ad16de13ee8e7182d99c9334f64fd81f1ee79f90748d527c28f7ca9dd51"},
|
||||
{file = "responses-0.18.0.tar.gz", hash = "sha256:380cad4c1c1dc942e5e8a8eaae0b4d4edf708f4f010db8b7bcfafad1fcd254ff"},
|
||||
]
|
||||
sqlparse = []
|
||||
stdlibs = []
|
||||
setuptools = [
|
||||
{file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"},
|
||||
{file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"},
|
||||
]
|
||||
sqlparse = [
|
||||
{file = "sqlparse-0.4.3-py3-none-any.whl", hash = "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34"},
|
||||
{file = "sqlparse-0.4.3.tar.gz", hash = "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"},
|
||||
]
|
||||
stdlibs = [
|
||||
{file = "stdlibs-2022.10.9-py3-none-any.whl", hash = "sha256:0deede419c34f9d57cddaff35939af6e186be6b3293c1f022eb0647709fb5b78"},
|
||||
{file = "stdlibs-2022.10.9.tar.gz", hash = "sha256:72a3e4a7fbb40b0e766197e3381c2aabb4ca0442633e0bd99ffeec3908c9fdd8"},
|
||||
]
|
||||
textwrap3 = [
|
||||
{file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"},
|
||||
{file = "textwrap3-0.9.2.zip", hash = "sha256:5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414"},
|
||||
@@ -1079,50 +1371,83 @@ tomli = [
|
||||
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
||||
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
|
||||
]
|
||||
tqdm = []
|
||||
tqdm = [
|
||||
{file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"},
|
||||
{file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"},
|
||||
]
|
||||
trailrunner = [
|
||||
{file = "trailrunner-1.2.1-py3-none-any.whl", hash = "sha256:dff4ee07cf079bcd388585ee6f14911e2c9292d58bf7cc6047912e082ec21283"},
|
||||
{file = "trailrunner-1.2.1.tar.gz", hash = "sha256:157de2b2d82139d9583ec1dbc1981c33b39e24c420bb5294f86083f1f4b44311"},
|
||||
]
|
||||
types-pytz = []
|
||||
types-pyyaml = []
|
||||
types-requests = []
|
||||
types-urllib3 = []
|
||||
typing-extensions = []
|
||||
typing-inspect = []
|
||||
tzdata = []
|
||||
types-pytz = [
|
||||
{file = "types-pytz-2022.6.0.1.tar.gz", hash = "sha256:d078196374d1277e9f9984d49373ea043cf2c64d5d5c491fbc86c258557bd46f"},
|
||||
{file = "types_pytz-2022.6.0.1-py3-none-any.whl", hash = "sha256:bea605ce5d5a5d52a8e1afd7656c9b42476e18a0f888de6be91587355313ddf4"},
|
||||
]
|
||||
types-pyyaml = [
|
||||
{file = "types-PyYAML-6.0.12.2.tar.gz", hash = "sha256:6840819871c92deebe6a2067fb800c11b8a063632eb4e3e755914e7ab3604e83"},
|
||||
{file = "types_PyYAML-6.0.12.2-py3-none-any.whl", hash = "sha256:1e94e80aafee07a7e798addb2a320e32956a373f376655128ae20637adb2655b"},
|
||||
]
|
||||
types-requests = [
|
||||
{file = "types-requests-2.28.11.5.tar.gz", hash = "sha256:a7df37cc6fb6187a84097da951f8e21d335448aa2501a6b0a39cbd1d7ca9ee2a"},
|
||||
{file = "types_requests-2.28.11.5-py3-none-any.whl", hash = "sha256:091d4a5a33c1b4f20d8b1b952aa8fa27a6e767c44c3cf65e56580df0b05fd8a9"},
|
||||
]
|
||||
types-urllib3 = [
|
||||
{file = "types-urllib3-1.26.25.4.tar.gz", hash = "sha256:eec5556428eec862b1ac578fb69aab3877995a99ffec9e5a12cf7fbd0cc9daee"},
|
||||
{file = "types_urllib3-1.26.25.4-py3-none-any.whl", hash = "sha256:ed6b9e8a8be488796f72306889a06a3fc3cb1aa99af02ab8afb50144d7317e49"},
|
||||
]
|
||||
typing-extensions = [
|
||||
{file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
|
||||
{file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
|
||||
]
|
||||
typing-inspect = [
|
||||
{file = "typing_inspect-0.8.0-py3-none-any.whl", hash = "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188"},
|
||||
{file = "typing_inspect-0.8.0.tar.gz", hash = "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d"},
|
||||
]
|
||||
tzdata = [
|
||||
{file = "tzdata-2022.7-py2.py3-none-any.whl", hash = "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d"},
|
||||
{file = "tzdata-2022.7.tar.gz", hash = "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa"},
|
||||
]
|
||||
uritemplate = [
|
||||
{file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"},
|
||||
{file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"},
|
||||
]
|
||||
urllib3 = []
|
||||
usort = []
|
||||
urllib3 = [
|
||||
{file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"},
|
||||
{file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"},
|
||||
]
|
||||
usort = [
|
||||
{file = "usort-1.0.5-py3-none-any.whl", hash = "sha256:d40afa981f03737d8d74f5a1a850f15741182a811df885085adcf893274c044b"},
|
||||
{file = "usort-1.0.5.tar.gz", hash = "sha256:8fed013e458890778bd72d347aa75b3c0ee530b5ae9d78624ad9749a29878fdd"},
|
||||
]
|
||||
watchdog = [
|
||||
{file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"},
|
||||
{file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"},
|
||||
{file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"},
|
||||
{file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"},
|
||||
{file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"},
|
||||
{file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"},
|
||||
{file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"},
|
||||
{file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"},
|
||||
{file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"},
|
||||
{file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"},
|
||||
{file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"},
|
||||
{file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"},
|
||||
{file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"},
|
||||
{file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"},
|
||||
{file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"},
|
||||
{file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"},
|
||||
{file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"},
|
||||
{file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"},
|
||||
{file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"},
|
||||
{file = "watchdog-2.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed91c3ccfc23398e7aa9715abf679d5c163394b8cad994f34f156d57a7c163dc"},
|
||||
{file = "watchdog-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:76a2743402b794629a955d96ea2e240bd0e903aa26e02e93cd2d57b33900962b"},
|
||||
{file = "watchdog-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920a4bda7daa47545c3201a3292e99300ba81ca26b7569575bd086c865889090"},
|
||||
{file = "watchdog-2.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ceaa9268d81205876bedb1069f9feab3eccddd4b90d9a45d06a0df592a04cae9"},
|
||||
{file = "watchdog-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1893d425ef4fb4f129ee8ef72226836619c2950dd0559bba022b0818c63a7b60"},
|
||||
{file = "watchdog-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e99c1713e4436d2563f5828c8910e5ff25abd6ce999e75f15c15d81d41980b6"},
|
||||
{file = "watchdog-2.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a5bd9e8656d07cae89ac464ee4bcb6f1b9cecbedc3bf1334683bed3d5afd39ba"},
|
||||
{file = "watchdog-2.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a048865c828389cb06c0bebf8a883cec3ae58ad3e366bcc38c61d8455a3138f"},
|
||||
{file = "watchdog-2.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e722755d995035dd32177a9c633d158f2ec604f2a358b545bba5bed53ab25bca"},
|
||||
{file = "watchdog-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af4b5c7ba60206759a1d99811b5938ca666ea9562a1052b410637bb96ff97512"},
|
||||
{file = "watchdog-2.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:619d63fa5be69f89ff3a93e165e602c08ed8da402ca42b99cd59a8ec115673e1"},
|
||||
{file = "watchdog-2.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f2b0665c57358ce9786f06f5475bc083fea9d81ecc0efa4733fd0c320940a37"},
|
||||
{file = "watchdog-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:441024df19253bb108d3a8a5de7a186003d68564084576fecf7333a441271ef7"},
|
||||
{file = "watchdog-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a410dd4d0adcc86b4c71d1317ba2ea2c92babaf5b83321e4bde2514525544d5"},
|
||||
{file = "watchdog-2.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28704c71afdb79c3f215c90231e41c52b056ea880b6be6cee035c6149d658ed1"},
|
||||
{file = "watchdog-2.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ac0bd7c206bb6df78ef9e8ad27cc1346f2b41b1fef610395607319cdab89bc1"},
|
||||
{file = "watchdog-2.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:27e49268735b3c27310883012ab3bd86ea0a96dcab90fe3feb682472e30c90f3"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:2af1a29fd14fc0a87fb6ed762d3e1ae5694dcde22372eebba50e9e5be47af03c"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:c7bd98813d34bfa9b464cf8122e7d4bec0a5a427399094d2c17dd5f70d59bc61"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_i686.whl", hash = "sha256:56fb3f40fc3deecf6e518303c7533f5e2a722e377b12507f6de891583f1b48aa"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:74535e955359d79d126885e642d3683616e6d9ab3aae0e7dcccd043bd5a3ff4f"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cf05e6ff677b9655c6e9511d02e9cc55e730c4e430b7a54af9c28912294605a4"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:d6ae890798a3560688b441ef086bb66e87af6b400a92749a18b856a134fc0318"},
|
||||
{file = "watchdog-2.2.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5aed2a700a18c194c39c266900d41f3db0c1ebe6b8a0834b9995c835d2ca66e"},
|
||||
{file = "watchdog-2.2.0-py3-none-win32.whl", hash = "sha256:d0fb5f2b513556c2abb578c1066f5f467d729f2eb689bc2db0739daf81c6bb7e"},
|
||||
{file = "watchdog-2.2.0-py3-none-win_amd64.whl", hash = "sha256:1f8eca9d294a4f194ce9df0d97d19b5598f310950d3ac3dd6e8d25ae456d4c8a"},
|
||||
{file = "watchdog-2.2.0-py3-none-win_ia64.whl", hash = "sha256:ad0150536469fa4b693531e497ffe220d5b6cd76ad2eda474a5e641ee204bbb6"},
|
||||
{file = "watchdog-2.2.0.tar.gz", hash = "sha256:83cf8bc60d9c613b66a4c018051873d6273d9e45d040eed06d6a96241bd8ec01"},
|
||||
]
|
||||
wrapt = [
|
||||
{file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
|
||||
|
||||
+13
-8
@@ -9,14 +9,19 @@
|
||||
"analyze": "ANALYZE=true next build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@codemirror/basic-setup": "^0.20.0",
|
||||
"@codemirror/lang-cpp": "^0.20.0",
|
||||
"@codemirror/next": "^0.16.0",
|
||||
"@codemirror/commands": "^6.1.2",
|
||||
"@codemirror/lang-cpp": "^6.0.2",
|
||||
"@codemirror/language": "^6.3.1",
|
||||
"@codemirror/lint": "^6.1.0",
|
||||
"@codemirror/search": "^6.2.3",
|
||||
"@codemirror/state": "^6.1.4",
|
||||
"@codemirror/view": "^6.7.0",
|
||||
"@primer/octicons-react": "^17.2.0",
|
||||
"@react-hook/resize-observer": "^1.2.2",
|
||||
"@replit/codemirror-indentation-markers": "^0.20.0",
|
||||
"@replit/codemirror-indentation-markers": "^6.1.0",
|
||||
"ansi-to-react": "^6.1.6",
|
||||
"classnames": "^2.3.1",
|
||||
"codemirror": "^6.0.1",
|
||||
"dequal": "^2.0.2",
|
||||
"downshift": "^6.1.7",
|
||||
"fast-myers-diff": "^3.0.1",
|
||||
@@ -26,14 +31,14 @@
|
||||
"next-plausible": "^3.1.4",
|
||||
"next-pwa": "^5.6.0",
|
||||
"next-translate": "^1.6.0",
|
||||
"react": "^18.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-colorful": "^5.6.1",
|
||||
"react-contenteditable": "^3.3.6",
|
||||
"react-dom": "^18.0.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-laag": "^2.0.4",
|
||||
"react-modal": "^3.14.4",
|
||||
"react-simple-resizer": "^2.1.0",
|
||||
"react-timeago": "^6.2.1",
|
||||
"react-timeago": "^7.1.0",
|
||||
"react-virtualized-auto-sizer": "^1.0.6",
|
||||
"react-window": "^1.8.6",
|
||||
"sass": "^1.42.1",
|
||||
@@ -47,7 +52,7 @@
|
||||
"@babel/core": "^7.17.8",
|
||||
"@next/bundle-analyzer": "^12.3.0",
|
||||
"@next/eslint-plugin-next": "^12.1.6",
|
||||
"@svgr/webpack": "^6.2.1",
|
||||
"@svgr/webpack": "^6.5.1",
|
||||
"@types/diff": "^5.0.2",
|
||||
"@types/react-modal": "^3.13.1",
|
||||
"@types/react-timeago": "^4.1.3",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useRef, useState } from "react"
|
||||
|
||||
import { EditorView } from "@codemirror/basic-setup"
|
||||
import { cpp } from "@codemirror/lang-cpp"
|
||||
import { EditorView } from "@codemirror/view"
|
||||
import { useDebounce } from "use-debounce"
|
||||
|
||||
import * as api from "../../lib/api"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useReducer, useRef, useState } from "react"
|
||||
|
||||
import { EditorView } from "@codemirror/basic-setup"
|
||||
import { cpp } from "@codemirror/lang-cpp"
|
||||
import { EditorView } from "@codemirror/view"
|
||||
|
||||
import * as api from "../../lib/api"
|
||||
import basicSetup from "../../lib/codemirror/basic-setup"
|
||||
|
||||
+1285
-1386
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user