diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ba7a8e6a..85fb8a5b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -162,7 +162,7 @@ jobs: run: |- docker build backend \ -t decompme_backend \ - --build-arg ENABLE_WII_GC_SUPPORT=YES \ + --build-arg ENABLE_GC_WII_SUPPORT=YES \ --build-arg ENABLE_PS1_SUPPORT=YES \ --build-arg ENABLE_SATURN_SUPPORT=YES - name: Run tests diff --git a/.vscode/settings.json b/.vscode/settings.json index f39da5d92..0540e0198 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -41,5 +41,7 @@ "backend/decompme" ], "typescript.tsdk": "frontend/node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true + "typescript.enablePromptUseWorkspaceTsdk": true, + "python.linting.mypyEnabled": true, + "python.linting.enabled": true } diff --git a/backend/Dockerfile b/backend/Dockerfile index 39d5f248d..94d156ac7 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -61,7 +61,7 @@ COPY --from=ghcr.io/decompals/wibo:0.4.2 /usr/local/sbin/wibo /usr/bin/ # windows compilers need i386 wine ARG ENABLE_NDS_SUPPORT ARG ENABLE_PS1_SUPPORT -ARG ENABLE_WII_GC_SUPPORT +ARG ENABLE_GC_WII_SUPPORT ARG ENABLE_SATURN_SUPPORT ARG ENABLE_MSDOS_SUPPORT ARG ENABLE_WIN9X_SUPPORT @@ -69,7 +69,7 @@ RUN if [ "${ENABLE_NDS_SUPPORT}" = "YES" ] || \ [ "${ENABLE_PS1_SUPPORT}" = "YES" ] || \ [ "${ENABLE_MSDOS_SUPPORT}" = "YES" ] || \ [ "${ENABLE_WIN9X_SUPPORT}" = "YES" ] || \ - [ "${ENABLE_WII_GC_SUPPORT}" = "YES" ]; then \ + [ "${ENABLE_GC_WII_SUPPORT}" = "YES" ]; then \ dpkg --add-architecture i386 && apt-get update && \ apt-get install -y -o APT::Immediate-Configure=false \ wine; \ @@ -100,7 +100,7 @@ ARG ENABLE_N64_SUPPORT ARG ENABLE_SWITCH_SUPPORT ENV ENABLE_GBA_SUPPORT=${ENABLE_GBA_SUPPORT} -ENV ENABLE_WII_GC_SUPPORT=${ENABLE_WII_GC_SUPPORT} +ENV ENABLE_GC_WII_SUPPORT=${ENABLE_GC_WII_SUPPORT} ENV ENABLE_N64_SUPPORT=${ENABLE_N64_SUPPORT} ENV ENABLE_NDS_SUPPORT=${ENABLE_NDS_SUPPORT} ENV ENABLE_PS1_SUPPORT=${ENABLE_PS1_SUPPORT} @@ -131,7 +131,7 @@ USER user # initialize wine files to /home/user/.wine RUN if [ "${ENABLE_PS1_SUPPORT}" = "YES" ] || \ - [ "${ENABLE_WII_GC_SUPPORT}" = "YES" ] || \ + [ "${ENABLE_GC_WII_SUPPORT}" = "YES" ] || \ [ "${ENABLE_MSDOS_SUPPORT}" = "YES" ] || \ [ "${ENABLE_WIN9X_SUPPORT}" = "YES" ] || \ [ "${ENABLE_NDS_SUPPORT}" = "YES" ]; then \ diff --git a/backend/compilers/download.py b/backend/compilers/download.py old mode 100644 new mode 100755 index 53944d669..7a50d3f54 --- a/backend/compilers/download.py +++ b/backend/compilers/download.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 + import argparse import os import platform @@ -8,7 +9,6 @@ import tarfile from dataclasses import dataclass from pathlib import Path -from typing import Optional from zipfile import ZipFile import requests @@ -59,6 +59,8 @@ def download_file(url: str, log_name: str, dest_path: Path): print(f"Download of {log_name} already exists; skipping download") return + dest_path.parent.mkdir(exist_ok=True, parents=True) + response = requests.get(url, stream=True) total_size_in_bytes = int(response.headers.get("content-length", 0)) block_size = 1024 @@ -86,21 +88,28 @@ def download_file(url: str, log_name: str, dest_path: Path): # Used for compiler packages def download_file_wrapper( - url: str, dl_name: str, dest_name: str, create_subdir: bool, log_name: str + url: str, + dl_name: str, + dest_name: str, + platform_id: str, + create_subdir: bool, + log_name: str, ): - download_file(url=url, log_name=log_name, dest_path=DOWNLOAD_CACHE / dl_name) + download_file( + url=url, log_name=log_name, dest_path=DOWNLOAD_CACHE / platform_id / dl_name + ) + dest_path = COMPILERS_DIR / platform_id if create_subdir: - dest_path = COMPILERS_DIR / dest_name - dest_path.mkdir(exist_ok=True) - else: - dest_path = COMPILERS_DIR + dest_path = COMPILERS_DIR / platform_id / dest_name + dest_path.mkdir(exist_ok=True, parents=True) return dest_path def download_tar( url: str, + platform_id: str, mode: str = "r:gz", dl_name: str = "", dest_name: str = "", @@ -119,9 +128,11 @@ def download_tar( if not log_name: log_name = dest_name - dest_path = download_file_wrapper(url, dl_name, dest_name, create_subdir, log_name) + dest_path = download_file_wrapper( + url, dl_name, dest_name, platform_id, create_subdir, log_name + ) - with tarfile.open(DOWNLOAD_CACHE / dl_name, mode=mode) as f: + with tarfile.open(DOWNLOAD_CACHE / platform_id / dl_name, mode=mode) as f: for member in tqdm( desc=f"Extracting {log_name}", iterable=f.getmembers(), @@ -132,6 +143,7 @@ def download_tar( def download_zip( url: str, + platform_id: str, dl_name: str = "", dest_name: str = "", create_subdir: bool = False, @@ -149,9 +161,11 @@ def download_zip( if not log_name: log_name = dest_name - dest_path = download_file_wrapper(url, dl_name, dest_name, create_subdir, log_name) + dest_path = download_file_wrapper( + url, dl_name, dest_name, platform_id, create_subdir, log_name + ) - with ZipFile(file=DOWNLOAD_CACHE / dl_name) as f: + with ZipFile(file=DOWNLOAD_CACHE / platform_id / dl_name) as f: for file in tqdm( desc=f"Extracting {log_name}", iterable=f.namelist(), @@ -164,49 +178,56 @@ def set_x(file: Path) -> None: file.chmod(file.stat().st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) -def download_ppc_darwin(): +def download_macosx(): if host_os != LINUX: print("MAC OS X cross compiler unsupported on " + host_os.name) return download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5370.tar.gz", + platform_id="macosx", dl_name="gcc-5370.tar.gz", dest_name="gcc-5370", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5370.tar.gz", + platform_id="macosx", dl_name="gcc-5370-cpp.tar.gz", dest_name="gcc-5370-cpp", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5026.tar.gz", + platform_id="macosx", dl_name="gcc-5026.tar.gz", dest_name="gcc-5026", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5026.tar.gz", + platform_id="macosx", dl_name="gcc-5026-cpp.tar.gz", dest_name="gcc-5026-cpp", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5363.tar.gz", + platform_id="macosx", dl_name="gcc-5363.tar.gz", dest_name="gcc-5363", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc-5363.tar.gz", + platform_id="macosx", dl_name="gcc-5363-cpp.tar.gz", dest_name="gcc-5363-cpp", ) download_tar( url="https://github.com/ChrisNonyminus/powerpc-darwin-cross/releases/download/initial/gcc3-1041.tar.gz", + platform_id="macosx", dl_name="gcc3-1041.tar.gz", dest_name="gcc3-1041", ) download_file( url="https://gist.githubusercontent.com/ChrisNonyminus/ec53837b151a65e4233fa53604de4549/raw/d7c6fc639310b938fa519e68a8f8d4909acba2ad/convert_gas_syntax.py", log_name="convert_gas_syntax.py", - dest_path=DOWNLOAD_CACHE / "convert_gas_syntax.py", + dest_path=DOWNLOAD_CACHE / "macosx" / "convert_gas_syntax.py", ) for compiler in [ "gcc-5370", @@ -218,50 +239,27 @@ def download_ppc_darwin(): "gcc3-1041", ]: shutil.copy( - DOWNLOAD_CACHE / "convert_gas_syntax.py", - COMPILERS_DIR / compiler / "convert_gas_syntax.py", + DOWNLOAD_CACHE / "macosx" / "convert_gas_syntax.py", + COMPILERS_DIR / "macosx" / compiler / "convert_gas_syntax.py", ) -def download_codewarrior(): - download_zip( - url="https://github.com/simdecomp/sims1_mac_decomp/files/8766562/MWCPPC_COMPILERS.zip", - dl_name="codewarrior_compilers.zip", - dest_name="codewarrior", - create_subdir=True, - ) - compiler_dir = COMPILERS_DIR / "codewarrior" / "compilers" - for ver in ["Pro5", "Pro6"]: - lowercase_lmgr = compiler_dir / ver / "lmgr326b.dll" - if lowercase_lmgr.exists(): - shutil.move(lowercase_lmgr, compiler_dir / ver / "LMGR326B.dll") - - lowercase_lmgr = compiler_dir / ver / "lmgr8c.dll" - if lowercase_lmgr.exists(): - shutil.move(lowercase_lmgr, compiler_dir / ver / "LMGR8C.dll") - - set_x(compiler_dir / ver / "MWCPPC.exe") - set_x(compiler_dir / ver / "MWLinkPPC.exe") - - try: - shutil.move(compiler_dir / "Pro5", COMPILERS_DIR / "mwcppc_23") - shutil.move(compiler_dir / "Pro6", COMPILERS_DIR / "mwcppc_24") - except shutil.Error: - pass - - def download_gba(): if host_os != LINUX: print("agbcc unsupported on " + host_os.name) return def download_agbcc(url: str, dest: str): - dest_dir = COMPILERS_DIR / dest + dest_dir = COMPILERS_DIR / "gba" / dest if dest_dir.exists(): print(f"{dest} already exists, skipping") return - download_tar(url=url, dest_name=dest) + download_tar( + url=url, + platform_id="gba", + dest_name=dest, + ) download_agbcc( "https://github.com/pret/agbcc/releases/download/release/agbcc.tar.gz", @@ -275,7 +273,7 @@ def download_agbcc(url: str, dest: str): def download_switch(): def dest_for_version(version: str) -> Path: - return COMPILERS_DIR / f"clang-{version}" + return COMPILERS_DIR / "switch" / f"clang-{version}" @dataclass class Version: @@ -328,15 +326,23 @@ class Version: package_name = f"clang+llvm-{version_str}-x86_64-{clang_package_name}" url = f"https://releases.llvm.org/{version_str}/{package_name}.tar.xz" - download_tar(url=url, mode="r:xz", log_name=log_name, create_subdir=False) + download_tar( + url=url, + platform_id="switch", + mode="r:xz", + log_name=log_name, + create_subdir=False, + ) # Somehow the MacOS tar extracts to a directory with a different name, so we have to find it again if host_os == MACOS: package_name = next( - COMPILERS_DIR.glob(f"clang+llvm-{version_str}-x86_64-*" + os.path.sep) + (COMPILERS_DIR / "switch").glob( + f"clang+llvm-{version_str}-x86_64-*" + os.path.sep + ) ).name - shutil.move(COMPILERS_DIR / package_name, dest_dir) + shutil.move(COMPILERS_DIR / "switch" / package_name, dest_dir) # 3.9.1 requires ld.lld and doesn't have it, so we copy it from 4.0.1 if version_str == "3.9.1": @@ -347,10 +353,11 @@ class Version: # Set up musl download_zip( url="https://github.com/open-ead/botw-lib-musl/archive/25ed8669943bee65a650700d340e451eda2a26ba.zip", + platform_id="switch", log_name="musl", ) musl_name = "botw-lib-musl-25ed8669943bee65a650700d340e451eda2a26ba" - musl_dest = COMPILERS_DIR / musl_name + musl_dest = COMPILERS_DIR / "switch" / musl_name for version_str in botw_lib_musl_versions: ver_dest = dest_for_version(version_str) if ver_dest.exists(): @@ -360,25 +367,27 @@ class Version: def download_n64(): def download_gcc(gcc_url: str, binutils_url, dest: str): - dest_path = COMPILERS_DIR / dest + dest_path = COMPILERS_DIR / "n64" / dest if dest_path.exists(): print(f"{dest} already exists, skipping") else: download_tar( url=gcc_url, + platform_id="n64", dest_name=dest, ) download_tar( url=binutils_url, + platform_id="n64", dl_name=f"{dest}-binutils", dest_name=dest, ) - # GCC 2.8.1 + # GCC 2.8.1 (Paper Mario) download_gcc( gcc_url=f"https://github.com/pmret/gcc-papermario/releases/download/master/{host_os.n64_gcc_os}.tar.gz", binutils_url=f"https://github.com/pmret/binutils-papermario/releases/download/master/{host_os.n64_gcc_os}.tar.gz", - dest="gcc2.8.1", + dest="gcc2.8.1pm", ) # GCC 2.7.2 KMC @@ -391,53 +400,57 @@ def download_gcc(gcc_url: str, binutils_url, dest: str): # IDO ido_versions = ["5.3", "7.1"] for version in ido_versions: - dest = COMPILERS_DIR / f"ido{version}" + dest = COMPILERS_DIR / "n64" / f"ido{version}" if dest.exists(): print(f"ido{version} already exists, skipping") else: download_tar( url=f"https://github.com/ethteck/ido-static-recomp/releases/download/v0.5/ido-{version}-recomp-{host_os.ido_pkg}.tar.gz", + platform_id="n64", dest_name=f"ido{version}", ) - dest = COMPILERS_DIR / "ido6.0" + dest = COMPILERS_DIR / "n64" / "ido6.0" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/LLONSIT/qemu-irix-helpers/raw/n/qemu/ido6.0.tar.xz", + platform_id="n64", mode="r:xz", dl_name="ido6.0" + ".tar.xz", dest_name="ido6.0", ) - dest = COMPILERS_DIR / "ido5.3_c++" + dest = COMPILERS_DIR / "n64" / "ido5.3_c++" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/LLONSIT/qemu-irix-helpers/raw/n/qemu/ido5.3_c++.tar.xz", + platform_id="n64", mode="r:xz", dl_name="ido5.3_c++" + ".tar.xz", dest_name="ido5.3_c++", ) - dest = COMPILERS_DIR / "MipsPro7.4.4" + dest = COMPILERS_DIR / "n64" / "mips_pro_744" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/LLONSIT/qemu-irix-helpers/raw/n/qemu/mipspro7.4.4.tar.xz", + platform_id="n64", mode="r:xz", - dl_name="mipspro7.4.4" + ".tar.xz", - dest_name="MipsPro7.4.4", + dl_name="mips_pro_744" + ".tar.xz", + dest_name="mips_pro_744", ) # SN - dest = COMPILERS_DIR / "gcc2.7.2sn" + dest = COMPILERS_DIR / "n64" / "gcc2.7.2sn" if dest.is_dir(): print(f"{dest} already exists, skipping") else: @@ -461,13 +474,14 @@ def download_gcc(gcc_url: str, binutils_url, dest: str): set_x(dest / "psyq-obj-parser") # SN - dest = COMPILERS_DIR / "gcc2.7.2snew" + dest = COMPILERS_DIR / "n64" / "gcc2.7.2snew" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/decompals/SN64-gcc/releases/download/gcc-2.7.2-970404/SN64-gcc-2.7.2-970404-linux.tar.gz", + platform_id="n64", dest_name="gcc2.7.2snew", ) download_file( @@ -477,7 +491,7 @@ def download_gcc(gcc_url: str, binutils_url, dest: str): ) # SN - dest = COMPILERS_DIR / "gcc2.8.1sn" + dest = COMPILERS_DIR / "n64" / "gcc2.8.1sn" if dest.is_dir(): print(f"{dest} already exists, skipping") else: @@ -506,24 +520,26 @@ def download_gcc(gcc_url: str, binutils_url, dest: str): set_x(dest / "psyq-obj-parser") # iQue - dest = COMPILERS_DIR / "egcs_1.1.2-4" + dest = COMPILERS_DIR / "n64" / "egcs_1.1.2-4" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/AngheloAlf/egcs_1.1.2-4/releases/download/latest/egcs_1.1.2-4.tar.gz", + platform_id="n64", dest_name="egcs_1.1.2-4", ) # libdragon - dest = COMPILERS_DIR / "gcc4.4.0-mips64-elf" + dest = COMPILERS_DIR / "n64" / "gcc4.4.0-mips64-elf" if dest.is_dir(): print(f"{dest} already exists, skipping") else: dest.mkdir() download_tar( url="https://github.com/devwizard64/gcc4.4.0-mips64-elf/releases/download/latest/gcc4.4.0-mips64-elf.tar.gz", + platform_id="n64", dest_name="gcc4.4.0-mips64-elf", ) @@ -533,15 +549,17 @@ def download_ps1(): print("ps1 compilers unsupported on " + host_os.name) return - compilers_path = COMPILERS_DIR / "psyq-compilers" + compilers_path = COMPILERS_DIR / "ps1" / "psyq-compilers" download_tar( url="https://github.com/Xeeynamo/wine-psyq/releases/download/psyq-binaries/psyq-msdos.tar.gz", + platform_id="ps1", dest_name="psyq-msdos-compilers", ) download_tar( url="https://github.com/mkst/esa/releases/download/psyq-binaries/psyq-compilers.tar.gz", + platform_id="ps1", dest_name="psyq-compilers", ) @@ -553,15 +571,18 @@ def download_ps1(): # transfer MS-DOS compilers into the same directory of their Win32 counterpart shutil.move( - COMPILERS_DIR / "psyq-msdos-compilers/psyq3.3", COMPILERS_DIR / "psyq-compilers" + COMPILERS_DIR / "ps1" / "psyq-msdos-compilers/psyq3.3", + COMPILERS_DIR / "ps1" / "psyq-compilers", ) shutil.move( - COMPILERS_DIR / "psyq-msdos-compilers/psyq3.5", COMPILERS_DIR / "psyq-compilers" + COMPILERS_DIR / "ps1" / "psyq-msdos-compilers/psyq3.5", + COMPILERS_DIR / "ps1" / "psyq-compilers", ) shutil.move( - COMPILERS_DIR / "psyq-msdos-compilers/psyq3.6", COMPILERS_DIR / "psyq-compilers" + COMPILERS_DIR / "ps1" / "psyq-msdos-compilers/psyq3.6", + COMPILERS_DIR / "ps1" / "psyq-compilers", ) - shutil.rmtree(COMPILERS_DIR / "psyq-msdos-compilers/") + shutil.rmtree(COMPILERS_DIR / "ps1" / "psyq-msdos-compilers/") psyq_to_gcc = { "3.3": "2.6.0", @@ -575,9 +596,9 @@ def download_ps1(): } for version in psyq_to_gcc.keys(): - dest = COMPILERS_DIR / f"psyq{version}" + dest = COMPILERS_DIR / "ps1" / f"psyq{version}" if not dest.exists(): - shutil.move(compilers_path / f"psyq{version}", COMPILERS_DIR) + shutil.move(compilers_path / f"psyq{version}", COMPILERS_DIR / "ps1") psyq_obj_parser = dest / "psyq-obj-parser" shutil.copy( compilers_path / "psyq", @@ -624,6 +645,7 @@ def download_ps1(): maspsx_hash = "44f8a152e5b49e56640fd3cfc20d6bf428e1205e" download_zip( url=f"https://github.com/mkst/maspsx/archive/{maspsx_hash}.zip", + platform_id="ps1", dl_name="maspsx", dest_name=compilers_path, create_subdir=True, @@ -637,12 +659,13 @@ def download_ps1(): for gcc_name, url in old_gcc_urls.items(): gcc_id = old_gcc_ids[gcc_name] - gcc_dir = COMPILERS_DIR / f"{gcc_id}" + gcc_dir = COMPILERS_DIR / "ps1" / f"{gcc_id}" if gcc_dir.exists(): print(f"{gcc_dir} already exists, skipping download.") else: download_tar( url=url, + platform_id="ps1", dl_name=f"{gcc_name}.tar.gz", dest_name=f"{gcc_id}", ) @@ -676,24 +699,25 @@ def download_saturn(): print("saturn compilers unsupported on " + host_os.name) return - src = COMPILERS_DIR / "saturn-compilers-main" + src = COMPILERS_DIR / "saturn" / "saturn-compilers-main" if src.is_dir(): shutil.rmtree(src) - dest = COMPILERS_DIR / "cygnus-2.7-96Q3" + dest = COMPILERS_DIR / "saturn" / "cygnus-2.7-96Q3" if dest.is_dir(): shutil.rmtree(dest) download_zip( - url="https://github.com/sozud/saturn-compilers/archive/refs/heads/main.zip" + url="https://github.com/sozud/saturn-compilers/archive/refs/heads/main.zip", + platform_id="saturn", ) shutil.move( - f"{COMPILERS_DIR}/saturn-compilers-main/cygnus-2.7-96Q3-bin", - f"{COMPILERS_DIR}/cygnus-2.7-96Q3", + f"{COMPILERS_DIR}/saturn/saturn-compilers-main/cygnus-2.7-96Q3-bin", + f"{COMPILERS_DIR}/saturn/cygnus-2.7-96Q3", ) - shutil.rmtree(f"{COMPILERS_DIR}/saturn-compilers-main") + shutil.rmtree(f"{COMPILERS_DIR}/saturn/saturn-compilers-main") def download_ps2(): @@ -713,6 +737,7 @@ def download_ps2(): for name, url in ps2_compilers.items(): download_tar( url=url, + platform_id="ps2", mode="r:xz", dl_name=name + ".tar.xz", dest_name=name, @@ -722,6 +747,7 @@ def download_ps2(): # Extra compiler collection download_tar( url="https://cdn.discordapp.com/attachments/1067192766918037536/1120445708516995118/ps2_compilers.tar.xz", + platform_id="ps2", mode="r:xz", dl_name="ps2_compilers.tar.xz", create_subdir=False, @@ -763,14 +789,15 @@ def download_nds(): download_zip( url="https://cdn.discordapp.com/attachments/698589325620936736/845499146982129684/mwccarm.zip", + platform_id="nds_arm9", ) # Organize dirs, copy license for group_id, group in compiler_groups.items(): - mwccarm_dir = COMPILERS_DIR / "mwccarm" / group_id - license_path = COMPILERS_DIR / "mwccarm" / "license.dat" + mwccarm_dir = COMPILERS_DIR / "nds_arm9" / "mwccarm" / group_id + license_path = COMPILERS_DIR / "nds_arm9" / "mwccarm" / "license.dat" for ver, compiler_id in group.items(): - compiler_dir = COMPILERS_DIR / compiler_id + compiler_dir = COMPILERS_DIR / "nds_arm9" / compiler_id if not compiler_dir.exists(): shutil.move(mwccarm_dir / ver, compiler_dir) @@ -783,10 +810,10 @@ def download_nds(): set_x(compiler_dir / "mwccarm.exe") - shutil.rmtree(COMPILERS_DIR / "mwccarm") + shutil.rmtree(COMPILERS_DIR / "nds_arm9" / "mwccarm") -def download_wii_gc(): +def download_gc_wii(): compiler_groups = { "GC": { "1.0": "mwcc_233_144", @@ -818,14 +845,15 @@ def download_wii_gc(): } download_zip( - url="https://cdn.discordapp.com/attachments/727918646525165659/1129759991696457728/GC_WII_COMPILERS.zip" + url="https://cdn.discordapp.com/attachments/727918646525165659/1129759991696457728/GC_WII_COMPILERS.zip", + platform_id="gc_wii", ) for group_id, group in compiler_groups.items(): for ver, compiler_id in group.items(): - compiler_dir = COMPILERS_DIR / compiler_id + compiler_dir = COMPILERS_DIR / "gc_wii" / compiler_id if not compiler_dir.exists(): - shutil.move(COMPILERS_DIR / group_id / ver, compiler_dir) + shutil.move(COMPILERS_DIR / "gc_wii" / group_id / ver, compiler_dir) # Rename dll to uppercase - WSL is case sensitive without wine lowercase_lmgr = compiler_dir / "lmgr326b.dll" @@ -840,7 +868,7 @@ def download_wii_gc(): (compiler_dir / "license.dat").touch() - shutil.rmtree(COMPILERS_DIR / group_id) + shutil.rmtree(COMPILERS_DIR / "gc_wii" / group_id) # copy single compilers over for ver, info in single_compilers.items(): @@ -848,13 +876,16 @@ def download_wii_gc(): url = info[1] # download zip to COMPILERS_DIR - download_zip(url=url) + download_zip( + url=url, + platform_id="gc_wii", + ) - compiler_dir = COMPILERS_DIR / compiler_id + compiler_dir = COMPILERS_DIR / "gc_wii" / compiler_id # move version dir to compiler dir if not compiler_dir.exists(): - shutil.move(COMPILERS_DIR / ver, compiler_dir) + shutil.move(COMPILERS_DIR / "gc_wii" / ver, compiler_dir) # Rename dll to uppercase - WSL is case sensitive without wine lowercase_lmgr = compiler_dir / "lmgr326b.dll" @@ -869,23 +900,29 @@ def download_wii_gc(): (compiler_dir / "license.dat").touch() + if (COMPILERS_DIR / "gc_wii" / ver).exists(): + shutil.rmtree(COMPILERS_DIR / "gc_wii" / ver) + # copy in clean 1.2.5 for frank shutil.copy( - COMPILERS_DIR / "mwcc_233_163" / "mwcceppc.exe", - COMPILERS_DIR / "mwcc_233_163e" / "mwcceppc.125.exe", + COMPILERS_DIR / "gc_wii" / "mwcc_233_163" / "mwcceppc.exe", + COMPILERS_DIR / "gc_wii" / "mwcc_233_163e" / "mwcceppc.125.exe", ) download_file( url="https://raw.githubusercontent.com/doldecomp/melee/master/tools/frank.py", log_name="frank", - dest_path=COMPILERS_DIR / "mwcc_233_163e" / "frank.py", + dest_path=COMPILERS_DIR / "gc_wii" / "mwcc_233_163e" / "frank.py", ) # copy contents of _142 to _127 to prepare for patched version - if not os.path.exists(COMPILERS_DIR / "mwcc_42_127"): - shutil.copytree(COMPILERS_DIR / "mwcc_42_142", COMPILERS_DIR / "mwcc_42_127") - os.remove(COMPILERS_DIR / "mwcc_42_127" / "mwcceppc.exe") + if not os.path.exists(COMPILERS_DIR / "gc_wii" / "mwcc_42_127"): + shutil.copytree( + COMPILERS_DIR / "gc_wii" / "mwcc_42_142", + COMPILERS_DIR / "gc_wii" / "mwcc_42_127", + ) + os.remove(COMPILERS_DIR / "gc_wii" / "mwcc_42_127" / "mwcceppc.exe") - exe_path = COMPILERS_DIR / "mwcc_42_127" / "mwcceppc.exe" + exe_path = COMPILERS_DIR / "gc_wii" / "mwcc_42_127" / "mwcceppc.exe" download_file( url="https://cdn.discordapp.com/attachments/804212941054279722/954854566304833567/mwcceppc_PATCHED.exe", log_name="mwcc_42_127", @@ -894,7 +931,7 @@ def download_wii_gc(): set_x(exe_path) -def download_3ds(): +def download_n3ds(): compiler_groups = { "4.0": { "b771": "armcc_40_771", @@ -916,20 +953,32 @@ def download_3ds(): } download_zip( url="https://cdn.discordapp.com/attachments/710646040792924172/1148006502980927528/armcc.zip", + platform_id="n3ds", ) for group_id, group in compiler_groups.items(): for ver, compiler_id in group.items(): - compiler_dir = COMPILERS_DIR / compiler_id + compiler_dir = COMPILERS_DIR / "n3ds" / compiler_id if not compiler_dir.exists(): - shutil.move(COMPILERS_DIR / group_id / ver, compiler_dir) + shutil.move(COMPILERS_DIR / "n3ds" / group_id / ver, compiler_dir) # Set +x to allow WSL without wine - exe_path = compiler_dir / "bin/armcc.exe" - set_x(exe_path) - shutil.rmtree(COMPILERS_DIR / group_id) + set_x(compiler_dir / "bin/armcc.exe") + shutil.rmtree(COMPILERS_DIR / "n3ds" / group_id) + + +def download_msdos(): + # Download some custom tools needed for watcom object format. + download_tar( + url="https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz", + platform_id="msdos", + dest_name="i386_tools", + ) + tools_dir = COMPILERS_DIR / "msdos" / "i386_tools" + set_x(tools_dir / "jwasm") + set_x(tools_dir / "omf-objdump") + set_x(tools_dir / "omf-nm") -def download_dos(): for compiler in [ "wcc10.5", "wcc10.5a", @@ -941,20 +990,11 @@ def download_dos(): + compiler + ".tar.gz" ) - download_tar(url=url, dest_name=compiler) - - # Download some custom tools needed for watcom object format. - download_tar( - url="https://github.com/OmniBlade/binutils-gdb/releases/download/omf-build/omftools.tar.gz", - dest_name="i386_tools", - ) - - exe_path = COMPILERS_DIR / "i386_tools/jwasm" - exe_path.chmod(exe_path.stat().st_mode | stat.S_IEXEC) - exe_path = COMPILERS_DIR / "i386_tools/omf-objdump" - exe_path.chmod(exe_path.stat().st_mode | stat.S_IEXEC) - exe_path = COMPILERS_DIR / "i386_tools/omf-nm" - exe_path.chmod(exe_path.stat().st_mode | stat.S_IEXEC) + download_tar( + url=url, + platform_id="msdos", + dest_name=compiler, + ) def download_win9x(): @@ -967,55 +1007,77 @@ def download_win9x(): "msvc6.6", "msvc7.0", ]: + compiler_path = COMPILERS_DIR / "win9x" / compiler + if compiler_path.exists(): + print(f"{compiler_path} already exists, skipping") + continue + url = ( "https://github.com/OmniBlade/decomp.me/releases/download/msvcwin9x/" + compiler + ".tar.gz" ) + # This is actually msvc 7.1. if compiler == "msvc7.0": - compiler = "msvc7.1" - - compiler_path = COMPILERS_DIR / compiler - if compiler_path.exists(): - print(f"{compiler_path} already exists, skipping") - continue + dest_name = "msvc7.1" + else: + dest_name = compiler - download_tar(url=url, dest_name=compiler) + download_tar( + url=url, + platform_id="win9x", + dest_name=dest_name, + ) # Download Visual C/C++ 2002 (MSVC 7.0). Note that this toolchain, unlike # the others, also contains the PlatformSDK and DirectX 8 download_tar( url="https://github.com/roblabla/MSVC-7.0-Portable/releases/download/release/msvc7.0.tar.gz", + platform_id="win9x", dest_name="msvc7.0", ) # For the repo these compilers are stored in they need a few location adjustments for neatness, and permissions set to executable download_zip( url="https://github.com/itsmattkc/MSVC400/archive/refs/heads/master.zip", + platform_id="win9x", dest_name="msvc40", ) - if os.path.exists(COMPILERS_DIR / "MSVC400-master") and not os.path.exists( - COMPILERS_DIR / "msvc4.0/MSVC400-master" - ): - shutil.move(COMPILERS_DIR / "MSVC400-master", COMPILERS_DIR / "msvc4.0") - if os.path.exists(COMPILERS_DIR / "msvc4.0/BIN"): - shutil.move(COMPILERS_DIR / "msvc4.0/BIN", COMPILERS_DIR / "msvc4.0/Bin") - set_x(COMPILERS_DIR / "msvc4.0/Bin/CL.EXE") + if os.path.exists( + COMPILERS_DIR / "win9x" / "MSVC400-master" + ) and not os.path.exists(COMPILERS_DIR / "win9x" / "msvc4.0/MSVC400-master"): + shutil.move( + COMPILERS_DIR / "win9x" / "MSVC400-master", + COMPILERS_DIR / "win9x" / "msvc4.0", + ) + if os.path.exists(COMPILERS_DIR / "win9x" / "msvc4.0/BIN"): + shutil.move( + COMPILERS_DIR / "win9x" / "msvc4.0/BIN", + COMPILERS_DIR / "win9x" / "msvc4.0/Bin", + ) + set_x(COMPILERS_DIR / "win9x" / "msvc4.0/Bin/CL.EXE") download_zip( url="https://github.com/itsmattkc/MSVC420/archive/refs/heads/master.zip", + platform_id="win9x", dest_name="msvc42", ) - if os.path.exists(COMPILERS_DIR / "MSVC420-master") and not os.path.exists( - COMPILERS_DIR / "msvc4.2/MSVC420-master" - ): - shutil.move(COMPILERS_DIR / "MSVC420-master", COMPILERS_DIR / "msvc4.2") - if os.path.exists(COMPILERS_DIR / "msvc4.2/bin"): - shutil.move(COMPILERS_DIR / "msvc4.2/bin", COMPILERS_DIR / "msvc4.2/Bin") - set_x(COMPILERS_DIR / "msvc4.2/Bin/CL.EXE") + if os.path.exists( + COMPILERS_DIR / "win9x" / "MSVC420-master" + ) and not os.path.exists(COMPILERS_DIR / "win9x" / "msvc4.2/MSVC420-master"): + shutil.move( + COMPILERS_DIR / "win9x" / "MSVC420-master", + COMPILERS_DIR / "win9x" / "msvc4.2", + ) + if os.path.exists(COMPILERS_DIR / "win9x" / "msvc4.2/bin"): + shutil.move( + COMPILERS_DIR / "win9x" / "msvc4.2/bin", + COMPILERS_DIR / "win9x" / "msvc4.2/Bin", + ) + set_x(COMPILERS_DIR / "win9x" / "msvc4.2/Bin/CL.EXE") def main(args): @@ -1028,9 +1090,7 @@ def should_download(platform): if should_download("gba"): download_gba() if should_download("macosx"): - download_ppc_darwin() - if should_download("macos9"): - download_codewarrior() + download_macosx() if should_download("n64"): download_n64() if should_download("nds"): @@ -1043,12 +1103,12 @@ def should_download(platform): download_ps2() if should_download("switch"): download_switch() - if should_download("wii_gc"): - download_wii_gc() + if should_download("gc_wii"): + download_gc_wii() if should_download("n3ds"): - download_3ds() + download_n3ds() if should_download("msdos"): - download_dos() + download_msdos() if should_download("win9x"): download_win9x() diff --git a/backend/coreapp/compilers.py b/backend/coreapp/compilers.py index 0b69e93d2..6bf81ad7e 100644 --- a/backend/coreapp/compilers.py +++ b/backend/coreapp/compilers.py @@ -26,7 +26,6 @@ GBA, GC_WII, IRIX, - MACOS9, MACOSX, MSDOS, N3DS, @@ -54,7 +53,7 @@ class Compiler: cc: str platform: Platform flags: ClassVar[Flags] - base_id: Optional[str] = None + base_compiler: Optional["Compiler"] = None is_gcc: ClassVar[bool] = False is_ido: ClassVar[bool] = False is_mwcc: ClassVar[bool] = False @@ -63,10 +62,18 @@ class Compiler: @property def path(self) -> Path: - return COMPILER_BASE_PATH / (self.base_id or self.id) + if self.base_compiler is not None: + return ( + COMPILER_BASE_PATH + / self.base_compiler.platform.id + / self.base_compiler.id + ) + return COMPILER_BASE_PATH / self.platform.id / self.id def available(self) -> bool: # consider compiler binaries present if the compiler's directory is found + if not self.path.exists(): + print(f"Compiler {self.id} not found at {self.path}") return self.path.exists() @@ -163,10 +170,6 @@ def available_compilers() -> List[Compiler]: def available_platforms() -> List[Platform]: pset = set(compiler.platform for compiler in available_compilers()) - # Disable MACOS9 for now, as it's not working properly - if MACOS9 in pset: - pset.remove(MACOS9) - return sorted(pset, key=lambda p: p.name) @@ -199,7 +202,7 @@ def preset_from_name(name: str) -> Optional[Preset]: id="old_agbcc", platform=GBA, cc='cc -E -I "${COMPILER_DIR}"/include -iquote include -nostdinc -undef "$INPUT" | "${COMPILER_DIR}"/bin/old_agbcc $COMPILER_FLAGS -o - | arm-none-eabi-as -mcpu=arm7tdmi -o "$OUTPUT"', - base_id="agbcc", + base_compiler=AGBCC, ) AGBCCPP = GCCCompiler( @@ -531,67 +534,6 @@ def preset_from_name(name: str) -> Optional[Preset]: cc='${WINE} "${COMPILER_DIR}/mwccps2.exe" -c $COMPILER_FLAGS -nostdinc -stderr "$INPUT" -o "$OUTPUT"', ) -# IRIX -IDO53_IRIX = IDOCompiler( - id="ido5.3_irix", - platform=IRIX, - cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido5.3", -) - -IDO53_ASM_IRIX = IDOCompiler( - id="ido5.3_asm_irix", - platform=IRIX, - cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido5.3", - language=Language.ASSEMBLY, -) - -IDO53_CXX_IRIX = IDOCompiler( - id="ido5.3_c++_irix", - platform=IRIX, - cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/CC" -I "${COMPILER_DIR}"/usr/include -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido5.3_c++", - language=Language.OLD_CXX, -) - -IDO53PASCAL = IDOCompiler( - id="ido5.3Pascal", - platform=IRIX, - cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido5.3", - language=Language.PASCAL, -) - - -IDO60_IRIX = IDOCompiler( - id="ido6.0_irix", - platform=IRIX, - cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido6.0", -) - -IDO71_IRIX = IDOCompiler( - id="ido7.1_irix", - platform=IRIX, - cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido7.1", -) - -IDO71PASCAL = IDOCompiler( - id="ido7.1Pascal", - platform=IRIX, - cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido7.1", - language=Language.PASCAL, -) - -MIPS_PRO_744_IRIX = IDOCompiler( - id="mips_pro_744_irix", - platform=IRIX, - cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="MipsPro7.4.4", -) # N64 IDO53 = IDOCompiler( @@ -604,7 +546,6 @@ def preset_from_name(name: str) -> Optional[Preset]: id="ido5.3_c++", platform=N64, cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/CC" -I "{COMPILER_DIR}"/usr/include -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido5.3_c++", language=Language.OLD_CXX, ) @@ -618,14 +559,12 @@ def preset_from_name(name: str) -> Optional[Preset]: id="ido6.0", platform=N64, cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="ido6.0", ) MIPS_PRO_744 = IDOCompiler( id="mips_pro_744", platform=N64, cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', - base_id="MipsPro7.4.4", ) GCC272KMC = GCCCompiler( @@ -634,8 +573,8 @@ def preset_from_name(name: str) -> Optional[Preset]: cc='COMPILER_PATH="${COMPILER_DIR}" "${COMPILER_DIR}"/gcc -c -G0 -mgp32 -mfp32 ${COMPILER_FLAGS} "${INPUT}" -o "${OUTPUT}"', ) -GCC281 = GCCCompiler( - id="gcc2.8.1", +GCC281PM = GCCCompiler( + id="gcc2.8.1pm", platform=N64, cc='"${COMPILER_DIR}"/gcc -G0 -c -B "${COMPILER_DIR}"/ $COMPILER_FLAGS "$INPUT" -o "$OUTPUT"', ) @@ -652,9 +591,18 @@ def preset_from_name(name: str) -> Optional[Preset]: cc='"${COMPILER_DIR}"/cpp -lang-c -undef "$INPUT" | "${COMPILER_DIR}"/cc1 -mfp32 -mgp32 -G0 -quiet -mcpu=vr4300 -fno-exceptions ${COMPILER_FLAGS} -o "$OUTPUT".s && python3 "${COMPILER_DIR}"/modern-asn64.py mips-linux-gnu-as "$OUTPUT".s -G0 -EB -mips3 -O1 -mabi=32 -mgp32 -march=vr4300 -mfp32 -mno-shared -o "$OUTPUT"', ) +GCC281SN = GCCCompiler( + id="gcc2.8.1sn", + platform=N64, + cc='cpp -E -lang-c -undef -D__GNUC__=2 -Dmips -D__mips__ -D__mips -Dn64 -D__n64__ -D__n64 -D_PSYQ -D__EXTENSIONS__ -D_MIPSEB -D__CHAR_UNSIGNED__ "$INPUT" ' + '| ${WINE} "${COMPILER_DIR}"/cc1n64.exe ${COMPILER_FLAGS} -o "$OUTPUT".s ' + '&& ${WINE} "${COMPILER_DIR}"/asn64.exe -q -G0 "$OUTPUT".s -o "$OUTPUT".obj ' + '&& "${COMPILER_DIR}"/psyq-obj-parser "$OUTPUT".obj -o "$OUTPUT" -b -n', +) + GCC281SNCXX = GCCCompiler( id="gcc2.8.1sn-cxx", - base_id="gcc2.8.1sn", + base_compiler=GCC281SN, platform=N64, cc='cpp -E -lang-c++ -undef -D__GNUC__=2 -D__cplusplus -Dmips -D__mips__ -D__mips -Dn64 -D__n64__ -D__n64 -D_PSYQ -D__EXTENSIONS__ -D_MIPSEB -D__CHAR_UNSIGNED__ -D_LANGUAGE_C_PLUS_PLUS "$INPUT" ' '| ${WINE} "${COMPILER_DIR}"/cc1pln64.exe ${COMPILER_FLAGS} -o "$OUTPUT".s ' @@ -674,19 +622,65 @@ def preset_from_name(name: str) -> Optional[Preset]: cc='"${COMPILER_DIR}"/bin/mips64-elf-gcc -I "${COMPILER_DIR}"/mips64-elf/include -c ${COMPILER_FLAGS} "${INPUT}" -o "${OUTPUT}"', ) -# MACOS9 -MWCPPC_CC = 'printf "%s" "${COMPILER_FLAGS}" | xargs -x -- ${WINE} "${COMPILER_DIR}/MWCPPC.exe" -o object.o "${INPUT}" && printf "%s" "-dis -h -module ".${FUNCTION}" -nonames -nodata" | xargs -x -- ${WINE} "${COMPILER_DIR}/MWLinkPPC.exe" "${OUTPUT}" > "${OUTPUT}.s" && python3 ${COMPILER_DIR}/convert_gas_syntax.py "${OUTPUT}.s" ".${FUNCTION}" > "${OUTPUT}_new.s" && powerpc-linux-gnu-as "${OUTPUT}_new.s" -o "${OUTPUT}"' +# IRIX +IDO53_IRIX = IDOCompiler( + id="ido5.3_irix", + platform=IRIX, + cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO53, +) -MWCPPC_23 = MWCCCompiler( - id="mwcppc_23", - platform=MACOS9, - cc=MWCPPC_CC, +IDO53_ASM_IRIX = IDOCompiler( + id="ido5.3_asm_irix", + platform=IRIX, + cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO53, + language=Language.ASSEMBLY, ) -MWCPPC_24 = MWCCCompiler( - id="mwcppc_24", - platform=MACOS9, - cc=MWCPPC_CC, +IDO53_CXX_IRIX = IDOCompiler( + id="ido5.3_c++_irix", + platform=IRIX, + cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/CC" -I "${COMPILER_DIR}"/usr/include -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO53_CXX, + language=Language.OLD_CXX, +) + +IDO53PASCAL = IDOCompiler( + id="ido5.3Pascal", + platform=IRIX, + cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO53, + language=Language.PASCAL, +) + +IDO60_IRIX = IDOCompiler( + id="ido6.0_irix", + platform=IRIX, + cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO60, +) + +IDO71_IRIX = IDOCompiler( + id="ido7.1_irix", + platform=IRIX, + cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO71, +) + +IDO71PASCAL = IDOCompiler( + id="ido7.1Pascal", + platform=IRIX, + cc='USR_LIB="${COMPILER_DIR}" "${COMPILER_DIR}/cc" -c -Xcpluscomm -G0 -non_shared ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=IDO71, + language=Language.PASCAL, +) + +MIPS_PRO_744_IRIX = IDOCompiler( + id="mips_pro_744_irix", + platform=IRIX, + cc='"${COMPILER_DIR}"/usr/bin/qemu-irix -silent -L "${COMPILER_DIR}" "${COMPILER_DIR}/usr/lib/driver" -c -Xcpluscomm -G0 -non_shared -woff 649,838,712 -32 ${COMPILER_FLAGS} -o "${OUTPUT}" "${INPUT}"', + base_compiler=MIPS_PRO_744, ) # MACOSX @@ -1072,7 +1066,7 @@ def preset_from_name(name: str) -> Optional[Preset]: WATCOM_105_CPP = WatcomCompiler( id="wpp10.5", - base_id="wcc10.5", + base_compiler=WATCOM_105_C, platform=MSDOS, cc=WATCOM_CXX, ) @@ -1085,7 +1079,7 @@ def preset_from_name(name: str) -> Optional[Preset]: WATCOM_105A_CPP = WatcomCompiler( id="wpp10.5a", - base_id="wcc10.5a", + base_compiler=WATCOM_105A_C, platform=MSDOS, cc=WATCOM_CXX, ) @@ -1098,7 +1092,7 @@ def preset_from_name(name: str) -> Optional[Preset]: WATCOM_106_CPP = WatcomCompiler( id="wpp10.6", - base_id="wcc10.6", + base_compiler=WATCOM_106_C, platform=MSDOS, cc=WATCOM_CXX, ) @@ -1111,7 +1105,7 @@ def preset_from_name(name: str) -> Optional[Preset]: WATCOM_110_CPP = WatcomCompiler( id="wpp11.0", - base_id="wcc11.0", + base_compiler=WATCOM_110_C, platform=MSDOS, cc=WATCOM_CXX, ) @@ -1186,7 +1180,8 @@ def preset_from_name(name: str) -> Optional[Preset]: GCC272KMC, GCC272SN, GCC272SNEW, - GCC281, + GCC281PM, + GCC281SN, GCC281SNCXX, EGCS1124, GCC440MIPS64ELF, @@ -1242,9 +1237,6 @@ def preset_from_name(name: str) -> Optional[Preset]: MWCC_40_1034, MWCC_40_1036, MWCC_40_1051, - # MACOS9 - MWCPPC_23, - MWCPPC_24, # MACOSX XCODE_GCC401_C, XCODE_GCC401_CPP, @@ -1456,7 +1448,7 @@ def preset_from_name(name: str) -> Optional[Preset]: ), Preset( "Paper Mario", - GCC281, + GCC281PM, "-O2 -fforce-addr -gdwarf-2", diff_flags=["-Mreg-names=32"], ), @@ -1754,8 +1746,6 @@ def preset_from_name(name: str) -> Optional[Preset]: MWCC_30_137, "-O4,p -enum int -proc arm946e -gccext,on -fp soft -lang c99 -char signed -inline on,noauto -Cpp_exceptions off -gccinc -interworking -gccdep -MD -g", ), - # MACOS9 - Preset("The Sims", MWCPPC_24, "-lang=c++ -O3 -str pool -g"), # MACOSX Preset("Fallout 2", PBX_GCC3, "-std=c99 -fPIC -O1 -g3"), Preset("The Sims 2", XCODE_GCC400_CPP, "-g3 -O1"), diff --git a/backend/coreapp/decompiler_wrapper.py b/backend/coreapp/decompiler_wrapper.py index c3314a790..e438db6fb 100644 --- a/backend/coreapp/decompiler_wrapper.py +++ b/backend/coreapp/decompiler_wrapper.py @@ -6,7 +6,6 @@ from coreapp.m2c_wrapper import M2CError, M2CWrapper from coreapp.platforms import Platform -from django.conf import settings logger = logging.getLogger(__name__) @@ -26,7 +25,7 @@ def decompile( return f"decompiled({asm})" ret = default_source_code - if platform.arch in ["mips", "mipsel", "ppc"]: + if platform.arch in ["mips", "mipsee", "mipsel", "ppc"]: if len(asm.splitlines()) > MAX_M2C_ASM_LINES: return "/* Too many lines to decompile; please run m2c manually */" try: diff --git a/backend/coreapp/diff_wrapper.py b/backend/coreapp/diff_wrapper.py index 92573fd4a..6e15ab335 100644 --- a/backend/coreapp/diff_wrapper.py +++ b/backend/coreapp/diff_wrapper.py @@ -61,7 +61,7 @@ def create_config( arch=arch, # Build/objdump options diff_obj=True, - objfile="", + file="", make=False, source_old_binutils=True, diff_section=".text", diff --git a/backend/coreapp/migrations/0035_auto_20230912_0230.py b/backend/coreapp/migrations/0035_auto_20230912_0230.py new file mode 100644 index 000000000..630d1dfc3 --- /dev/null +++ b/backend/coreapp/migrations/0035_auto_20230912_0230.py @@ -0,0 +1,37 @@ +import django.db.migrations.operations.special +from django.apps.registry import Apps +from django.db import migrations +from django.db.backends.base.schema import BaseDatabaseSchemaEditor + + +def rename_compilers(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None: + """ + Migrate the compiler ID 'gcc2.8.1' into 'gcc2.8.1pm' + """ + + compiler_map = { + "gcc2.8.1": "gcc.2.8.1pm", + } + + Scratch = apps.get_model("coreapp", "Scratch") + for row in ( + Scratch.objects.only("compiler") + .filter(platform="n64") + .filter(compiler="gcc2.8.1") + ): + if row.compiler in compiler_map: + row.compiler = compiler_map[row.compiler] + row.save(update_fields=["compiler"]) + + +class Migration(migrations.Migration): + dependencies = [ + ("coreapp", "0034_replace_125e_125n"), + ] + + operations = [ + migrations.RunPython( + code=rename_compilers, + reverse_code=django.db.migrations.operations.special.RunPython.noop, + ) + ] diff --git a/backend/coreapp/platforms.py b/backend/coreapp/platforms.py index 086ef64ae..eaa7f1ea8 100644 --- a/backend/coreapp/platforms.py +++ b/backend/coreapp/platforms.py @@ -45,9 +45,9 @@ def from_id(platform_id: str) -> Platform: name="Microsoft DOS", description="x86", arch="i686", - assemble_cmd='${COMPILER_BASE_PATH}/i386_tools/jwasm -c -Fo"$OUTPUT" "$INPUT"', - objdump_cmd="${COMPILER_BASE_PATH}/i386_tools/omf-objdump", - nm_cmd="${COMPILER_BASE_PATH}/i386_tools/omf-nm", + assemble_cmd='${COMPILER_BASE_PATH}/msdos/i386_tools/jwasm -c -Fo"$OUTPUT" "$INPUT"', + objdump_cmd="${COMPILER_BASE_PATH}/msdos/i386_tools/omf-objdump", + nm_cmd="${COMPILER_BASE_PATH}/msdos/i386_tools/omf-nm", asm_prelude=""" .386P .model FLAT @@ -319,98 +319,6 @@ def from_id(platform_id: str) -> Platform: """, ) -MACOS9 = Platform( - id="macos9", - name="Mac OS 9", - description="PowerPC", - arch="ppc", - assemble_cmd='powerpc-linux-gnu-as -o "$OUTPUT" "$INPUT"', - objdump_cmd="powerpc-linux-gnu-objdump", - nm_cmd="powerpc-linux-gnu-nm", - asm_prelude=""" -.macro glabel label - .global \label - .type \label, @function - \label: -.endm - -.set r0, 0 -.set r1, 1 -.set r2, 2 -.set r3, 3 -.set r4, 4 -.set r5, 5 -.set r6, 6 -.set r7, 7 -.set r8, 8 -.set r9, 9 -.set r10, 10 -.set r11, 11 -.set r12, 12 -.set r13, 13 -.set r14, 14 -.set r15, 15 -.set r16, 16 -.set r17, 17 -.set r18, 18 -.set r19, 19 -.set r20, 20 -.set r21, 21 -.set r22, 22 -.set r23, 23 -.set r24, 24 -.set r25, 25 -.set r26, 26 -.set r27, 27 -.set r28, 28 -.set r29, 29 -.set r30, 30 -.set r31, 31 -.set f0, 0 -.set f1, 1 -.set f2, 2 -.set f3, 3 -.set f4, 4 -.set f5, 5 -.set f6, 6 -.set f7, 7 -.set f8, 8 -.set f9, 9 -.set f10, 10 -.set f11, 11 -.set f12, 12 -.set f13, 13 -.set f14, 14 -.set f15, 15 -.set f16, 16 -.set f17, 17 -.set f18, 18 -.set f19, 19 -.set f20, 20 -.set f21, 21 -.set f22, 22 -.set f23, 23 -.set f24, 24 -.set f25, 25 -.set f26, 26 -.set f27, 27 -.set f28, 28 -.set f29, 29 -.set f30, 30 -.set f31, 31 -.set qr0, 0 -.set qr1, 1 -.set qr2, 2 -.set qr3, 3 -.set qr4, 4 -.set qr5, 5 -.set qr6, 6 -.set qr7, 7 -.set RTOC,r2 -.set SP,r1 -""", -) - MACOSX = Platform( id="macosx", name="Mac OS X", @@ -772,19 +680,18 @@ def from_id(platform_id: str) -> Platform: _platforms: OrderedDict[str, Platform] = OrderedDict( { "dummy": DUMMY, - "switch": SWITCH, "irix": IRIX, "n64": N64, - "ps1": PS1, - "saturn": SATURN, - "ps2": PS2, "gc_wii": GC_WII, - "nds_arm9": NDS_ARM9, + "switch": SWITCH, "gba": GBA, - "macos9": MACOS9, + "nds_arm9": NDS_ARM9, + "n3ds": N3DS, + "ps1": PS1, + "ps2": PS2, + "saturn": SATURN, "macosx": MACOSX, "msdos": MSDOS, - "n3ds": N3DS, "win9x": WIN9X, } ) diff --git a/backend/coreapp/tests.py b/backend/coreapp/tests.py index f6fd93d8a..415c00ee2 100644 --- a/backend/coreapp/tests.py +++ b/backend/coreapp/tests.py @@ -4,35 +4,34 @@ from typing import Any, Callable, Dict, Optional from unittest import skip, skipIf from unittest.mock import Mock, patch -from parameterized import parameterized import responses -from django.contrib.auth.models import User -from django.test.testcases import TestCase -from django.urls import reverse -from rest_framework import status -from rest_framework.test import APITestCase -from coreapp.compilers import DummyCompiler -from coreapp.flags import Language -from coreapp.sandbox import Sandbox from coreapp import compilers, platforms - from coreapp.compiler_wrapper import CompilerWrapper from coreapp.compilers import ( - Compiler, - GCC281, + GCC281PM, IDO53, IDO71, MWCC_247_92, - MWCPPC_24, PBX_GCC3, + WATCOM_105_C, + Compiler, + DummyCompiler, ) from coreapp.diff_wrapper import DiffWrapper +from coreapp.flags import Language from coreapp.m2c_wrapper import M2CWrapper from coreapp.platforms import N64 +from coreapp.sandbox import Sandbox from coreapp.views.scratch import compile_scratch_update_score -from .models.github import GitHubRepo, GitHubUser +from django.contrib.auth.models import User +from django.test.testcases import TestCase +from django.urls import reverse +from parameterized import parameterized +from rest_framework import status +from rest_framework.test import APITestCase +from .models.github import GitHubRepo, GitHubUser from .models.profile import Profile from .models.project import Project, ProjectFunction, ProjectImportConfig, ProjectMember from .models.scratch import Assembly, CompilerConfig, Scratch @@ -160,14 +159,14 @@ def test_max_score(self) -> None: class ScratchModificationTests(BaseTestCase): - @requiresCompiler(GCC281, IDO53) + @requiresCompiler(GCC281PM, IDO53) def test_update_scratch_score(self) -> None: """ Ensure that a scratch's score gets updated when the code changes. """ scratch_dict = { "platform": N64.id, - "compiler": GCC281.id, + "compiler": GCC281PM.id, "context": "", "target_asm": "jr $ra", } @@ -194,14 +193,14 @@ def test_update_scratch_score(self) -> None: assert scratch is not None self.assertEqual(scratch.score, 200) - @requiresCompiler(GCC281) + @requiresCompiler(GCC281PM) def test_update_scratch_score_on_compile_get(self) -> None: """ Ensure that a scratch's score gets updated on a GET to compile """ scratch_dict = { "platform": N64.id, - "compiler": GCC281.id, + "compiler": GCC281PM.id, "compiler_flags": "-O2", "context": "", "target_asm": "jr $ra\nli $v0,2", @@ -327,13 +326,13 @@ def test_fork_scratch(self) -> None: class CompilationTests(BaseTestCase): - @requiresCompiler(GCC281) + @requiresCompiler(GCC281PM) def test_simple_compilation(self) -> None: """ Ensure that we can run a simple compilation via the api """ scratch_dict = { - "compiler": GCC281.id, + "compiler": GCC281PM.id, "platform": N64.id, "context": "", "target_asm": "glabel func_80929D04\njr $ra\nnop", @@ -344,7 +343,7 @@ def test_simple_compilation(self) -> None: compile_dict = { "slug": scratch.slug, - "compiler": GCC281.id, + "compiler": GCC281PM.id, "compiler_flags": "-mips2 -O2", "source_code": "int add(int a, int b){\nreturn a + b;\n}\n", } @@ -355,13 +354,13 @@ def test_simple_compilation(self) -> None: ) self.assertEqual(response.status_code, status.HTTP_200_OK) - @requiresCompiler(GCC281) + @requiresCompiler(GCC281PM) def test_giant_compilation(self) -> None: """ Ensure that we can compile a giant file """ scratch_dict = { - "compiler": GCC281.id, + "compiler": GCC281PM.id, "platform": N64.id, "context": "", "target_asm": "glabel func_80929D04\njr $ra\nnop", @@ -376,7 +375,7 @@ def test_giant_compilation(self) -> None: compile_dict = { "slug": scratch.slug, - "compiler": GCC281.id, + "compiler": GCC281PM.id, "compiler_flags": "-mips2 -O2", "source_code": "int add(int a, int b){\nreturn a + b;\n}\n", "context": context, @@ -468,21 +467,6 @@ def test_fpr_reg_names_output(self) -> None: # Confirm the output does not contain the expected fpr reg names self.assertFalse("fv1f" in str(response.json())) - @requiresCompiler(MWCPPC_24) - def test_mac_mwcc(self) -> None: - """ - Ensure that we can invoke the MACOS9 compiler - """ - result = CompilerWrapper.compile_code( - MWCPPC_24, - "-str reuse -inline on -O0", - "int func(void) { return 5; }", - "extern char libvar1;\r\nextern char libvar2;\r\n", - ) - self.assertGreater( - len(result.elf_object), 0, "The compilation result should be non-null" - ) - @requiresCompiler(PBX_GCC3) def test_pbx_gcc3(self) -> None: """ @@ -513,6 +497,21 @@ def test_mwcc(self) -> None: len(result.elf_object), 0, "The compilation result should be non-null" ) + @requiresCompiler(WATCOM_105_C) + def test_watcom_cc(self) -> None: + """ + Ensure that we can invoke watcom cc + """ + result = CompilerWrapper.compile_code( + WATCOM_105_C, + "", + "int func(void) { return 5; }", + "extern char libvar1;\r\nextern char libvar2;\r\n", + ) + self.assertGreater( + len(result.elf_object), 0, "The compilation result should be non-null" + ) + def test_dummy_compiler(self) -> None: """ Ensure basic functionality works for the dummy compiler @@ -608,13 +607,13 @@ def test_zero_timeout(self) -> None: class DecompilationTests(BaseTestCase): - @requiresCompiler(GCC281) + @requiresCompiler(GCC281PM) def test_default_decompilation(self) -> None: """ Ensure that a scratch's initial decompilation makes sense """ scratch_dict = { - "compiler": GCC281.id, + "compiler": GCC281PM.id, "platform": N64.id, "context": "", "target_asm": "glabel return_2\njr $ra\nli $v0,2", @@ -622,13 +621,13 @@ def test_default_decompilation(self) -> None: scratch = self.create_scratch(scratch_dict) self.assertEqual(scratch.source_code, "? return_2(void) {\n return 2;\n}\n") - @requiresCompiler(GCC281) + @requiresCompiler(GCC281PM) def test_decompile_endpoint(self) -> None: """ Ensure that the decompile endpoint works """ scratch_dict = { - "compiler": GCC281.id, + "compiler": GCC281PM.id, "platform": N64.id, "context": "typedef int s32;", "target_asm": "glabel return_2\njr $ra\nli $v0,2", diff --git a/backend/poetry.lock b/backend/poetry.lock index 31ae8f384..17346b65c 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -54,7 +54,7 @@ watchdog = "^2.2.0" type = "git" url = "https://github.com/simonlindholm/asm-differ.git" reference = "HEAD" -resolved_reference = "247994f34820afc2ed7e173427caad6199c4b666" +resolved_reference = "e8bddb02576e73aecb90f813bfb452417c37b257" [[package]] name = "attrs" @@ -77,37 +77,34 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "black" -version = "23.3.0" +version = "23.9.1" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"}, + {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"}, + {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"}, + {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"}, + {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"}, + {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"}, + {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"}, + {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"}, + {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"}, + {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"}, + {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"}, + {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"}, + {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"}, + {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"}, + {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"}, + {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"}, ] [package.dependencies] @@ -117,7 +114,7 @@ packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -127,14 +124,14 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -301,14 +298,14 @@ files = [ [[package]] name = "click" -version = "8.1.4" +version = "8.1.7" description = "Composable command line interface toolkit" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"}, - {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -328,31 +325,35 @@ files = [ [[package]] name = "cryptography" -version = "41.0.1" +version = "41.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:f73bff05db2a3e5974a6fd248af2566134d8981fd7ab012e5dd4ddb1d9a70699"}, - {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:1a5472d40c8f8e91ff7a3d8ac6dfa363d8e3138b961529c996f3e2df0c7a411a"}, - {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fa01527046ca5facdf973eef2535a27fec4cb651e4daec4d043ef63f6ecd4ca"}, - {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b46e37db3cc267b4dea1f56da7346c9727e1209aa98487179ee8ebed09d21e43"}, - {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d198820aba55660b4d74f7b5fd1f17db3aa5eb3e6893b0a41b75e84e4f9e0e4b"}, - {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:948224d76c4b6457349d47c0c98657557f429b4e93057cf5a2f71d603e2fc3a3"}, - {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:059e348f9a3c1950937e1b5d7ba1f8e968508ab181e75fc32b879452f08356db"}, - {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b4ceb5324b998ce2003bc17d519080b4ec8d5b7b70794cbd2836101406a9be31"}, - {file = "cryptography-41.0.1-cp37-abi3-win32.whl", hash = "sha256:8f4ab7021127a9b4323537300a2acfb450124b2def3756f64dc3a3d2160ee4b5"}, - {file = "cryptography-41.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:1fee5aacc7367487b4e22484d3c7e547992ed726d14864ee33c0176ae43b0d7c"}, - {file = "cryptography-41.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9a6c7a3c87d595608a39980ebaa04d5a37f94024c9f24eb7d10262b92f739ddb"}, - {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5d092fdfedaec4cbbffbf98cddc915ba145313a6fdaab83c6e67f4e6c218e6f3"}, - {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a8e6c2de6fbbcc5e14fd27fb24414507cb3333198ea9ab1258d916f00bc3039"}, - {file = "cryptography-41.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb33ccf15e89f7ed89b235cff9d49e2e62c6c981a6061c9c8bb47ed7951190bc"}, - {file = "cryptography-41.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f0ff6e18d13a3de56f609dd1fd11470918f770c6bd5d00d632076c727d35485"}, - {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7bfc55a5eae8b86a287747053140ba221afc65eb06207bedf6e019b8934b477c"}, - {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eb8163f5e549a22888c18b0d53d6bb62a20510060a22fd5a995ec8a05268df8a"}, - {file = "cryptography-41.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8dde71c4169ec5ccc1087bb7521d54251c016f126f922ab2dfe6649170a3b8c5"}, - {file = "cryptography-41.0.1.tar.gz", hash = "sha256:d34579085401d3f49762d2f7d6634d6b6c2ae1242202e860f4d26b046e3a1006"}, + {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, + {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, + {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, + {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, + {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, + {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, + {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, + {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, + {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, + {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, + {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, + {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, + {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, + {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, + {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, + {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, + {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, + {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, + {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, + {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, + {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, + {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, + {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, ] [package.dependencies] @@ -403,14 +404,14 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "django" -version = "4.2.3" +version = "4.2.5" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.3-py3-none-any.whl", hash = "sha256:f7c7852a5ac5a3da5a8d5b35cc6168f31b605971441798dac845f17ca8028039"}, - {file = "Django-4.2.3.tar.gz", hash = "sha256:45a747e1c5b3d6df1b141b1481e193b033fd1fdbda3ff52677dc81afdaacbaed"}, + {file = "Django-4.2.5-py3-none-any.whl", hash = "sha256:b6b2b5cae821077f137dc4dade696a1c2aa292f892eca28fa8d7bfdf2608ddd4"}, + {file = "Django-4.2.5.tar.gz", hash = "sha256:5e5c1c9548ffb7796b4a8a4782e9a2e5a3df3615259fc1bfd3ebc73b646146c1"}, ] [package.dependencies] @@ -515,14 +516,14 @@ test = ["coverage[toml] (==5.0.3)", "flake8 (==3.7.9)", "flake8-blind-except (== [[package]] name = "django-stubs" -version = "4.2.3" +version = "4.2.4" description = "Mypy stubs for Django" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "django-stubs-4.2.3.tar.gz", hash = "sha256:dadab39b46d9ae8f37a8e879c590f39a9e042b565c03fa0c5a8f754b441b1f23"}, - {file = "django_stubs-4.2.3-py3-none-any.whl", hash = "sha256:e30e2e4927ba14bec587ed2c686404b6b8e473cabe9baca445e7d2e1e0d7b14f"}, + {file = "django-stubs-4.2.4.tar.gz", hash = "sha256:7d4a132c381519815e865c27a89eca41bcbd06056832507224816a43d75c601c"}, + {file = "django_stubs-4.2.4-py3-none-any.whl", hash = "sha256:834b60fd81510cce6b56c1c6c28bec3c504a418bc90ff7d0063fabe8ab9a7868"}, ] [package.dependencies] @@ -535,7 +536,7 @@ types-PyYAML = "*" typing-extensions = "*" [package.extras] -compatible-mypy = ["mypy (>=1.4.0,<1.5.0)"] +compatible-mypy = ["mypy (>=1.5.0,<1.6.0)"] [[package]] name = "django-stubs-ext" @@ -845,7 +846,7 @@ pycparser = "^2.21" type = "git" url = "https://github.com/matt-kempster/m2c.git" reference = "HEAD" -resolved_reference = "eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87" +resolved_reference = "08138748803d75e73e4a94bb0c619a273754ee9c" [[package]] name = "moreorless" @@ -864,38 +865,39 @@ click = "*" [[package]] name = "mypy" -version = "1.4.1" +version = "1.5.1" description = "Optional static typing for Python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"}, - {file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"}, - {file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"}, - {file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"}, - {file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"}, - {file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"}, - {file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"}, - {file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"}, - {file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"}, - {file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"}, - {file = "mypy-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b"}, - {file = "mypy-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"}, - {file = "mypy-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7"}, - {file = "mypy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9"}, - {file = "mypy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042"}, - {file = "mypy-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3"}, - {file = "mypy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6"}, - {file = "mypy-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f"}, - {file = "mypy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc"}, - {file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"}, - {file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"}, - {file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"}, - {file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"}, - {file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"}, - {file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"}, - {file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, + {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, + {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, + {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, + {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, + {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, + {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, + {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, + {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, + {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, + {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, + {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, + {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, + {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, + {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, + {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, + {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, + {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, ] [package.dependencies] @@ -906,7 +908,6 @@ typing-extensions = ">=4.1.0" [package.extras] dmypy = ["psutil (>=4.0)"] install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] reports = ["lxml"] [[package]] @@ -950,14 +951,14 @@ dev = ["jinja2"] [[package]] name = "pathspec" -version = "0.11.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] @@ -1042,90 +1043,88 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "3.8.1" +version = "3.10.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" files = [ - {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"}, - {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"}, + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "psycopg2-binary" -version = "2.9.6" +version = "2.9.7" description = "psycopg2 - Python-PostgreSQL Database Adapter" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "psycopg2-binary-2.9.6.tar.gz", hash = "sha256:1f64dcfb8f6e0c014c7f55e51c9759f024f70ea572fbdef123f85318c297947c"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d26e0342183c762de3276cca7a530d574d4e25121ca7d6e4a98e4f05cb8e4df7"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c48d8f2db17f27d41fb0e2ecd703ea41984ee19362cbce52c097963b3a1b4365"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffe9dc0a884a8848075e576c1de0290d85a533a9f6e9c4e564f19adf8f6e54a7"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a76e027f87753f9bd1ab5f7c9cb8c7628d1077ef927f5e2446477153a602f2c"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6460c7a99fc939b849431f1e73e013d54aa54293f30f1109019c56a0b2b2ec2f"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae102a98c547ee2288637af07393dd33f440c25e5cd79556b04e3fca13325e5f"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9972aad21f965599ed0106f65334230ce826e5ae69fda7cbd688d24fa922415e"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a40c00dbe17c0af5bdd55aafd6ff6679f94a9be9513a4c7e071baf3d7d22a70"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:cacbdc5839bdff804dfebc058fe25684cae322987f7a38b0168bc1b2df703fb1"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7f0438fa20fb6c7e202863e0d5ab02c246d35efb1d164e052f2f3bfe2b152bd0"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-win32.whl", hash = "sha256:b6c8288bb8a84b47e07013bb4850f50538aa913d487579e1921724631d02ea1b"}, - {file = "psycopg2_binary-2.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:61b047a0537bbc3afae10f134dc6393823882eb263088c271331602b672e52e9"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:964b4dfb7c1c1965ac4c1978b0f755cc4bd698e8aa2b7667c575fb5f04ebe06b"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afe64e9b8ea66866a771996f6ff14447e8082ea26e675a295ad3bdbffdd72afb"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e2ee79e7cf29582ef770de7dab3d286431b01c3bb598f8e05e09601b890081"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfa74c903a3c1f0d9b1c7e7b53ed2d929a4910e272add6700c38f365a6002820"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b83456c2d4979e08ff56180a76429263ea254c3f6552cd14ada95cff1dec9bb8"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0645376d399bfd64da57148694d78e1f431b1e1ee1054872a5713125681cf1be"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99e34c82309dd78959ba3c1590975b5d3c862d6f279f843d47d26ff89d7d7e1"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4ea29fc3ad9d91162c52b578f211ff1c931d8a38e1f58e684c45aa470adf19e2"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4ac30da8b4f57187dbf449294d23b808f8f53cad6b1fc3623fa8a6c11d176dd0"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e78e6e2a00c223e164c417628572a90093c031ed724492c763721c2e0bc2a8df"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-win32.whl", hash = "sha256:1876843d8e31c89c399e31b97d4b9725a3575bb9c2af92038464231ec40f9edb"}, - {file = "psycopg2_binary-2.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:b4b24f75d16a89cc6b4cdff0eb6a910a966ecd476d1e73f7ce5985ff1328e9a6"}, - {file = "psycopg2_binary-2.9.6-cp36-cp36m-win32.whl", hash = "sha256:498807b927ca2510baea1b05cc91d7da4718a0f53cb766c154c417a39f1820a0"}, - {file = "psycopg2_binary-2.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:0d236c2825fa656a2d98bbb0e52370a2e852e5a0ec45fc4f402977313329174d"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:34b9ccdf210cbbb1303c7c4db2905fa0319391bd5904d32689e6dd5c963d2ea8"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d2222e61f313c4848ff05353653bf5f5cf6ce34df540e4274516880d9c3763"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30637a20623e2a2eacc420059be11527f4458ef54352d870b8181a4c3020ae6b"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8122cfc7cae0da9a3077216528b8bb3629c43b25053284cc868744bfe71eb141"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38601cbbfe600362c43714482f43b7c110b20cb0f8172422c616b09b85a750c5"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c7e62ab8b332147a7593a385d4f368874d5fe4ad4e341770d4983442d89603e3"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2ab652e729ff4ad76d400df2624d223d6e265ef81bb8aa17fbd63607878ecbee"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c83a74b68270028dc8ee74d38ecfaf9c90eed23c8959fca95bd703d25b82c88e"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d4e6036decf4b72d6425d5b29bbd3e8f0ff1059cda7ac7b96d6ac5ed34ffbacd"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-win32.whl", hash = "sha256:a8c28fd40a4226b4a84bdf2d2b5b37d2c7bd49486b5adcc200e8c7ec991dfa7e"}, - {file = "psycopg2_binary-2.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:51537e3d299be0db9137b321dfb6a5022caaab275775680e0c3d281feefaca6b"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf4499e0a83b7b7edcb8dabecbd8501d0d3a5ef66457200f77bde3d210d5debb"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7e13a5a2c01151f1208d5207e42f33ba86d561b7a89fca67c700b9486a06d0e2"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e0f754d27fddcfd74006455b6e04e6705d6c31a612ec69ddc040a5468e44b4e"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d57c3fd55d9058645d26ae37d76e61156a27722097229d32a9e73ed54819982a"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71f14375d6f73b62800530b581aed3ada394039877818b2d5f7fc77e3bb6894d"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:441cc2f8869a4f0f4bb408475e5ae0ee1f3b55b33f350406150277f7f35384fc"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:65bee1e49fa6f9cf327ce0e01c4c10f39165ee76d35c846ade7cb0ec6683e303"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:af335bac6b666cc6aea16f11d486c3b794029d9df029967f9938a4bed59b6a19"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cfec476887aa231b8548ece2e06d28edc87c1397ebd83922299af2e051cf2827"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65c07febd1936d63bfde78948b76cd4c2a411572a44ac50719ead41947d0f26b"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-win32.whl", hash = "sha256:4dfb4be774c4436a4526d0c554af0cc2e02082c38303852a36f6456ece7b3503"}, - {file = "psycopg2_binary-2.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:02c6e3cf3439e213e4ee930308dc122d6fb4d4bea9aef4a12535fbd605d1a2fe"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9182eb20f41417ea1dd8e8f7888c4d7c6e805f8a7c98c1081778a3da2bee3e4"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8a6979cf527e2603d349a91060f428bcb135aea2be3201dff794813256c274f1"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8338a271cb71d8da40b023a35d9c1e919eba6cbd8fa20a54b748a332c355d896"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3ed340d2b858d6e6fb5083f87c09996506af483227735de6964a6100b4e6a54"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f81e65376e52f03422e1fb475c9514185669943798ed019ac50410fb4c4df232"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfb13af3c5dd3a9588000910178de17010ebcccd37b4f9794b00595e3a8ddad3"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4c727b597c6444a16e9119386b59388f8a424223302d0c06c676ec8b4bc1f963"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4d67fbdaf177da06374473ef6f7ed8cc0a9dc640b01abfe9e8a2ccb1b1402c1f"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0892ef645c2fabb0c75ec32d79f4252542d0caec1d5d949630e7d242ca4681a3"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:02c0f3757a4300cf379eb49f543fb7ac527fb00144d39246ee40e1df684ab514"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-win32.whl", hash = "sha256:c3dba7dab16709a33a847e5cd756767271697041fbe3fe97c215b1fc1f5c9848"}, - {file = "psycopg2_binary-2.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:f6a88f384335bb27812293fdb11ac6aee2ca3f51d3c7820fe03de0a304ab6249"}, + {file = "psycopg2-binary-2.9.7.tar.gz", hash = "sha256:1b918f64a51ffe19cd2e230b3240ba481330ce1d4b7875ae67305bd1d37b041c"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ea5f8ee87f1eddc818fc04649d952c526db4426d26bab16efbe5a0c52b27d6ab"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2993ccb2b7e80844d534e55e0f12534c2871952f78e0da33c35e648bf002bbff"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbbc3c5d15ed76b0d9db7753c0db40899136ecfe97d50cbde918f630c5eb857a"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:692df8763b71d42eb8343f54091368f6f6c9cfc56dc391858cdb3c3ef1e3e584"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dcfd5d37e027ec393a303cc0a216be564b96c80ba532f3d1e0d2b5e5e4b1e6e"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17cc17a70dfb295a240db7f65b6d8153c3d81efb145d76da1e4a096e9c5c0e63"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e5666632ba2b0d9757b38fc17337d84bdf932d38563c5234f5f8c54fd01349c9"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7db7b9b701974c96a88997d458b38ccb110eba8f805d4b4f74944aac48639b42"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c82986635a16fb1fa15cd5436035c88bc65c3d5ced1cfaac7f357ee9e9deddd4"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fe13712357d802080cfccbf8c6266a3121dc0e27e2144819029095ccf708372"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-win32.whl", hash = "sha256:122641b7fab18ef76b18860dd0c772290566b6fb30cc08e923ad73d17461dc63"}, + {file = "psycopg2_binary-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:f8651cf1f144f9ee0fa7d1a1df61a9184ab72962531ca99f077bbdcba3947c58"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4ecc15666f16f97709106d87284c136cdc82647e1c3f8392a672616aed3c7151"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fbb1184c7e9d28d67671992970718c05af5f77fc88e26fd7136613c4ece1f89"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7968fd20bd550431837656872c19575b687f3f6f98120046228e451e4064df"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094af2e77a1976efd4956a031028774b827029729725e136514aae3cdf49b87b"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26484e913d472ecb6b45937ea55ce29c57c662066d222fb0fbdc1fab457f18c5"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f309b77a7c716e6ed9891b9b42953c3ff7d533dc548c1e33fddc73d2f5e21f9"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d92e139ca388ccfe8c04aacc163756e55ba4c623c6ba13d5d1595ed97523e4b"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2df562bb2e4e00ee064779902d721223cfa9f8f58e7e52318c97d139cf7f012d"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4eec5d36dbcfc076caab61a2114c12094c0b7027d57e9e4387b634e8ab36fd44"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1011eeb0c51e5b9ea1016f0f45fa23aca63966a4c0afcf0340ccabe85a9f65bd"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-win32.whl", hash = "sha256:ded8e15f7550db9e75c60b3d9fcbc7737fea258a0f10032cdb7edc26c2a671fd"}, + {file = "psycopg2_binary-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:8a136c8aaf6615653450817a7abe0fc01e4ea720ae41dfb2823eccae4b9062a3"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2dec5a75a3a5d42b120e88e6ed3e3b37b46459202bb8e36cd67591b6e5feebc1"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc10da7e7df3380426521e8c1ed975d22df678639da2ed0ec3244c3dc2ab54c8"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee919b676da28f78f91b464fb3e12238bd7474483352a59c8a16c39dfc59f0c5"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb1c0e682138f9067a58fc3c9a9bf1c83d8e08cfbee380d858e63196466d5c86"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00d8db270afb76f48a499f7bb8fa70297e66da67288471ca873db88382850bf4"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b0c2b466b2f4d89ccc33784c4ebb1627989bd84a39b79092e560e937a11d4ac"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:51d1b42d44f4ffb93188f9b39e6d1c82aa758fdb8d9de65e1ddfe7a7d250d7ad"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:11abdbfc6f7f7dea4a524b5f4117369b0d757725798f1593796be6ece20266cb"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f02f4a72cc3ab2565c6d9720f0343cb840fb2dc01a2e9ecb8bc58ccf95dc5c06"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:81d5dd2dd9ab78d31a451e357315f201d976c131ca7d43870a0e8063b6b7a1ec"}, + {file = "psycopg2_binary-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:62cb6de84d7767164a87ca97e22e5e0a134856ebcb08f21b621c6125baf61f16"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59f7e9109a59dfa31efa022e94a244736ae401526682de504e87bd11ce870c22"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:95a7a747bdc3b010bb6a980f053233e7610276d55f3ca506afff4ad7749ab58a"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c721ee464e45ecf609ff8c0a555018764974114f671815a0a7152aedb9f3343"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4f37bbc6588d402980ffbd1f3338c871368fb4b1cfa091debe13c68bb3852b3"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac83ab05e25354dad798401babaa6daa9577462136ba215694865394840e31f8"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:024eaeb2a08c9a65cd5f94b31ace1ee3bb3f978cd4d079406aef85169ba01f08"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1c31c2606ac500dbd26381145684d87730a2fac9a62ebcfbaa2b119f8d6c19f4"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:42a62ef0e5abb55bf6ffb050eb2b0fcd767261fa3faf943a4267539168807522"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7952807f95c8eba6a8ccb14e00bf170bb700cafcec3924d565235dffc7dc4ae8"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e02bc4f2966475a7393bd0f098e1165d470d3fa816264054359ed4f10f6914ea"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-win32.whl", hash = "sha256:fdca0511458d26cf39b827a663d7d87db6f32b93efc22442a742035728603d5f"}, + {file = "psycopg2_binary-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:d0b16e5bb0ab78583f0ed7ab16378a0f8a89a27256bb5560402749dbe8a164d7"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6822c9c63308d650db201ba22fe6648bd6786ca6d14fdaf273b17e15608d0852"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f94cb12150d57ea433e3e02aabd072205648e86f1d5a0a692d60242f7809b15"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5ee89587696d808c9a00876065d725d4ae606f5f7853b961cdbc348b0f7c9a1"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad5ec10b53cbb57e9a2e77b67e4e4368df56b54d6b00cc86398578f1c635f329"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:642df77484b2dcaf87d4237792246d8068653f9e0f5c025e2c692fc56b0dda70"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6a8b575ac45af1eaccbbcdcf710ab984fd50af048fe130672377f78aaff6fc1"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f955aa50d7d5220fcb6e38f69ea126eafecd812d96aeed5d5f3597f33fad43bb"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad26d4eeaa0d722b25814cce97335ecf1b707630258f14ac4d2ed3d1d8415265"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ced63c054bdaf0298f62681d5dcae3afe60cbae332390bfb1acf0e23dcd25fc8"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b04da24cbde33292ad34a40db9832a80ad12de26486ffeda883413c9e1b1d5e"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-win32.whl", hash = "sha256:18f12632ab516c47c1ac4841a78fddea6508a8284c7cf0f292cb1a523f2e2379"}, + {file = "psycopg2_binary-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb3b8d55924a6058a26db69fb1d3e7e32695ff8b491835ba9f479537e14dcf9f"}, ] [[package]] @@ -1142,14 +1141,14 @@ files = [ [[package]] name = "pygithub" -version = "1.59.0" +version = "1.59.1" description = "Use the full Github API v3" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "PyGithub-1.59.0-py3-none-any.whl", hash = "sha256:126bdbae72087d8d038b113aab6b059b4553cb59348e3024bb1a1cae406ace9e"}, - {file = "PyGithub-1.59.0.tar.gz", hash = "sha256:6e05ff49bac3caa7d1d6177a10c6e55a3e20c85b92424cc198571fd0cf786690"}, + {file = "PyGithub-1.59.1-py3-none-any.whl", hash = "sha256:3d87a822e6c868142f0c2c4bf16cce4696b5a7a4d142a7bd160e1bdf75bc54a9"}, + {file = "PyGithub-1.59.1.tar.gz", hash = "sha256:c44e3a121c15bf9d3a5cc98d94c9a047a5132a9b01d22264627f58ade9ddc217"}, ] [package.dependencies] @@ -1160,14 +1159,14 @@ requests = ">=2.14.0" [[package]] name = "pyjwt" -version = "2.7.0" +version = "2.8.0" description = "JSON Web Token implementation in Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "PyJWT-2.7.0-py3-none-any.whl", hash = "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1"}, - {file = "PyJWT-2.7.0.tar.gz", hash = "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.dependencies] @@ -1208,64 +1207,74 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" category = "dev" optional = false python-versions = ">=3.6" files = [ - {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"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {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"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] @@ -1416,14 +1425,14 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=4.6)", "pytest-cov", [[package]] name = "sentry-sdk" -version = "1.27.1" +version = "1.30.0" description = "Python client for Sentry (https://sentry.io)" category = "main" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.27.1.tar.gz", hash = "sha256:53f36293a0da271a22f476259d2fda76c0b8a1cb96b16d6e6e6aca490d7f3451"}, - {file = "sentry_sdk-1.27.1-py2.py3-none-any.whl", hash = "sha256:24308bd05a1f7d65e40acc68a768b4e5c35462039bfd6ae2ca116b92a7b53c78"}, + {file = "sentry-sdk-1.30.0.tar.gz", hash = "sha256:7dc873b87e1faf4d00614afd1058bfa1522942f33daef8a59f90de8ed75cd10c"}, + {file = "sentry_sdk-1.30.0-py2.py3-none-any.whl", hash = "sha256:2e53ad63f96bb9da6570ba2e755c267e529edcf58580a2c0d2a11ef26e1e678b"}, ] [package.dependencies] @@ -1446,6 +1455,7 @@ httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] +opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] @@ -1536,21 +1546,21 @@ files = [ [[package]] name = "tqdm" -version = "4.65.0" +version = "4.66.1" description = "Fast, Extensible Progress Meter" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, - {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, + {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, + {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["py-make (>=0.1.0)", "twine", "wheel"] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] @@ -1576,38 +1586,38 @@ docs = ["sphinx (==6.1.3)", "sphinx-mdinclude (==0.5.3)"] [[package]] name = "types-pytz" -version = "2023.3.0.0" +version = "2023.3.0.1" description = "Typing stubs for pytz" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-pytz-2023.3.0.0.tar.gz", hash = "sha256:ecdc70d543aaf3616a7e48631543a884f74205f284cefd6649ddf44c6a820aac"}, - {file = "types_pytz-2023.3.0.0-py3-none-any.whl", hash = "sha256:4fc2a7fbbc315f0b6630e0b899fd6c743705abe1094d007b0e612d10da15e0f3"}, + {file = "types-pytz-2023.3.0.1.tar.gz", hash = "sha256:1a7b8d4aac70981cfa24478a41eadfcd96a087c986d6f150d77e3ceb3c2bdfab"}, + {file = "types_pytz-2023.3.0.1-py3-none-any.whl", hash = "sha256:65152e872137926bb67a8fe6cc9cfd794365df86650c5d5fdc7b167b0f38892e"}, ] [[package]] name = "types-pyyaml" -version = "6.0.12.10" +version = "6.0.12.11" description = "Typing stubs for PyYAML" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-PyYAML-6.0.12.10.tar.gz", hash = "sha256:ebab3d0700b946553724ae6ca636ea932c1b0868701d4af121630e78d695fc97"}, - {file = "types_PyYAML-6.0.12.10-py3-none-any.whl", hash = "sha256:662fa444963eff9b68120d70cda1af5a5f2aa57900003c2006d7626450eaae5f"}, + {file = "types-PyYAML-6.0.12.11.tar.gz", hash = "sha256:7d340b19ca28cddfdba438ee638cd4084bde213e501a3978738543e27094775b"}, + {file = "types_PyYAML-6.0.12.11-py3-none-any.whl", hash = "sha256:a461508f3096d1d5810ec5ab95d7eeecb651f3a15b71959999988942063bf01d"}, ] [[package]] name = "types-requests" -version = "2.31.0.1" +version = "2.31.0.2" description = "Typing stubs for requests" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-requests-2.31.0.1.tar.gz", hash = "sha256:3de667cffa123ce698591de0ad7db034a5317457a596eb0b4944e5a9d9e8d1ac"}, - {file = "types_requests-2.31.0.1-py3-none-any.whl", hash = "sha256:afb06ef8f25ba83d59a1d424bd7a5a939082f94b94e90ab5e6116bd2559deaa3"}, + {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, + {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, ] [package.dependencies] @@ -1615,14 +1625,14 @@ types-urllib3 = "*" [[package]] name = "types-urllib3" -version = "1.26.25.13" +version = "1.26.25.14" description = "Typing stubs for urllib3" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-urllib3-1.26.25.13.tar.gz", hash = "sha256:3300538c9dc11dad32eae4827ac313f5d986b8b21494801f1bf97a1ac6c03ae5"}, - {file = "types_urllib3-1.26.25.13-py3-none-any.whl", hash = "sha256:5dbd1d2bef14efee43f5318b5d36d805a489f6600252bb53626d4bfafd95e27c"}, + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, ] [[package]] @@ -1667,14 +1677,14 @@ files = [ [[package]] name = "urllib3" -version = "2.0.3" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, - {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras] diff --git a/docker-compose.yaml b/docker-compose.yaml index 003f8d11c..8ebad2ca0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -18,7 +18,7 @@ services: # dont install wine32 etc by default ENABLE_NDS_SUPPORT: "NO" ENABLE_PS1_SUPPORT: "NO" - ENABLE_WII_GC_SUPPORT: "NO" + ENABLE_GC_WII_SUPPORT: "NO" ENABLE_MSDOS_SUPPORT: "NO" ENABLE_WIN9X_SUPPORT: "NO" # dont install clang by default diff --git a/frontend/src/components/PlatformSelect/PlatformIcon.tsx b/frontend/src/components/PlatformSelect/PlatformIcon.tsx index fba80fbd6..d7f23204b 100644 --- a/frontend/src/components/PlatformSelect/PlatformIcon.tsx +++ b/frontend/src/components/PlatformSelect/PlatformIcon.tsx @@ -1,7 +1,6 @@ import LogoGBA from "./gba.svg" import LogoGCWii from "./gc_wii.svg" import LogoIRIX from "./irix.svg" -import LogoMacOS from "./macos9.svg" import LogoMacOSX from "./macosx.svg" import LogoMSDOS from "./msdos.svg" import LogoN3DS from "./n3ds.svg" @@ -19,7 +18,6 @@ const ICONS = { "msdos": LogoMSDOS, "irix": LogoIRIX, "win9x": LogoWin9x, - "macos9": LogoMacOS, "macosx": LogoMacOSX, "n64": LogoN64, "gba": LogoGBA, diff --git a/frontend/src/components/PlatformSelect/macos9.svg b/frontend/src/components/PlatformSelect/macos9.svg deleted file mode 100644 index eba813f2f..000000000 --- a/frontend/src/components/PlatformSelect/macos9.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/lib/i18n/locales/en/compilers.json b/frontend/src/lib/i18n/locales/en/compilers.json index af53b22e4..7daa404ac 100644 --- a/frontend/src/lib/i18n/locales/en/compilers.json +++ b/frontend/src/lib/i18n/locales/en/compilers.json @@ -37,9 +37,11 @@ "gcc2.7.2kmc": "GCC 2.7.2 (KMC)", "gcc2.7.2sn": "GCC 2.7.2 (SN)", "gcc2.7.2snew": "GCC 2.7.2 (SN, experimental)", + "gcc2.8.1sn": "GCC 2.8.1 (SN)", "gcc2.8.1sn-cxx": "GCC 2.8.1 (SN) (C++)", "gcc2.8.0": "GCC 2.8.0", "gcc2.8.1": "GCC 2.8.1", + "gcc2.8.1pm": "GCC 2.8.1 (Paper Mario)", "gcc4.4.0-mips64-elf": "GCC 4.4.0 (mips64-elf)", "ido5.3_irix": "IDO 5.3", "ido5.3_asm_irix": "IDO 5.3 AS",