Compare commits
	
		
			27 Commits
		
	
	
		
			16-watchli
			...
			454a59b59b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 454a59b59b | |||
| 03bee04d83 | |||
| 8a02b56c67 | |||
| f74bfe1821 | |||
| d06572744b | |||
| 976fd7a560 | |||
| 1894b809a8 | |||
| c2641ad961 | |||
| 28b6695206 | |||
| 9c945863ea | |||
| 42cf64171f | |||
| 99118c4b7b | |||
| 7746fb53e2 | |||
| 7686402166 | |||
| d1b8c63d60 | |||
| 6edd69377d | |||
| 6db7cb94ff | |||
| 4d38dd4677 | |||
| bec4360df0 | |||
| b7e8383abb | |||
| 58b113d934 | |||
| 8441d90deb | |||
| f81bf8c4df | |||
| 3064d0231c | |||
| 5c73d55d91 | |||
| 9e70fc25d4 | |||
| 63ee619aef | 
							
								
								
									
										3
									
								
								.github/workflows/test.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/test.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -17,5 +17,4 @@ jobs: | ||||
|       - uses: actions/setup-python@v5 | ||||
|         with: | ||||
|           python-version: '3.12' | ||||
|       - run: pipx run poetry -- install | ||||
|       - run: pipx run poetry -- run python -m unittest discover -s tests -v | ||||
|       - run: pipx run uv run python -m unittest discover -s tests -v | ||||
|   | ||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| .direnv/ | ||||
| **/__pycache__/* | ||||
| result | ||||
| *.egg-info* | ||||
|   | ||||
							
								
								
									
										1
									
								
								.python-version
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.python-version
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| 3.12 | ||||
| @@ -25,6 +25,7 @@ Options: | ||||
|  | ||||
| Commands: | ||||
|   pr         Get merge status of pull request. | ||||
|   since  Return the count of commits that has happened between the two refs. | ||||
|   since      Return the count of commits that has happened between the... | ||||
|   watchlist  Manage watchlist. | ||||
| ``` | ||||
|  | ||||
|   | ||||
							
								
								
									
										178
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										178
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,69 +1,12 @@ | ||||
| { | ||||
|   "nodes": { | ||||
|     "flake-utils": { | ||||
|       "inputs": { | ||||
|         "systems": "systems" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1726560853, | ||||
|         "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", | ||||
|         "owner": "numtide", | ||||
|         "repo": "flake-utils", | ||||
|         "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "numtide", | ||||
|         "repo": "flake-utils", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "flake-utils_2": { | ||||
|       "inputs": { | ||||
|         "systems": "systems_2" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1726560853, | ||||
|         "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", | ||||
|         "owner": "numtide", | ||||
|         "repo": "flake-utils", | ||||
|         "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "numtide", | ||||
|         "repo": "flake-utils", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "nix-github-actions": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "poetry2nix", | ||||
|           "nixpkgs" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1720066371, | ||||
|         "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=", | ||||
|         "owner": "nix-community", | ||||
|         "repo": "nix-github-actions", | ||||
|         "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-community", | ||||
|         "repo": "nix-github-actions", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1727634051, | ||||
|         "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", | ||||
|         "lastModified": 1737632463, | ||||
|         "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", | ||||
|         "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -73,99 +16,80 @@ | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "poetry2nix": { | ||||
|     "pyproject-build-systems": { | ||||
|       "inputs": { | ||||
|         "flake-utils": "flake-utils_2", | ||||
|         "nix-github-actions": "nix-github-actions", | ||||
|         "nixpkgs": [ | ||||
|           "nixpkgs" | ||||
|         ], | ||||
|         "systems": "systems_3", | ||||
|         "treefmt-nix": "treefmt-nix" | ||||
|         "pyproject-nix": [ | ||||
|           "pyproject-nix" | ||||
|         ], | ||||
|         "uv2nix": [ | ||||
|           "uv2nix" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1727711975, | ||||
|         "narHash": "sha256-zkkL5gw+TNXhVO2zpeH70TKh2dSzUbkBbO6gKHO37s0=", | ||||
|         "owner": "nix-community", | ||||
|         "repo": "poetry2nix", | ||||
|         "rev": "ef877b8e159b23f36ebc39155021657bed744a68", | ||||
|         "lastModified": 1737338290, | ||||
|         "narHash": "sha256-gnXlfFEHA+/jMH7R+7y3JxrI3WfOjgBhzzJNuFW70UU=", | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "build-system-pkgs", | ||||
|         "rev": "e1487e5cefda0c7990bdd2e660bee20971680e45", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-community", | ||||
|         "repo": "poetry2nix", | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "build-system-pkgs", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "pyproject-nix": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "nixpkgs" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1737718664, | ||||
|         "narHash": "sha256-L/X8LdLW0jCAWrLukC63qdg8519IwMc6vkx+WZDj7r0=", | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "pyproject.nix", | ||||
|         "rev": "177aaaa370363e205e0d7b7cc7b3ea3e144aa065", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "pyproject.nix", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "root": { | ||||
|       "inputs": { | ||||
|         "flake-utils": "flake-utils", | ||||
|         "nixpkgs": "nixpkgs", | ||||
|         "poetry2nix": "poetry2nix" | ||||
|         "pyproject-build-systems": "pyproject-build-systems", | ||||
|         "pyproject-nix": "pyproject-nix", | ||||
|         "uv2nix": "uv2nix" | ||||
|       } | ||||
|     }, | ||||
|     "systems": { | ||||
|       "locked": { | ||||
|         "lastModified": 1681028828, | ||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "systems_2": { | ||||
|       "locked": { | ||||
|         "lastModified": 1681028828, | ||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "systems_3": { | ||||
|       "locked": { | ||||
|         "lastModified": 1681028828, | ||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||||
|         "owner": "nix-systems", | ||||
|         "repo": "default", | ||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "id": "systems", | ||||
|         "type": "indirect" | ||||
|       } | ||||
|     }, | ||||
|     "treefmt-nix": { | ||||
|     "uv2nix": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "poetry2nix", | ||||
|           "nixpkgs" | ||||
|         ], | ||||
|         "pyproject-nix": [ | ||||
|           "pyproject-nix" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1727431250, | ||||
|         "narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=", | ||||
|         "owner": "numtide", | ||||
|         "repo": "treefmt-nix", | ||||
|         "rev": "879b29ae9a0378904fbbefe0dadaed43c8905754", | ||||
|         "lastModified": 1737716196, | ||||
|         "narHash": "sha256-dC7J0Rua2UhP+EKlJY3jjQLzgzBnOo1iK/d2aIN0hAs=", | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "uv2nix", | ||||
|         "rev": "e47ec890012166425d1f90fb825eff208baaef4b", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "numtide", | ||||
|         "repo": "treefmt-nix", | ||||
|         "owner": "pyproject-nix", | ||||
|         "repo": "uv2nix", | ||||
|         "type": "github" | ||||
|       } | ||||
|     } | ||||
|   | ||||
							
								
								
									
										188
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										188
									
								
								flake.nix
									
									
									
									
									
								
							| @@ -1,11 +1,24 @@ | ||||
| { | ||||
|   description = "Nix PR status checker"; | ||||
|   description = "Nixpkgs PR request status checker"; | ||||
|  | ||||
|   inputs = { | ||||
|     flake-utils.url = "github:numtide/flake-utils"; | ||||
|     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | ||||
|     poetry2nix = { | ||||
|       url = "github:nix-community/poetry2nix"; | ||||
|  | ||||
|     pyproject-nix = { | ||||
|       url = "github:pyproject-nix/pyproject.nix"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
|  | ||||
|     uv2nix = { | ||||
|       url = "github:pyproject-nix/uv2nix"; | ||||
|       inputs.pyproject-nix.follows = "pyproject-nix"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
|  | ||||
|     pyproject-build-systems = { | ||||
|       url = "github:pyproject-nix/build-system-pkgs"; | ||||
|       inputs.pyproject-nix.follows = "pyproject-nix"; | ||||
|       inputs.uv2nix.follows = "uv2nix"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
|   }; | ||||
| @@ -14,48 +27,171 @@ | ||||
|     { | ||||
|       self, | ||||
|       nixpkgs, | ||||
|       flake-utils, | ||||
|       poetry2nix, | ||||
|       uv2nix, | ||||
|       pyproject-nix, | ||||
|       pyproject-build-systems, | ||||
|       ... | ||||
|     }: | ||||
|     { | ||||
|       overlays.default = final: prev: { | ||||
|         nixprstatus = self.packages.${prev.system}.default; | ||||
|     let | ||||
|       inherit (nixpkgs) lib; | ||||
|       forAllSystems = lib.genAttrs lib.systems.flakeExposed; | ||||
|  | ||||
|       workspace = uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; }; | ||||
|  | ||||
|       overlay = workspace.mkPyprojectOverlay { | ||||
|         sourcePreference = "wheel"; | ||||
|       }; | ||||
|     } | ||||
|     // flake-utils.lib.eachDefaultSystem ( | ||||
|  | ||||
|       editableOverlay = workspace.mkEditablePyprojectOverlay { | ||||
|         root = "$REPO_ROOT"; | ||||
|       }; | ||||
|  | ||||
|       # Python sets grouped per system | ||||
|       pythonSets = forAllSystems ( | ||||
|         system: | ||||
|         let | ||||
|         # see https://github.com/nix-community/poetry2nix/tree/master#api for more functions and examples. | ||||
|           pkgs = nixpkgs.legacyPackages.${system}; | ||||
|         inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication defaultPoetryOverrides; | ||||
|           inherit (pkgs) stdenv; | ||||
|  | ||||
|           # Base Python package set from pyproject.nix | ||||
|           baseSet = pkgs.callPackage pyproject-nix.build.packages { | ||||
|             python = pkgs.python313; | ||||
|           }; | ||||
|  | ||||
|           # An overlay of build fixups & test additions | ||||
|           pyprojectOverrides = final: prev: { | ||||
|             nixprstatus = prev.nixprstatus.overrideAttrs (old: { | ||||
|               # Add tests to passthru.tests | ||||
|               # | ||||
|               # These attribute are used in Flake checks. | ||||
|               passthru = old.passthru // { | ||||
|                 tests = (old.tests or { }) // { | ||||
|                   # Run mypy checks | ||||
|                   mypy = | ||||
|                     let | ||||
|                       venv = final.mkVirtualEnv "nixprstatus-typing-env" { | ||||
|                         nixprstatus = [ "typing" ]; | ||||
|                       }; | ||||
|                     in | ||||
|                     stdenv.mkDerivation { | ||||
|                       name = "${final.nixprstatus.name}-mypy"; | ||||
|                       inherit (final.nixprstatus) src; | ||||
|                       nativeBuildInputs = [ | ||||
|                         venv | ||||
|                       ]; | ||||
|                       dontConfigure = true; | ||||
|                       dontInstall = true; | ||||
|                       buildPhase = '' | ||||
|                         mkdir $out | ||||
|                         mypy --strict nixprstatus --junit-xml $out/junit.xml | ||||
|                       ''; | ||||
|                     }; | ||||
|  | ||||
|                   # Run unittest with coverage reports installed into build output | ||||
|                   unittest = | ||||
|                     let | ||||
|                       venv = final.mkVirtualEnv "nixprstatus-test-env" { | ||||
|                         nixprstatus = [ ]; | ||||
|                       }; | ||||
|                     in | ||||
|                     stdenv.mkDerivation { | ||||
|                       name = "${final.nixprstatus.name}-test"; | ||||
|                       inherit (final.nixprstatus) src; | ||||
|                       nativeBuildInputs = [ | ||||
|                         venv | ||||
|                       ]; | ||||
|  | ||||
|                       dontConfigure = true; | ||||
|  | ||||
|                       buildPhase = '' | ||||
|                         runHook preBuild | ||||
|                         mkdir -p $out | ||||
|                         python -m unittest discover tests -v > $out/unittest.txt | ||||
|                         runHook postBuild | ||||
|                       ''; | ||||
|                     }; | ||||
|                 }; | ||||
|               }; | ||||
|             }); | ||||
|           }; | ||||
|  | ||||
|         in | ||||
|         baseSet.overrideScope ( | ||||
|           lib.composeManyExtensions [ | ||||
|             pyproject-build-systems.overlays.default | ||||
|             overlay | ||||
|             pyprojectOverrides | ||||
|           ] | ||||
|         ) | ||||
|       ); | ||||
|  | ||||
|     in | ||||
|     # Django static roots grouped per system | ||||
|     { | ||||
|       checks = forAllSystems ( | ||||
|         system: | ||||
|         let | ||||
|           pythonSet = pythonSets.${system}; | ||||
|         in | ||||
|         # Inherit tests from passthru.tests into flake checks | ||||
|         pythonSet.nixprstatus.passthru.tests | ||||
|       ); | ||||
|  | ||||
|       packages = forAllSystems ( | ||||
|         system: | ||||
|         let | ||||
|           pkgs = nixpkgs.legacyPackages.${system}; | ||||
|           pythonSet = pythonSets.${system}; | ||||
|           venv = pythonSet.mkVirtualEnv "nixprstatus-env" workspace.deps.default; | ||||
|         in | ||||
|         { | ||||
|         packages = { | ||||
|           nixprstatus = mkPoetryApplication { | ||||
|             projectDir = pkgs.lib.sourceFilesBySuffices ./. [ | ||||
|               "pyproject.toml" | ||||
|               "poetry.lock" | ||||
|               "README.md" | ||||
|               ".py" | ||||
|             ]; | ||||
|             python = pkgs.python312; | ||||
|           default = pkgs.stdenv.mkDerivation { | ||||
|             pname = "nixprstatus"; | ||||
|             version = pythonSet.nixprstatus.version; | ||||
|             dontConfigure = true; | ||||
|             dontUnpack = true; | ||||
|             dontBuild = true; | ||||
|             buildInputs = [ venv ]; | ||||
|             nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||
|             postInstall = '' | ||||
|               mkdir -p $out/bin | ||||
|               ln -s ${venv}/bin/nixprstatus $out/bin/nixprstatus | ||||
|               installShellCompletion --cmd nixprstatus \ | ||||
|               --bash <($out/bin/nixprstatus --show-completion bash) \ | ||||
|               --zsh <($out/bin/nixprstatus --show-completion zsh) \ | ||||
|               --fish <($out/bin/nixprstatus --show-completion fish) | ||||
|             ''; | ||||
|           }; | ||||
|           default = self.packages.${system}.nixprstatus; | ||||
|         } | ||||
|       ); | ||||
|  | ||||
|       overlays.default = final: prev: { | ||||
|         nixprstatus = self.packages.${prev.system}.default; | ||||
|       }; | ||||
|  | ||||
|         devShells.default = pkgs.mkShell { | ||||
|           inputsFrom = [ self.packages.${system}.nixprstatus ]; | ||||
|       # Use an editable Python set for development. | ||||
|       devShells = forAllSystems ( | ||||
|         system: | ||||
|         let | ||||
|           pkgs = nixpkgs.legacyPackages.${system}; | ||||
|           editablePythonSet = pythonSets.${system}.overrideScope editableOverlay; | ||||
|           venv = editablePythonSet.mkVirtualEnv "nixprstatus-dev-env" { | ||||
|             nixprstatus = [ "dev" ]; | ||||
|           }; | ||||
|         in | ||||
|         { | ||||
|           default = pkgs.mkShell { | ||||
|             packages = [ | ||||
|             pkgs.poetry | ||||
|               venv | ||||
|               pkgs.uv | ||||
|             ]; | ||||
|             shellHook = '' | ||||
|               unset PYTHONPATH | ||||
|               export REPO_ROOT=$(git rev-parse --show-toplevel) | ||||
|               export UV_NO_SYNC=1 | ||||
|             ''; | ||||
|           }; | ||||
|         } | ||||
|       ); | ||||
|     }; | ||||
| } | ||||
|   | ||||
							
								
								
									
										0
									
								
								nixprstatus/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								nixprstatus/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -1,94 +1,7 @@ | ||||
| import typer | ||||
| import json | ||||
| from typing import Annotated | ||||
| from rich.console import Console | ||||
| from nixprstatus.pr import pr_merge_status | ||||
| from nixprstatus.pr import commits_since | ||||
| from nixprstatus.watchlist import Watchlist | ||||
| from nixprstatus.watchlist import OutputFormat | ||||
|  | ||||
| app = typer.Typer(rich_markup_mode=None) | ||||
| watchlist_app = typer.Typer() | ||||
| app.add_typer(watchlist_app, name="watchlist", help="Manage watchlist.") | ||||
|  | ||||
| DEFAULT_HEADERS = { | ||||
|     "Accept": "application/vnd.github.text+json", | ||||
| } | ||||
|  | ||||
| BRANCHES = ["nixos-unstable-small", "nixos-unstable", "nixos-24.05"] | ||||
| from nixprstatus.app import app | ||||
|  | ||||
|  | ||||
| @app.command() | ||||
| def pr( | ||||
|     pr: int, | ||||
|     branches: Annotated[ | ||||
|         list[str] | None, typer.Option(help="Check specific branch") | ||||
|     ] = None, | ||||
| ): | ||||
|     """Get merge status of pull request.""" | ||||
|     console = Console() | ||||
|  | ||||
|     if branches: | ||||
|         status = pr_merge_status(pr, branches) | ||||
|     else: | ||||
|         status = pr_merge_status(pr) | ||||
|  | ||||
|     console.print(f"{status.title}\n", highlight=False) | ||||
|     merged = ":white_check_mark: merged" if status.merged else ":x: merged" | ||||
|     console.print(merged, highlight=False) | ||||
|  | ||||
|     for branch in status.branches: | ||||
|         output = ( | ||||
|             f":white_check_mark: {branch}" | ||||
|             if status.branches[branch] | ||||
|             else f":x: {branch}" | ||||
|         ) | ||||
|         console.print(output, highlight=False) | ||||
|  | ||||
|  | ||||
| @app.command() | ||||
| def since( | ||||
|     commit_sha: str, | ||||
|     target: str = "nixos-unstable", | ||||
|     waybar_format: Annotated[ | ||||
|         bool, typer.Option(help="Output in format expected by waybar") | ||||
|     ] = False, | ||||
| ): | ||||
|     """ | ||||
|     Return the count of commits that has happened between the two refs. | ||||
|     """ | ||||
|     count = commits_since(target, commit_sha) | ||||
|  | ||||
|     if waybar_format: | ||||
|         output = {"text": str(count), "tooltip": f"{target}: {count}"} | ||||
|         typer.echo(json.dumps(output)) | ||||
|         return | ||||
|     typer.echo(count) | ||||
|  | ||||
| @watchlist_app.command() | ||||
| def list(watchlist: str|None = None, format: OutputFormat = OutputFormat.CONSOLE): | ||||
|     """List PRs in watchlist.""" | ||||
|     wl = Watchlist.from_file() | ||||
|     wl.print(format=format) | ||||
|  | ||||
| @watchlist_app.command() | ||||
| def add(pr: int): | ||||
|     """Add PR to watchlist.""" | ||||
|     wl = Watchlist.from_file() | ||||
|     wl.add_pr(pr) | ||||
|     wl.to_file() | ||||
|     info = wl.pr(pr) | ||||
|     print(f"Added #{info.pr}: {info.title} to watchlist.") | ||||
|  | ||||
| @watchlist_app.command() | ||||
| def remove(pr: int): | ||||
|     """Remove PR from watchlist.""" | ||||
|     wl = Watchlist.from_file() | ||||
|     wl.remove(pr) | ||||
|     wl.to_file() | ||||
|     print(f"Removed #{pr} from watchlist.") | ||||
|  | ||||
| def main(): | ||||
| def main() -> None: | ||||
|     app() | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										85
									
								
								nixprstatus/app.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								nixprstatus/app.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| import typer | ||||
| import json | ||||
| from typing import Annotated | ||||
| from nixprstatus.pr import pr_merge_status | ||||
| from nixprstatus.pr import commits_since | ||||
| from nixprstatus.watchlist import Watchlist | ||||
| from nixprstatus.output import OutputFormat | ||||
|  | ||||
| app = typer.Typer(rich_markup_mode=None) | ||||
| watchlist_app = typer.Typer() | ||||
| app.add_typer(watchlist_app, name="watchlist", help="Manage watchlist.") | ||||
|  | ||||
| DEFAULT_HEADERS = { | ||||
|     "Accept": "application/vnd.github.text+json", | ||||
| } | ||||
|  | ||||
| BRANCHES = ["nixos-unstable-small", "nixos-unstable", "nixos-24.05"] | ||||
|  | ||||
|  | ||||
| @app.command() | ||||
| def pr( | ||||
|     pr: list[int], | ||||
|     branches: Annotated[ | ||||
|         list[str] | None, typer.Option(help="Check specific branch") | ||||
|     ] = None, | ||||
|     format: Annotated[ | ||||
|         OutputFormat, typer.Option(help="Output format") | ||||
|     ] = OutputFormat.CONSOLE, | ||||
| ) -> None: | ||||
|     """Get merge status of pull request(s).""" | ||||
|     for pr_ in pr: | ||||
|         status = pr_merge_status(pr_, branches) | ||||
|         status.print(format=format) | ||||
|         if format != OutputFormat.JSON: | ||||
|             print() | ||||
|  | ||||
|  | ||||
| @app.command() | ||||
| def since( | ||||
|     commit_sha: str, | ||||
|     target: str = "nixos-unstable", | ||||
|     waybar_format: Annotated[ | ||||
|         bool, typer.Option(help="Output in format expected by waybar") | ||||
|     ] = False, | ||||
| ) -> None: | ||||
|     """ | ||||
|     Return the count of commits that has happened between the two refs. | ||||
|     """ | ||||
|     count = commits_since(target, commit_sha) | ||||
|  | ||||
|     if waybar_format: | ||||
|         output = {"text": str(count), "tooltip": f"{target}: {count}"} | ||||
|         typer.echo(json.dumps(output)) | ||||
|         return | ||||
|     typer.echo(count) | ||||
|  | ||||
|  | ||||
| @watchlist_app.command(name="list") | ||||
| def command_list( | ||||
|     watchlist: str | None = None, format: OutputFormat = OutputFormat.CONSOLE | ||||
| ) -> None: | ||||
|     """List PRs in watchlist.""" | ||||
|     wl = Watchlist.from_file(path=watchlist) | ||||
|     wl.print(format=format) | ||||
|  | ||||
|  | ||||
| @watchlist_app.command() | ||||
| def add(pr: int, watchlist: str | None = None) -> None: | ||||
|     """Add PR to watchlist.""" | ||||
|     wl = Watchlist.from_file(path=watchlist) | ||||
|     info = wl.add_pr(pr) | ||||
|     wl.to_file(path=watchlist) | ||||
|     print(f"Added #{info.pr}: {info.title} to watchlist.") | ||||
|  | ||||
|  | ||||
| @watchlist_app.command() | ||||
| def remove(pr: int) -> None: | ||||
|     """Remove PR from watchlist.""" | ||||
|     wl = Watchlist.from_file() | ||||
|     if pr not in wl: | ||||
|         print(f"#{pr} not in watchlist.") | ||||
|         return | ||||
|     wl.remove(pr) | ||||
|     wl.to_file() | ||||
|     print(f"Removed #{pr} from watchlist.") | ||||
							
								
								
									
										6
									
								
								nixprstatus/output.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								nixprstatus/output.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| from enum import Enum | ||||
|  | ||||
|  | ||||
| class OutputFormat(str, Enum): | ||||
|     CONSOLE = "console" | ||||
|     JSON = "json" | ||||
| @@ -1,11 +1,17 @@ | ||||
| import requests | ||||
| from pydantic import BaseModel | ||||
| from rich.console import Console | ||||
|  | ||||
| from typing import Any | ||||
|  | ||||
| from nixprstatus.output import OutputFormat | ||||
|  | ||||
| DEFAULT_HEADERS = { | ||||
|     "Accept": "application/vnd.github.text+json", | ||||
| } | ||||
| DEFAULT_BRANCHES = ["master", "nixos-unstable-small", "nixos-unstable", "nixos-24.05"] | ||||
| BACKPORT_LABEL = "backport release-24.05" | ||||
| DEFAULT_BRANCHES = ["master", "nixos-unstable-small", "nixos-unstable", "nixos-24.11"] | ||||
| STABLE_BRANCH = "nixos-24.11" | ||||
| BACKPORT_LABEL = "backport release-24.11" | ||||
|  | ||||
|  | ||||
| class PRStatus(BaseModel): | ||||
| @@ -13,6 +19,26 @@ class PRStatus(BaseModel): | ||||
|     merged: bool | ||||
|     branches: dict[str, bool] | ||||
|  | ||||
|     def print(self, format: OutputFormat = OutputFormat.CONSOLE) -> None: | ||||
|         match format: | ||||
|             case OutputFormat.JSON: | ||||
|                 print(self.model_dump_json()) | ||||
|             case OutputFormat.CONSOLE: | ||||
|                 console = Console(highlight=False) | ||||
|                 console.print(f"{self.title}\n") | ||||
|                 merged = ":white_check_mark: merged" if self.merged else ":x: merged" | ||||
|                 console.print(merged) | ||||
|  | ||||
|                 for branch in self.branches: | ||||
|                     output = ( | ||||
|                         f":white_check_mark: {branch}" | ||||
|                         if self.branches[branch] | ||||
|                         else f":x: {branch}" | ||||
|                     ) | ||||
|                     console.print(output) | ||||
|             case _: | ||||
|                 raise ValueError(f"Unknown format: {format}") | ||||
|  | ||||
|  | ||||
| def commit_in_branch(commit_sha: str, branch: str) -> bool: | ||||
|     url = f"https://api.github.com/repos/NixOS/nixpkgs/compare/{branch}...{commit_sha}" | ||||
| @@ -30,20 +56,28 @@ def commits_since(first_ref: str, last_ref: str) -> int: | ||||
|     commit_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||
|     commit_response.raise_for_status() | ||||
|  | ||||
|     return commit_response.json()["behind_by"] | ||||
|     behind_by = commit_response.json()["behind_by"] | ||||
|     if not isinstance(behind_by, int): | ||||
|         raise TypeError("behind_by unexpected type") | ||||
|     return behind_by | ||||
|  | ||||
|  | ||||
| def get_pr(pr: int) -> dict: | ||||
| def get_pr(pr: int) -> dict[str, Any]: | ||||
|     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" | ||||
|     pr_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||
|     pr_response.raise_for_status() | ||||
|  | ||||
|     return pr_response.json() | ||||
|     resp = pr_response.json() | ||||
|     if not isinstance(resp, dict): | ||||
|         raise TypeError("PR response has unexpected type") | ||||
|     return resp | ||||
|  | ||||
|  | ||||
| def pr_merge_status( | ||||
|     pr: int, branches: list[str] = DEFAULT_BRANCHES, check_backport: bool = True | ||||
|     pr: int, branches: list[str] | None = DEFAULT_BRANCHES, check_backport: bool = True | ||||
| ) -> PRStatus: | ||||
|     if not branches: | ||||
|         branches = DEFAULT_BRANCHES | ||||
|     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" | ||||
|     pr_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||
|     pr_response.raise_for_status() | ||||
| @@ -77,7 +111,7 @@ def pr_merge_status( | ||||
|         in_branch = commit_in_branch(commit_sha, branch) | ||||
|         results[branch] = in_branch | ||||
|  | ||||
|     if check_backport and has_backport_label and "nixos-24.05" in branches: | ||||
|     if check_backport and has_backport_label and STABLE_BRANCH in branches: | ||||
|         # Check comments for message about backport | ||||
|         comment_url = f"https://api.github.com/repos/NixOS/nixpkgs/issues/{pr}/comments" | ||||
|         comment_response = requests.get(comment_url, headers=DEFAULT_HEADERS) | ||||
| @@ -95,12 +129,12 @@ def pr_merge_status( | ||||
|                 backport_response = requests.get(backport_url, headers=DEFAULT_HEADERS) | ||||
|                 backport_sha = backport_response.json().get("merge_commit_sha") | ||||
|                 if backport_sha is None: | ||||
|                     results[f"nixos-24.05 (#{backport_pr})"] = False | ||||
|                     results[f"{STABLE_BRANCH} (#{backport_pr})"] = False | ||||
|                     return PRStatus(title=title, merged=True, branches=results) | ||||
|  | ||||
|                 results.pop("nixos-24.05") | ||||
|                 results[f"nixos-24.05 (#{backport_pr})"] = commit_in_branch( | ||||
|                     backport_sha, "nixos-24.05" | ||||
|                 results.pop(STABLE_BRANCH) | ||||
|                 results[f"{STABLE_BRANCH} (#{backport_pr})"] = commit_in_branch( | ||||
|                     backport_sha, STABLE_BRANCH | ||||
|                 ) | ||||
|  | ||||
|     return PRStatus(title=title, merged=True, branches=results) | ||||
|   | ||||
| @@ -1,15 +1,13 @@ | ||||
| import json | ||||
| import os | ||||
| from enum import Enum | ||||
| from pathlib import Path | ||||
| from pydantic import BaseModel | ||||
| from rich.console import Console | ||||
|  | ||||
| from nixprstatus.pr import get_pr | ||||
| from nixprstatus.output import OutputFormat | ||||
|  | ||||
| class OutputFormat(str, Enum): | ||||
|     CONSOLE = "console" | ||||
|     JSON = "json" | ||||
| from typing import Self | ||||
|  | ||||
|  | ||||
| class PRInfo(BaseModel): | ||||
| @@ -21,7 +19,7 @@ class Watchlist(BaseModel): | ||||
|     prs: list[PRInfo] | ||||
|  | ||||
|     @classmethod | ||||
|     def from_file(cls, path: str | None = None) -> "Watchlist": | ||||
|     def from_file(cls, path: str | None = None) -> Self: | ||||
|         if not path: | ||||
|             path = _default_path() | ||||
|  | ||||
| @@ -34,7 +32,7 @@ class Watchlist(BaseModel): | ||||
|             data = json.load(f) | ||||
|         return cls(**data) | ||||
|  | ||||
|     def to_file(self, path: str | None = None): | ||||
|     def to_file(self, path: str | None = None) -> None: | ||||
|         if not path: | ||||
|             _ensure_default_path() | ||||
|             path = _default_path() | ||||
| @@ -44,17 +42,19 @@ class Watchlist(BaseModel): | ||||
|         with open(p, "w") as f: | ||||
|             f.write(self.model_dump_json()) | ||||
|  | ||||
|     def add_pr(self, pr: int): | ||||
|     def add_pr(self, pr: int) -> PRInfo: | ||||
|         # Lookup PR info | ||||
|         info = get_pr(pr) | ||||
|         raw_pr = get_pr(pr) | ||||
|  | ||||
|         title = info["title"] | ||||
|         self.prs.append(PRInfo(pr=pr, title=title)) | ||||
|         title = raw_pr["title"] | ||||
|         info = PRInfo(pr=pr, title=title) | ||||
|         self.prs.append(info) | ||||
|         return info | ||||
|  | ||||
|     def remove(self, pr: int): | ||||
|     def remove(self, pr: int) -> None: | ||||
|         self.prs = [p for p in self.prs if p.pr != pr] | ||||
|  | ||||
|     def print(self, format: OutputFormat = OutputFormat.CONSOLE): | ||||
|     def print(self, format: OutputFormat = OutputFormat.CONSOLE) -> None: | ||||
|         match format: | ||||
|             case OutputFormat.CONSOLE: | ||||
|                 console = Console() | ||||
| @@ -71,6 +71,13 @@ class Watchlist(BaseModel): | ||||
|                 return p | ||||
|         return None | ||||
|  | ||||
|     def __contains__(self, item: PRInfo | int) -> bool: | ||||
|         match item: | ||||
|             case PRInfo(): | ||||
|                 return any([x == item for x in self.prs]) | ||||
|             case int(): | ||||
|                 return any([x.pr == item for x in self.prs]) | ||||
|  | ||||
|  | ||||
| def _default_path() -> str: | ||||
|     if "XDG_STATE_HOME" in os.environ: | ||||
| @@ -78,6 +85,6 @@ def _default_path() -> str: | ||||
|     return "~/.config/nixprstatus/watchlist.json" | ||||
|  | ||||
|  | ||||
| def _ensure_default_path() -> str: | ||||
| def _ensure_default_path() -> None: | ||||
|     p = Path(_default_path()).expanduser() | ||||
|     p.parent.mkdir(parents=True, exist_ok=True) | ||||
|   | ||||
							
								
								
									
										670
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										670
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,670 +0,0 @@ | ||||
| # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. | ||||
|  | ||||
| [[package]] | ||||
| name = "annotated-types" | ||||
| version = "0.7.0" | ||||
| description = "Reusable constraint types to use with typing.Annotated" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, | ||||
|     {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "asttokens" | ||||
| version = "2.4.1" | ||||
| description = "Annotate AST trees with source code positions" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, | ||||
|     {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| six = ">=1.12.0" | ||||
|  | ||||
| [package.extras] | ||||
| astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] | ||||
| test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] | ||||
|  | ||||
| [[package]] | ||||
| name = "certifi" | ||||
| version = "2024.8.30" | ||||
| description = "Python package for providing Mozilla's CA Bundle." | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| files = [ | ||||
|     {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, | ||||
|     {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "charset-normalizer" | ||||
| version = "3.3.2" | ||||
| description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." | ||||
| optional = false | ||||
| python-versions = ">=3.7.0" | ||||
| files = [ | ||||
|     {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, | ||||
|     {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, | ||||
|     {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "click" | ||||
| version = "8.1.7" | ||||
| description = "Composable command line interface toolkit" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, | ||||
|     {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| colorama = {version = "*", markers = "platform_system == \"Windows\""} | ||||
|  | ||||
| [[package]] | ||||
| name = "colorama" | ||||
| version = "0.4.6" | ||||
| description = "Cross-platform colored terminal text." | ||||
| optional = false | ||||
| python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" | ||||
| files = [ | ||||
|     {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, | ||||
|     {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "decorator" | ||||
| version = "5.1.1" | ||||
| description = "Decorators for Humans" | ||||
| optional = false | ||||
| python-versions = ">=3.5" | ||||
| files = [ | ||||
|     {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, | ||||
|     {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "executing" | ||||
| version = "2.1.0" | ||||
| description = "Get the currently executing AST node of a frame, and other information" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, | ||||
|     {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] | ||||
|  | ||||
| [[package]] | ||||
| name = "idna" | ||||
| version = "3.10" | ||||
| description = "Internationalized Domain Names in Applications (IDNA)" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| files = [ | ||||
|     {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, | ||||
|     {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "ipython" | ||||
| version = "8.27.0" | ||||
| description = "IPython: Productive Interactive Computing" | ||||
| optional = false | ||||
| python-versions = ">=3.10" | ||||
| files = [ | ||||
|     {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, | ||||
|     {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| colorama = {version = "*", markers = "sys_platform == \"win32\""} | ||||
| decorator = "*" | ||||
| jedi = ">=0.16" | ||||
| matplotlib-inline = "*" | ||||
| pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} | ||||
| prompt-toolkit = ">=3.0.41,<3.1.0" | ||||
| pygments = ">=2.4.0" | ||||
| stack-data = "*" | ||||
| traitlets = ">=5.13.0" | ||||
|  | ||||
| [package.extras] | ||||
| all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] | ||||
| black = ["black"] | ||||
| doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] | ||||
| kernel = ["ipykernel"] | ||||
| matplotlib = ["matplotlib"] | ||||
| nbconvert = ["nbconvert"] | ||||
| nbformat = ["nbformat"] | ||||
| notebook = ["ipywidgets", "notebook"] | ||||
| parallel = ["ipyparallel"] | ||||
| qtconsole = ["qtconsole"] | ||||
| test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] | ||||
| test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] | ||||
|  | ||||
| [[package]] | ||||
| name = "jedi" | ||||
| version = "0.19.1" | ||||
| description = "An autocompletion tool for Python that can be used for text editors." | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| files = [ | ||||
|     {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, | ||||
|     {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| parso = ">=0.8.3,<0.9.0" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] | ||||
| qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] | ||||
| testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "markdown-it-py" | ||||
| version = "3.0.0" | ||||
| description = "Python port of markdown-it. Markdown parsing, done right!" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, | ||||
|     {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| mdurl = ">=0.1,<1.0" | ||||
|  | ||||
| [package.extras] | ||||
| benchmarking = ["psutil", "pytest", "pytest-benchmark"] | ||||
| code-style = ["pre-commit (>=3.0,<4.0)"] | ||||
| compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] | ||||
| linkify = ["linkify-it-py (>=1,<3)"] | ||||
| plugins = ["mdit-py-plugins"] | ||||
| profiling = ["gprof2dot"] | ||||
| rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] | ||||
| testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] | ||||
|  | ||||
| [[package]] | ||||
| name = "matplotlib-inline" | ||||
| version = "0.1.7" | ||||
| description = "Inline Matplotlib backend for Jupyter" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, | ||||
|     {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| traitlets = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "mdurl" | ||||
| version = "0.1.2" | ||||
| description = "Markdown URL utilities" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, | ||||
|     {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "parso" | ||||
| version = "0.8.4" | ||||
| description = "A Python Parser" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| files = [ | ||||
|     {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, | ||||
|     {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] | ||||
| testing = ["docopt", "pytest"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pexpect" | ||||
| version = "4.9.0" | ||||
| description = "Pexpect allows easy control of interactive console applications." | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, | ||||
|     {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| ptyprocess = ">=0.5" | ||||
|  | ||||
| [[package]] | ||||
| name = "prompt-toolkit" | ||||
| version = "3.0.48" | ||||
| description = "Library for building powerful interactive command lines in Python" | ||||
| optional = false | ||||
| python-versions = ">=3.7.0" | ||||
| files = [ | ||||
|     {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, | ||||
|     {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| wcwidth = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "ptyprocess" | ||||
| version = "0.7.0" | ||||
| description = "Run a subprocess in a pseudo terminal" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, | ||||
|     {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "pure-eval" | ||||
| version = "0.2.3" | ||||
| description = "Safely evaluate AST nodes without side effects" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, | ||||
|     {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["pytest"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pydantic" | ||||
| version = "2.9.2" | ||||
| description = "Data validation using Python type hints" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, | ||||
|     {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| annotated-types = ">=0.6.0" | ||||
| pydantic-core = "2.23.4" | ||||
| typing-extensions = [ | ||||
|     {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, | ||||
|     {version = ">=4.6.1", markers = "python_version < \"3.13\""}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| email = ["email-validator (>=2.0.0)"] | ||||
| timezone = ["tzdata"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pydantic-core" | ||||
| version = "2.23.4" | ||||
| description = "Core functionality for Pydantic validation and serialization" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, | ||||
|     {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, | ||||
|     {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, | ||||
|     {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, | ||||
|     {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, | ||||
|     {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, | ||||
|     {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, | ||||
|     {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, | ||||
|     {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, | ||||
|     {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" | ||||
|  | ||||
| [[package]] | ||||
| name = "pygments" | ||||
| version = "2.18.0" | ||||
| description = "Pygments is a syntax highlighting package written in Python." | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, | ||||
|     {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| windows-terminal = ["colorama (>=0.4.6)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "requests" | ||||
| version = "2.32.3" | ||||
| description = "Python HTTP for Humans." | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, | ||||
|     {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| certifi = ">=2017.4.17" | ||||
| charset-normalizer = ">=2,<4" | ||||
| idna = ">=2.5,<4" | ||||
| urllib3 = ">=1.21.1,<3" | ||||
|  | ||||
| [package.extras] | ||||
| socks = ["PySocks (>=1.5.6,!=1.5.7)"] | ||||
| use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "rich" | ||||
| version = "13.8.1" | ||||
| description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" | ||||
| optional = false | ||||
| python-versions = ">=3.7.0" | ||||
| files = [ | ||||
|     {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, | ||||
|     {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| markdown-it-py = ">=2.2.0" | ||||
| pygments = ">=2.13.0,<3.0.0" | ||||
|  | ||||
| [package.extras] | ||||
| jupyter = ["ipywidgets (>=7.5.1,<9)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "shellingham" | ||||
| version = "1.5.4" | ||||
| description = "Tool to Detect Surrounding Shell" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, | ||||
|     {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "six" | ||||
| version = "1.16.0" | ||||
| description = "Python 2 and 3 compatibility utilities" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" | ||||
| files = [ | ||||
|     {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, | ||||
|     {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "stack-data" | ||||
| version = "0.6.3" | ||||
| description = "Extract data from python stack frames and tracebacks for informative displays" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, | ||||
|     {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| asttokens = ">=2.1.0" | ||||
| executing = ">=1.2.0" | ||||
| pure-eval = "*" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] | ||||
|  | ||||
| [[package]] | ||||
| name = "traitlets" | ||||
| version = "5.14.3" | ||||
| description = "Traitlets Python configuration system" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, | ||||
|     {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] | ||||
| test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] | ||||
|  | ||||
| [[package]] | ||||
| name = "typer" | ||||
| version = "0.12.5" | ||||
| description = "Typer, build great CLIs. Easy to code. Based on Python type hints." | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "typer-0.12.5-py3-none-any.whl", hash = "sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b"}, | ||||
|     {file = "typer-0.12.5.tar.gz", hash = "sha256:f592f089bedcc8ec1b974125d64851029c3b1af145f04aca64d69410f0c9b722"}, | ||||
| ] | ||||
|  | ||||
| [package.dependencies] | ||||
| click = ">=8.0.0" | ||||
| rich = ">=10.11.0" | ||||
| shellingham = ">=1.3.0" | ||||
| typing-extensions = ">=3.7.4.3" | ||||
|  | ||||
| [[package]] | ||||
| name = "typing-extensions" | ||||
| version = "4.12.2" | ||||
| description = "Backported and Experimental Type Hints for Python 3.8+" | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, | ||||
|     {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "urllib3" | ||||
| version = "2.2.3" | ||||
| description = "HTTP library with thread-safe connection pooling, file post, and more." | ||||
| optional = false | ||||
| python-versions = ">=3.8" | ||||
| files = [ | ||||
|     {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, | ||||
|     {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, | ||||
| ] | ||||
|  | ||||
| [package.extras] | ||||
| brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] | ||||
| h2 = ["h2 (>=4,<5)"] | ||||
| socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] | ||||
| zstd = ["zstandard (>=0.18.0)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "wcwidth" | ||||
| version = "0.2.13" | ||||
| description = "Measures the displayed width of unicode strings in a terminal" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
| files = [ | ||||
|     {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, | ||||
|     {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, | ||||
| ] | ||||
|  | ||||
| [metadata] | ||||
| lock-version = "2.0" | ||||
| python-versions = "^3.12" | ||||
| content-hash = "fe84b0646831111f9ab9ccb6d779eb5e06fac3b7581cf480741bb3c319bd9470" | ||||
| @@ -1,24 +1,30 @@ | ||||
| [tool.poetry] | ||||
| [project] | ||||
| name = "nixprstatus" | ||||
| version = "0.1.4" | ||||
| version = "0.1.17" | ||||
| description = "Nixpkgs PR status checker" | ||||
| authors = ["Torjus Håkestad <torjus@usit.uio.no>"] | ||||
| license = "MIT" | ||||
| readme = "README.md" | ||||
| requires-python = ">=3.12" | ||||
| dependencies = [ | ||||
|     "pydantic>=2.10.2", | ||||
|     "requests>=2.32.3", | ||||
|     "typer>=0.13.1", | ||||
| ] | ||||
|  | ||||
| [tool.poetry.dependencies] | ||||
| python = "^3.12" | ||||
| requests = "^2.32.3" | ||||
| typer = "^0.12.5" | ||||
| pydantic = "^2.9.2" | ||||
|  | ||||
|  | ||||
| [tool.poetry.scripts] | ||||
| [project.scripts] | ||||
| nixprstatus = "nixprstatus.__main__:main" | ||||
|  | ||||
| [tool.poetry.group.dev.dependencies] | ||||
| ipython = "^8.27.0" | ||||
| [dependency-groups] | ||||
| dev = [ | ||||
|     { include-group = "typing" }, | ||||
|     { include-group = "lint" }, | ||||
| ] | ||||
| typing = [ | ||||
|     "mypy>=1.13.0", | ||||
|     "types-requests>=2.32.0.20241016", | ||||
| ] | ||||
| lint = [ | ||||
|     "ruff>=0.8.0", | ||||
| ] | ||||
|  | ||||
| [build-system] | ||||
| requires = ["poetry-core"] | ||||
| build-backend = "poetry.core.masonry.api" | ||||
| [tool.uv] | ||||
| package = true | ||||
|   | ||||
							
								
								
									
										177
									
								
								tests/fixtures/comments_345583.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								tests/fixtures/comments_345583.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,177 @@ | ||||
| [ | ||||
|   { | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/issues/comments/2388655041", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/pull/345769#issuecomment-2388655041", | ||||
|     "issue_url": "https://api.github.com/repos/NixOS/nixpkgs/issues/345769", | ||||
|     "id": 2388655041, | ||||
|     "node_id": "IC_kwDOAEVQ_M6OX_vB", | ||||
|     "user": { | ||||
|       "login": "mweinelt", | ||||
|       "id": 131599, | ||||
|       "node_id": "MDQ6VXNlcjEzMTU5OQ==", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/131599?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/mweinelt", | ||||
|       "html_url": "https://github.com/mweinelt", | ||||
|       "followers_url": "https://api.github.com/users/mweinelt/followers", | ||||
|       "following_url": "https://api.github.com/users/mweinelt/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/mweinelt/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/mweinelt/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/mweinelt/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/mweinelt/orgs", | ||||
|       "repos_url": "https://api.github.com/users/mweinelt/repos", | ||||
|       "events_url": "https://api.github.com/users/mweinelt/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/mweinelt/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "created_at": "2024-10-02T13:31:48Z", | ||||
|     "updated_at": "2024-10-02T13:31:48Z", | ||||
|     "author_association": "MEMBER", | ||||
|     "body_text": "@ofborg build firefox-unwrapped.tests", | ||||
|     "reactions": { | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/issues/comments/2388655041/reactions", | ||||
|       "total_count": 0, | ||||
|       "+1": 0, | ||||
|       "-1": 0, | ||||
|       "laugh": 0, | ||||
|       "hooray": 0, | ||||
|       "confused": 0, | ||||
|       "heart": 0, | ||||
|       "rocket": 0, | ||||
|       "eyes": 0 | ||||
|     }, | ||||
|     "performed_via_github_app": null | ||||
|   }, | ||||
|   { | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/issues/comments/2389811254", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/pull/345769#issuecomment-2389811254", | ||||
|     "issue_url": "https://api.github.com/repos/NixOS/nixpkgs/issues/345769", | ||||
|     "id": 2389811254, | ||||
|     "node_id": "IC_kwDOAEVQ_M6OcaA2", | ||||
|     "user": { | ||||
|       "login": "github-actions[bot]", | ||||
|       "id": 41898282, | ||||
|       "node_id": "MDM6Qm90NDE4OTgyODI=", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/github-actions%5Bbot%5D", | ||||
|       "html_url": "https://github.com/apps/github-actions", | ||||
|       "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", | ||||
|       "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", | ||||
|       "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", | ||||
|       "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", | ||||
|       "type": "Bot", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "created_at": "2024-10-02T22:45:02Z", | ||||
|     "updated_at": "2024-10-02T22:45:02Z", | ||||
|     "author_association": "CONTRIBUTOR", | ||||
|     "body_text": "Successfully created backport PR for `release-24.05`:\n\n#346022", | ||||
|     "reactions": { | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/issues/comments/2389811254/reactions", | ||||
|       "total_count": 0, | ||||
|       "+1": 0, | ||||
|       "-1": 0, | ||||
|       "laugh": 0, | ||||
|       "hooray": 0, | ||||
|       "confused": 0, | ||||
|       "heart": 0, | ||||
|       "rocket": 0, | ||||
|       "eyes": 0 | ||||
|     }, | ||||
|     "performed_via_github_app": { | ||||
|       "id": 15368, | ||||
|       "client_id": "Iv1.05c79e9ad1f6bdfa", | ||||
|       "slug": "github-actions", | ||||
|       "node_id": "MDM6QXBwMTUzNjg=", | ||||
|       "owner": { | ||||
|         "login": "github", | ||||
|         "id": 9919, | ||||
|         "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", | ||||
|         "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", | ||||
|         "gravatar_id": "", | ||||
|         "url": "https://api.github.com/users/github", | ||||
|         "html_url": "https://github.com/github", | ||||
|         "followers_url": "https://api.github.com/users/github/followers", | ||||
|         "following_url": "https://api.github.com/users/github/following{/other_user}", | ||||
|         "gists_url": "https://api.github.com/users/github/gists{/gist_id}", | ||||
|         "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", | ||||
|         "subscriptions_url": "https://api.github.com/users/github/subscriptions", | ||||
|         "organizations_url": "https://api.github.com/users/github/orgs", | ||||
|         "repos_url": "https://api.github.com/users/github/repos", | ||||
|         "events_url": "https://api.github.com/users/github/events{/privacy}", | ||||
|         "received_events_url": "https://api.github.com/users/github/received_events", | ||||
|         "type": "Organization", | ||||
|         "site_admin": false | ||||
|       }, | ||||
|       "name": "GitHub Actions", | ||||
|       "description": "Automate your workflow from idea to production", | ||||
|       "external_url": "https://help.github.com/en/actions", | ||||
|       "html_url": "https://github.com/apps/github-actions", | ||||
|       "created_at": "2018-07-30T09:30:17Z", | ||||
|       "updated_at": "2024-04-10T20:33:16Z", | ||||
|       "permissions": { | ||||
|         "actions": "write", | ||||
|         "administration": "read", | ||||
|         "attestations": "write", | ||||
|         "checks": "write", | ||||
|         "contents": "write", | ||||
|         "deployments": "write", | ||||
|         "discussions": "write", | ||||
|         "issues": "write", | ||||
|         "merge_queues": "write", | ||||
|         "metadata": "read", | ||||
|         "packages": "write", | ||||
|         "pages": "write", | ||||
|         "pull_requests": "write", | ||||
|         "repository_hooks": "write", | ||||
|         "repository_projects": "write", | ||||
|         "security_events": "write", | ||||
|         "statuses": "write", | ||||
|         "vulnerability_alerts": "read" | ||||
|       }, | ||||
|       "events": [ | ||||
|         "branch_protection_rule", | ||||
|         "check_run", | ||||
|         "check_suite", | ||||
|         "create", | ||||
|         "delete", | ||||
|         "deployment", | ||||
|         "deployment_status", | ||||
|         "discussion", | ||||
|         "discussion_comment", | ||||
|         "fork", | ||||
|         "gollum", | ||||
|         "issues", | ||||
|         "issue_comment", | ||||
|         "label", | ||||
|         "merge_group", | ||||
|         "milestone", | ||||
|         "page_build", | ||||
|         "project", | ||||
|         "project_card", | ||||
|         "project_column", | ||||
|         "public", | ||||
|         "pull_request", | ||||
|         "pull_request_review", | ||||
|         "pull_request_review_comment", | ||||
|         "push", | ||||
|         "registry_package", | ||||
|         "release", | ||||
|         "repository", | ||||
|         "repository_dispatch", | ||||
|         "status", | ||||
|         "watch", | ||||
|         "workflow_dispatch", | ||||
|         "workflow_run" | ||||
|       ] | ||||
|     } | ||||
|   } | ||||
| ] | ||||
|  | ||||
							
								
								
									
										186
									
								
								tests/fixtures/compare_nixos-24.11_1e6376619b9192dc7603e07d7187572c45048dd7.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								tests/fixtures/compare_nixos-24.11_1e6376619b9192dc7603e07d7187572c45048dd7.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,186 @@ | ||||
| { | ||||
|   "url": "https://api.github.com/repos/NixOS/nixpkgs/compare/nixos-24.05...1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|   "html_url": "https://github.com/NixOS/nixpkgs/compare/nixos-24.05...1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|   "permalink_url": "https://github.com/NixOS/nixpkgs/compare/NixOS:ecbc1ca...NixOS:1e63766", | ||||
|   "diff_url": "https://github.com/NixOS/nixpkgs/compare/nixos-24.05...1e6376619b9192dc7603e07d7187572c45048dd7.diff", | ||||
|   "patch_url": "https://github.com/NixOS/nixpkgs/compare/nixos-24.05...1e6376619b9192dc7603e07d7187572c45048dd7.patch", | ||||
|   "base_commit": { | ||||
|     "sha": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", | ||||
|     "node_id": "C_kwDOAEVQ_NoAKGVjYmMxY2E4ZmZkNmFlYTgzNzJhZDE2YmU5ZWJiYjM5ODg5ZTU1YjY", | ||||
|     "commit": { | ||||
|       "author": { | ||||
|         "name": "OTABI Tomoya", | ||||
|         "email": "tomoya.otabi@gmail.com", | ||||
|         "date": "2024-10-06T05:47:56Z" | ||||
|       }, | ||||
|       "committer": { | ||||
|         "name": "GitHub", | ||||
|         "email": "noreply@github.com", | ||||
|         "date": "2024-10-06T05:47:56Z" | ||||
|       }, | ||||
|       "message": "[Backport release-24.05] brave: 1.70.119 -> 1.70.123 (#346428)", | ||||
|       "tree": { | ||||
|         "sha": "f0b5ae7d234fd6c2d86f5603b4522f2ba74eda5b", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/f0b5ae7d234fd6c2d86f5603b4522f2ba74eda5b" | ||||
|       }, | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", | ||||
|       "comment_count": 0, | ||||
|       "verification": { | ||||
|         "verified": true, | ||||
|         "reason": "valid", | ||||
|         "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJnAiSMCRC1aQ7uu5UhlAAA0TYQAKRPy/FYu1l+CaEVlEayD+7E\ngFboJbXErmlX5/5lmwW/J3VQb2t3wlhlP5R82Utb66Gucy49vSbKcWAC3DgAT0fG\n2UOozKXq6bAJ+tzBPX/lFNNJHYmTFN3uGifkP+cHZdh7CE0EHH8IFE7rWOfYSMpK\n7Syjl1DsJ72j6ZNdWB3c1J4jCnGQKJRtgJI5yw7feqt6MYVUNLIENuo/RZHZtEF8\nCLZwx9a950pXPLUAH3HyTnoV76H9wC2ahWGUq3Mum/Cdf3WqPi0nuw+rqtjQvvCh\nK1cuS/wOlSTPqVt9S1U4GgUIdE1u82o2Zkxm/b8hOAxBNNg7nCf8RYyITL3gkubc\nIM4UgiOxL/ybpsYmNZ7zzpi8z1N28SrbGlfVG0Zp/7asniKCe/uJoXTQlxR+2GsN\nTld9B272Ttvrnyfokb05+DbTqEPV7NEG7HzXRIKcIYvcP0QdFFYch893n/t1fbFP\niOyqV3FJB68Dcjsr35zqQBPMcGNUtoo2hQFbmCZV3xYWKRfgUD6RnP+oFyIqrw5s\ne1WBwaiAbVnlCACkugGSXNF8s563cHauQkJi7553o75hqXsE8ezHCW12C4OUAQM8\nIspE3A8C/yC137IdAz3L/CpG6Qdp11AZQ1EG0oO0v7TtxQQHR3cBEUTO1vknG5iV\nuWuPBHuc5atQWRe2eVco\n=gGAX\n-----END PGP SIGNATURE-----\n", | ||||
|         "payload": "tree f0b5ae7d234fd6c2d86f5603b4522f2ba74eda5b\nparent 17ae88b569bb15590549ff478bab6494dde4a907\nparent d4eb7924598b8bd830e85c93aeb6aa7c5294de9a\nauthor OTABI Tomoya <tomoya.otabi@gmail.com> 1728193676 +0900\ncommitter GitHub <noreply@github.com> 1728193676 +0900\n\n[Backport release-24.05] brave: 1.70.119 -> 1.70.123 (#346428)\n\n" | ||||
|       } | ||||
|     }, | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/commit/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", | ||||
|     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6/comments", | ||||
|     "author": { | ||||
|       "login": "natsukium", | ||||
|       "id": 25083790, | ||||
|       "node_id": "MDQ6VXNlcjI1MDgzNzkw", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/25083790?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/natsukium", | ||||
|       "html_url": "https://github.com/natsukium", | ||||
|       "followers_url": "https://api.github.com/users/natsukium/followers", | ||||
|       "following_url": "https://api.github.com/users/natsukium/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/natsukium/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/natsukium/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/natsukium/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/natsukium/orgs", | ||||
|       "repos_url": "https://api.github.com/users/natsukium/repos", | ||||
|       "events_url": "https://api.github.com/users/natsukium/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/natsukium/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "committer": { | ||||
|       "login": "web-flow", | ||||
|       "id": 19864447, | ||||
|       "node_id": "MDQ6VXNlcjE5ODY0NDQ3", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/web-flow", | ||||
|       "html_url": "https://github.com/web-flow", | ||||
|       "followers_url": "https://api.github.com/users/web-flow/followers", | ||||
|       "following_url": "https://api.github.com/users/web-flow/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/web-flow/orgs", | ||||
|       "repos_url": "https://api.github.com/users/web-flow/repos", | ||||
|       "events_url": "https://api.github.com/users/web-flow/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/web-flow/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "parents": [ | ||||
|       { | ||||
|         "sha": "17ae88b569bb15590549ff478bab6494dde4a907", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/17ae88b569bb15590549ff478bab6494dde4a907", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/17ae88b569bb15590549ff478bab6494dde4a907" | ||||
|       }, | ||||
|       { | ||||
|         "sha": "d4eb7924598b8bd830e85c93aeb6aa7c5294de9a", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/d4eb7924598b8bd830e85c93aeb6aa7c5294de9a", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/d4eb7924598b8bd830e85c93aeb6aa7c5294de9a" | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "merge_base_commit": { | ||||
|     "sha": "1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|     "node_id": "C_kwDOAEVQ_NoAKDFlNjM3NjYxOWI5MTkyZGM3NjAzZTA3ZDcxODc1NzJjNDUwNDhkZDc", | ||||
|     "commit": { | ||||
|       "author": { | ||||
|         "name": "Martin Weinelt", | ||||
|         "email": "mweinelt@users.noreply.github.com", | ||||
|         "date": "2024-10-04T00:25:13Z" | ||||
|       }, | ||||
|       "committer": { | ||||
|         "name": "GitHub", | ||||
|         "email": "noreply@github.com", | ||||
|         "date": "2024-10-04T00:25:13Z" | ||||
|       }, | ||||
|       "message": "[Backport release-24.05] Firefox: 130.0.1 -> 131.0; 128.2.0esr -> 128.3.0esr; 115.15.0esr -> 115.16.0esr (#346022)", | ||||
|       "tree": { | ||||
|         "sha": "ca267bfaced108f8b846f36b4222f50bcbea132e", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/ca267bfaced108f8b846f36b4222f50bcbea132e" | ||||
|       }, | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|       "comment_count": 0, | ||||
|       "verification": { | ||||
|         "verified": true, | ||||
|         "reason": "valid", | ||||
|         "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJm/zXpCRC1aQ7uu5UhlAAAwfYQAKQ+YS049CLiRZX5L6663sip\nQ0lB49M6NgX6cx/uzDP2wkNdPZ+Ft/76Fngki9B3UBvJsdfgYsWMZ0L8lNCJPV5v\n65FCH0yzbwHz2gCgE2dTPMbd1qQGFaO1rSqksmLlovoA5NTHLrkoN7PEdNt97YQm\nvsJKHNAMzBgwmdom7OyxcBQfAmvNT4nijFqDW0AJ8VzS72EYW2il0S/uVzK2EE0k\nZdVX+oK2pYYYwaWchPofOalDLgXY5dteqNU7cQRdSI1saxoFbXVyLqo2N/lSm4/b\nv9+Uwwycjl7FyRCwucWXVBuMbbDsJW68xHSg060HbxBUEL3os8CleTiRWcXVa64d\nc619UC4/PQM+7pQFhOvATVBX+jWe508PQX5RCWIzQJWoOu+xcBbNeSImstM6jFWB\nDhKRYGM56+nPH+WRliTK6w07KAOhYMFDRAGHbUm3x5L03oqXowVjYx9UfdFBeNqW\noeETR77F6zfH/lBcW68JQMWM4ZG/sCo4HM81DY4vR99EPNKOPKNycjmV2Jb3WHRN\nO1DSmEeiCt7lgeuGmvIOXA5Z+QvAEGv8ZWRZ/K276GuK9kePh6xbu0ntAXRvy5iw\n/f426Ikzy7UM/yEL7458jrhyyqHlxiOXm+B+TSwbNSjLXHJdH5Ap3seIQjdo+num\nTWeoCrlH/oi+Tv83Iiye\n=G4zI\n-----END PGP SIGNATURE-----\n", | ||||
|         "payload": "tree ca267bfaced108f8b846f36b4222f50bcbea132e\nparent 0799dfba72420acad00f6c6b643e42f14589da6f\nparent 0010c39a77012492a1602258ad8e3fd5e9377bf6\nauthor Martin Weinelt <mweinelt@users.noreply.github.com> 1728001513 +0200\ncommitter GitHub <noreply@github.com> 1728001513 +0200\n\n[Backport release-24.05] Firefox: 130.0.1 -> 131.0; 128.2.0esr -> 128.3.0esr; 115.15.0esr -> 115.16.0esr (#346022)\n\n" | ||||
|       } | ||||
|     }, | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/commit/1e6376619b9192dc7603e07d7187572c45048dd7", | ||||
|     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/1e6376619b9192dc7603e07d7187572c45048dd7/comments", | ||||
|     "author": { | ||||
|       "login": "mweinelt", | ||||
|       "id": 131599, | ||||
|       "node_id": "MDQ6VXNlcjEzMTU5OQ==", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/131599?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/mweinelt", | ||||
|       "html_url": "https://github.com/mweinelt", | ||||
|       "followers_url": "https://api.github.com/users/mweinelt/followers", | ||||
|       "following_url": "https://api.github.com/users/mweinelt/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/mweinelt/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/mweinelt/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/mweinelt/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/mweinelt/orgs", | ||||
|       "repos_url": "https://api.github.com/users/mweinelt/repos", | ||||
|       "events_url": "https://api.github.com/users/mweinelt/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/mweinelt/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "committer": { | ||||
|       "login": "web-flow", | ||||
|       "id": 19864447, | ||||
|       "node_id": "MDQ6VXNlcjE5ODY0NDQ3", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/web-flow", | ||||
|       "html_url": "https://github.com/web-flow", | ||||
|       "followers_url": "https://api.github.com/users/web-flow/followers", | ||||
|       "following_url": "https://api.github.com/users/web-flow/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/web-flow/orgs", | ||||
|       "repos_url": "https://api.github.com/users/web-flow/repos", | ||||
|       "events_url": "https://api.github.com/users/web-flow/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/web-flow/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "parents": [ | ||||
|       { | ||||
|         "sha": "0799dfba72420acad00f6c6b643e42f14589da6f", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/0799dfba72420acad00f6c6b643e42f14589da6f", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/0799dfba72420acad00f6c6b643e42f14589da6f" | ||||
|       }, | ||||
|       { | ||||
|         "sha": "0010c39a77012492a1602258ad8e3fd5e9377bf6", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/0010c39a77012492a1602258ad8e3fd5e9377bf6", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/0010c39a77012492a1602258ad8e3fd5e9377bf6" | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "status": "behind", | ||||
|   "ahead_by": 0, | ||||
|   "behind_by": 68, | ||||
|   "total_commits": 0, | ||||
|   "commits": [ | ||||
|  | ||||
|   ], | ||||
|   "files": [ | ||||
|  | ||||
|   ] | ||||
| } | ||||
|  | ||||
							
								
								
									
										24306
									
								
								tests/fixtures/compare_nixos-24.11_2c5fac3edf2d00d948253e392ec1604b29b38f14.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24306
									
								
								tests/fixtures/compare_nixos-24.11_2c5fac3edf2d00d948253e392ec1604b29b38f14.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										24154
									
								
								tests/fixtures/compare_nixos-24.11_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24154
									
								
								tests/fixtures/compare_nixos-24.11_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										180
									
								
								tests/fixtures/compare_nixos-unstable-small_2c5fac3edf2d00d948253e392ec1604b29b38f14.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								tests/fixtures/compare_nixos-unstable-small_2c5fac3edf2d00d948253e392ec1604b29b38f14.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,180 @@ | ||||
| { | ||||
|   "url": "https://api.github.com/repos/NixOS/nixpkgs/compare/nixos-unstable...2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|   "html_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|   "permalink_url": "https://github.com/NixOS/nixpkgs/compare/NixOS:bc947f5...NixOS:2c5fac3", | ||||
|   "diff_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...2c5fac3edf2d00d948253e392ec1604b29b38f14.diff", | ||||
|   "patch_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...2c5fac3edf2d00d948253e392ec1604b29b38f14.patch", | ||||
|   "base_commit": { | ||||
|     "sha": "bc947f541ae55e999ffdb4013441347d83b00feb", | ||||
|     "node_id": "C_kwDOAEVQ_NoAKGJjOTQ3ZjU0MWFlNTVlOTk5ZmZkYjQwMTM0NDEzNDdkODNiMDBmZWI", | ||||
|     "commit": { | ||||
|       "author": { | ||||
|         "name": "Masum Reza", | ||||
|         "email": "50095635+JohnRTitor@users.noreply.github.com", | ||||
|         "date": "2024-10-04T05:06:13Z" | ||||
|       }, | ||||
|       "committer": { | ||||
|         "name": "GitHub", | ||||
|         "email": "noreply@github.com", | ||||
|         "date": "2024-10-04T05:06:13Z" | ||||
|       }, | ||||
|       "message": "alpaca: 2.0.3 -> 2.0.5 (#345070)", | ||||
|       "tree": { | ||||
|         "sha": "3e7376cebbaf8793c39bb68447950f1045fd4ea5", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/3e7376cebbaf8793c39bb68447950f1045fd4ea5" | ||||
|       }, | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||
|       "comment_count": 0, | ||||
|       "verification": { | ||||
|         "verified": true, | ||||
|         "reason": "valid", | ||||
|         "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJm/3fFCRC1aQ7uu5UhlAAA2JMQAIz5pfsohrsrdPgPxlZVDuaQ\nVPLlM82MOpkq958U90OnXyC4ZlIX2+YwvCUkuRjYjMv9VlHMHU6olHy/jvt5VF/g\nckoaAMztOsPqgyKUXiMew83j8L8EBqVQQZ3W2Br9EnzG2RNEDUQdP5c6Fwc4tccl\nmb3PPb15Nm0lFnitwUO78KxILhrekjdxxrKC/wUihaL/gH4CzdkReVZJ6FPbq9l6\n/HTTDW+amrpOr2XLQ2dC5Cy/nvZS+MPjduNSPsf5a5/ElKmNltbPFChTY0pnv/dq\nrH1zDsohfbtk5WgcmLhiIOpvO86yLfa82sPUJA65GuAW7gYGbMsN6Sh3CnfY7sxb\n7x5r7/sSodxG4t2lML571JfX2aFCeNKgeYomViRu1ZGyHg3LJAN8jKi1JIyVCpH1\nkiTOmQQWzPJRC2COvMGSdXVc7h4CuInev7MmDDiubJDkFYyT8DBzpqVxUTmni13p\ndwr6QAWZZpjnxZxVFnYLlTSifLUIazEJTqaNWnCCc99hyWAo+f5njUlT+9fPLoKE\nHAgMmC55sOzOXnLLgPIoZe2g3wtHNELY3Y6wq7hfS2K9GCxJnJ3mttiUypnyHEuR\n/dVGOlES5p7xWUZ+zEYOp+cLnMWudB5X5cf/ojooLQJc8CL8gIfOD7KOrKewf2Yi\nUUUYH6/erCgoQE2klAaS\n=Hu+V\n-----END PGP SIGNATURE-----\n", | ||||
|         "payload": "tree 3e7376cebbaf8793c39bb68447950f1045fd4ea5\nparent 674acd883193175de91d37a6b3ea8c814d12c8bb\nparent e229318f7d34f4988a815e6d10b8fb0f7e0e2974\nauthor Masum Reza <50095635+JohnRTitor@users.noreply.github.com> 1728018373 +0530\ncommitter GitHub <noreply@github.com> 1728018373 +0530\n\nalpaca: 2.0.3 -> 2.0.5 (#345070)\n\n" | ||||
|       } | ||||
|     }, | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/commit/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||
|     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/bc947f541ae55e999ffdb4013441347d83b00feb/comments", | ||||
|     "author": { | ||||
|       "login": "JohnRTitor", | ||||
|       "id": 50095635, | ||||
|       "node_id": "MDQ6VXNlcjUwMDk1NjM1", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/50095635?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/JohnRTitor", | ||||
|       "html_url": "https://github.com/JohnRTitor", | ||||
|       "followers_url": "https://api.github.com/users/JohnRTitor/followers", | ||||
|       "following_url": "https://api.github.com/users/JohnRTitor/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/JohnRTitor/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/JohnRTitor/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/JohnRTitor/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/JohnRTitor/orgs", | ||||
|       "repos_url": "https://api.github.com/users/JohnRTitor/repos", | ||||
|       "events_url": "https://api.github.com/users/JohnRTitor/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/JohnRTitor/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "committer": { | ||||
|       "login": "web-flow", | ||||
|       "id": 19864447, | ||||
|       "node_id": "MDQ6VXNlcjE5ODY0NDQ3", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/web-flow", | ||||
|       "html_url": "https://github.com/web-flow", | ||||
|       "followers_url": "https://api.github.com/users/web-flow/followers", | ||||
|       "following_url": "https://api.github.com/users/web-flow/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/web-flow/orgs", | ||||
|       "repos_url": "https://api.github.com/users/web-flow/repos", | ||||
|       "events_url": "https://api.github.com/users/web-flow/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/web-flow/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "parents": [ | ||||
|       { | ||||
|         "sha": "674acd883193175de91d37a6b3ea8c814d12c8bb", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/674acd883193175de91d37a6b3ea8c814d12c8bb", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/674acd883193175de91d37a6b3ea8c814d12c8bb" | ||||
|       }, | ||||
|       { | ||||
|         "sha": "e229318f7d34f4988a815e6d10b8fb0f7e0e2974", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/e229318f7d34f4988a815e6d10b8fb0f7e0e2974", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/e229318f7d34f4988a815e6d10b8fb0f7e0e2974" | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "merge_base_commit": { | ||||
|     "sha": "2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|     "node_id": "C_kwDOAEVQ_NoAKDJjNWZhYzNlZGYyZDAwZDk0ODI1M2UzOTJlYzE2MDRiMjliMzhmMTQ", | ||||
|     "commit": { | ||||
|       "author": { | ||||
|         "name": "Thomas Gerbet", | ||||
|         "email": "thomas@gerbet.me", | ||||
|         "date": "2024-09-30T18:58:09Z" | ||||
|       }, | ||||
|       "committer": { | ||||
|         "name": "Bjørn Forsman", | ||||
|         "email": "bjorn.forsman@gmail.com", | ||||
|         "date": "2024-10-01T06:56:48Z" | ||||
|       }, | ||||
|       "message": "wireshark: 4.2.6 -> 4.2.7\n\nFixes CVE-2024-8250.\nhttps://www.wireshark.org/security/wnpa-sec-2024-11.html\n\nChanges:\nhttps://www.wireshark.org/docs/relnotes/wireshark-4.2.7.html", | ||||
|       "tree": { | ||||
|         "sha": "35384ecd1601439a960f3ef76a1974bb7784523f", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/35384ecd1601439a960f3ef76a1974bb7784523f" | ||||
|       }, | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|       "comment_count": 0, | ||||
|       "verification": { | ||||
|         "verified": false, | ||||
|         "reason": "unsigned", | ||||
|         "signature": null, | ||||
|         "payload": null | ||||
|       } | ||||
|     }, | ||||
|     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|     "html_url": "https://github.com/NixOS/nixpkgs/commit/2c5fac3edf2d00d948253e392ec1604b29b38f14", | ||||
|     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/2c5fac3edf2d00d948253e392ec1604b29b38f14/comments", | ||||
|     "author": { | ||||
|       "login": "LeSuisse", | ||||
|       "id": 737767, | ||||
|       "node_id": "MDQ6VXNlcjczNzc2Nw==", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/737767?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/LeSuisse", | ||||
|       "html_url": "https://github.com/LeSuisse", | ||||
|       "followers_url": "https://api.github.com/users/LeSuisse/followers", | ||||
|       "following_url": "https://api.github.com/users/LeSuisse/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/LeSuisse/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/LeSuisse/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/LeSuisse/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/LeSuisse/orgs", | ||||
|       "repos_url": "https://api.github.com/users/LeSuisse/repos", | ||||
|       "events_url": "https://api.github.com/users/LeSuisse/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/LeSuisse/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "committer": { | ||||
|       "login": "bjornfor", | ||||
|       "id": 133602, | ||||
|       "node_id": "MDQ6VXNlcjEzMzYwMg==", | ||||
|       "avatar_url": "https://avatars.githubusercontent.com/u/133602?v=4", | ||||
|       "gravatar_id": "", | ||||
|       "url": "https://api.github.com/users/bjornfor", | ||||
|       "html_url": "https://github.com/bjornfor", | ||||
|       "followers_url": "https://api.github.com/users/bjornfor/followers", | ||||
|       "following_url": "https://api.github.com/users/bjornfor/following{/other_user}", | ||||
|       "gists_url": "https://api.github.com/users/bjornfor/gists{/gist_id}", | ||||
|       "starred_url": "https://api.github.com/users/bjornfor/starred{/owner}{/repo}", | ||||
|       "subscriptions_url": "https://api.github.com/users/bjornfor/subscriptions", | ||||
|       "organizations_url": "https://api.github.com/users/bjornfor/orgs", | ||||
|       "repos_url": "https://api.github.com/users/bjornfor/repos", | ||||
|       "events_url": "https://api.github.com/users/bjornfor/events{/privacy}", | ||||
|       "received_events_url": "https://api.github.com/users/bjornfor/received_events", | ||||
|       "type": "User", | ||||
|       "site_admin": false | ||||
|     }, | ||||
|     "parents": [ | ||||
|       { | ||||
|         "sha": "92bdb0b4e0f698cdde010c2254cdb2afee6e07c3", | ||||
|         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/92bdb0b4e0f698cdde010c2254cdb2afee6e07c3", | ||||
|         "html_url": "https://github.com/NixOS/nixpkgs/commit/92bdb0b4e0f698cdde010c2254cdb2afee6e07c3" | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "status": "behind", | ||||
|   "ahead_by": 0, | ||||
|   "behind_by": 918, | ||||
|   "total_commits": 0, | ||||
|   "commits": [ | ||||
|  | ||||
|   ], | ||||
|   "files": [ | ||||
|  | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										24154
									
								
								tests/fixtures/compare_nixos-unstable-small_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24154
									
								
								tests/fixtures/compare_nixos-unstable-small_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										24154
									
								
								tests/fixtures/compare_nixos-unstable_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24154
									
								
								tests/fixtures/compare_nixos-unstable_3569a56280e8afba7c10f9171dac71ff882ff1c1.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								tests/fixtures/pulls_345769.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								tests/fixtures/pulls_345769.json
									
									
									
									
										vendored
									
									
								
							| @@ -106,7 +106,7 @@ | ||||
|       "id": 6984924132, | ||||
|       "node_id": "LA_kwDOAEVQ_M8AAAABoFV75A", | ||||
|       "url": "https://api.github.com/repos/NixOS/nixpkgs/labels/backport%20release-24.05", | ||||
|       "name": "backport release-24.05", | ||||
|       "name": "backport release-24.11", | ||||
|       "color": "0fafaa", | ||||
|       "default": false, | ||||
|       "description": "Backport PR automatically" | ||||
|   | ||||
| @@ -1,20 +1,23 @@ | ||||
| import requests | ||||
| import json | ||||
|  | ||||
| from typing import Any | ||||
|  | ||||
| def mocked_requests_get(*args, **kwargs): | ||||
|     class MockedResponse: | ||||
|         def __init__(self, json_data, status_code): | ||||
|  | ||||
| class MockedResponse: | ||||
|     def __init__(self, json_data: bytes, status_code: int) -> None: | ||||
|         self.json_data = json_data | ||||
|         self.status_code = status_code | ||||
|  | ||||
|         def json(self): | ||||
|     def json(self) -> Any: | ||||
|         return json.loads(self.json_data) | ||||
|  | ||||
|         def raise_for_status(self): | ||||
|     def raise_for_status(self) -> None: | ||||
|         if self.status_code not in [200, 201]: | ||||
|             raise requests.exceptions.HTTPError() | ||||
|  | ||||
|  | ||||
| def mocked_requests_get(*args, **kwargs) -> MockedResponse: | ||||
|     if "pulls" in args[0]: | ||||
|         pr = args[0].split("/")[-1] | ||||
|         with open(f"tests/fixtures/pulls_{pr}.json") as f: | ||||
|   | ||||
							
								
								
									
										83
									
								
								tests/test_cli.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								tests/test_cli.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| import unittest | ||||
| import unittest.mock | ||||
| import json | ||||
|  | ||||
| from typer.testing import CliRunner | ||||
|  | ||||
| from nixprstatus.app import app | ||||
|  | ||||
| from tests.helpers.mocks import mocked_requests_get | ||||
|  | ||||
| runner = CliRunner() | ||||
|  | ||||
|  | ||||
| class TestCli(unittest.TestCase): | ||||
|     def test_help(self): | ||||
|         result = runner.invoke(app, ["--help"]) | ||||
|         self.assertEqual(result.exit_code, 0) | ||||
|         self.assertIn("Usage: root [OPTIONS] COMMAND [ARGS]...", result.output) | ||||
|         self.assertIn("--show-completion", result.output) | ||||
|         self.assertIn("Commands:", result.output) | ||||
|         self.assertIn("pr", result.output) | ||||
|         self.assertIn("watchlist", result.output) | ||||
|         self.assertIn("since", result.output) | ||||
|  | ||||
|     def test_pr_help(self): | ||||
|         result = runner.invoke(app, ["pr", "--help"]) | ||||
|         self.assertEqual(result.exit_code, 0) | ||||
|         self.assertIn("Usage: root pr [OPTIONS] PR..", result.output) | ||||
|         self.assertIn("Options:", result.output) | ||||
|  | ||||
|     @unittest.mock.patch("requests.get", side_effect=mocked_requests_get) | ||||
|     def test_pr_single_simple(self, mock_get): | ||||
|         result = runner.invoke(app, ["pr", "345583"]) | ||||
|         print(result.exception) | ||||
|         self.assertEqual(result.exit_code, 0) | ||||
|         self.assertIn("wireshark: 4.2.6 -> 4.2.7", result.output) | ||||
|  | ||||
|     @unittest.mock.patch("requests.get", side_effect=mocked_requests_get) | ||||
|     def test_pr_single_json(self, mock_get): | ||||
|         result = runner.invoke(app, ["pr", "--format", "json", "345583"]) | ||||
|         self.assertEqual(result.exit_code, 0) | ||||
|         expected = { | ||||
|             "title": "wireshark: 4.2.6 -> 4.2.7", | ||||
|             "merged": True, | ||||
|             "branches": { | ||||
|                 "nixos-unstable-small": True, | ||||
|                 "nixos-unstable": True, | ||||
|                 "nixos-24.11": False, | ||||
|             }, | ||||
|         } | ||||
|         output = json.loads(result.output) | ||||
|         self.assertEqual(output, expected) | ||||
|  | ||||
|     @unittest.mock.patch("requests.get", side_effect=mocked_requests_get) | ||||
|     def test_pr_multiple(self, mock_get): | ||||
|         result = runner.invoke(app, ["pr", "--format", "json", "345583", "345769"]) | ||||
|         self.assertEqual(result.exit_code, 0) | ||||
|         expected = [ | ||||
|             { | ||||
|                 "title": "wireshark: 4.2.6 -> 4.2.7", | ||||
|                 "merged": True, | ||||
|                 "branches": { | ||||
|                     "master": True, | ||||
|                     "nixos-unstable-small": True, | ||||
|                     "nixos-unstable": True, | ||||
|                     "nixos-24.11": False, | ||||
|                 }, | ||||
|             }, | ||||
|             { | ||||
|                 "title": "Firefox: 130.0.1 -> 131.0; 128.2.0esr -> 128.3.0esr; 115.15.0esr -> 115.16.0esr", | ||||
|                 "merged": True, | ||||
|                 "branches": { | ||||
|                     "nixos-unstable-small": False, | ||||
|                     "nixos-unstable": False, | ||||
|                     "nixos-24.11 (#346022)": True, | ||||
|                 }, | ||||
|             }, | ||||
|         ] | ||||
|         output = [] | ||||
|         for line in result.output.split("\n"): | ||||
|             if len(line) > 0: | ||||
|                 output.append(json.loads(line)) | ||||
|         self.assertEqual(output, expected) | ||||
| @@ -20,11 +20,11 @@ class TestPRMergeStatus(unittest.TestCase): | ||||
|     @unittest.mock.patch("requests.get", side_effect=mocked_requests_get) | ||||
|     def test_pr_merge_status_backport_345769(self, mock_get): | ||||
|         pr = 345769 | ||||
|         branches = ["nixos-24.05"] | ||||
|         branches = ["nixos-24.11"] | ||||
|  | ||||
|         res = pr_merge_status(pr, branches, check_backport=True) | ||||
|         self.assertTrue(res.merged) | ||||
|         self.assertTrue(res.branches["nixos-24.05 (#346022)"]) | ||||
|         self.assertTrue(res.branches["nixos-24.11 (#346022)"]) | ||||
|  | ||||
|     @unittest.mock.patch("requests.get", side_effect=mocked_requests_get) | ||||
|     def test_pr_merge_status_title_345769(self, mock_get): | ||||
|   | ||||
| @@ -32,3 +32,9 @@ class TestWatchlist(unittest.TestCase): | ||||
|         w = Watchlist(prs=[PRInfo(pr=1, title="PR 1")]) | ||||
|         self.assertEqual(w.pr(1), PRInfo(pr=1, title="PR 1")) | ||||
|         self.assertEqual(w.pr(2), None) | ||||
|  | ||||
|     def test_contains(self): | ||||
|         w = Watchlist(prs=[PRInfo(pr=1, title="PR 1")]) | ||||
|         self.assertIn(PRInfo(pr=1, title="PR 1"), w) | ||||
|         self.assertIn(1, w) | ||||
|         self.assertNotIn(2, w) | ||||
|   | ||||
							
								
								
									
										350
									
								
								uv.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										350
									
								
								uv.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,350 @@ | ||||
| version = 1 | ||||
| requires-python = ">=3.12" | ||||
|  | ||||
| [[package]] | ||||
| name = "annotated-types" | ||||
| version = "0.7.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "certifi" | ||||
| version = "2024.12.14" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "charset-normalizer" | ||||
| version = "3.4.1" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "click" | ||||
| version = "8.1.8" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "colorama", marker = "platform_system == 'Windows'" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "colorama" | ||||
| version = "0.4.6" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "idna" | ||||
| version = "3.10" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "markdown-it-py" | ||||
| version = "3.0.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "mdurl" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "mdurl" | ||||
| version = "0.1.2" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "mypy" | ||||
| version = "1.14.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "mypy-extensions" }, | ||||
|     { name = "typing-extensions" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/8c/7b/08046ef9330735f536a09a2e31b00f42bccdb2795dcd979636ba43bb2d63/mypy-1.14.0.tar.gz", hash = "sha256:822dbd184d4a9804df5a7d5335a68cf7662930e70b8c1bc976645d1509f9a9d6", size = 3215684 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/fe/d8/0e72175ee0253217f5c44524f5e95251c02e95ba9749fb87b0e2074d203a/mypy-1.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d5326ab70a6db8e856d59ad4cb72741124950cbbf32e7b70e30166ba7bbf61dd", size = 11269011 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/e9/6d/4ea13839dabe5db588dc6a1b766da16f420d33cf118a7b7172cdf6c7fcb2/mypy-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bf4ec4980bec1e0e24e5075f449d014011527ae0055884c7e3abc6a99cd2c7f1", size = 10253076 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/3e/38/7db2c5d0f4d290e998f7a52b2e2616c7bbad96b8e04278ab09d11978a29e/mypy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:390dfb898239c25289495500f12fa73aa7f24a4c6d90ccdc165762462b998d63", size = 12862786 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/bf/4b/62d59c801b34141040989949c2b5c157d0408b45357335d3ec5b2845b0f6/mypy-1.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7e026d55ddcd76e29e87865c08cbe2d0104e2b3153a523c529de584759379d3d", size = 12971568 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/f1/9c/e0f281b32d70c87b9e4d2939e302b1ff77ada4d7b0f2fb32890c144bc1d6/mypy-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:585ed36031d0b3ee362e5107ef449a8b5dfd4e9c90ccbe36414ee405ee6b32ba", size = 9879477 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/13/33/8380efd0ebdfdfac7fc0bf065f03a049800ca1e6c296ec1afc634340d992/mypy-1.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9f6f4c0b27401d14c483c622bc5105eff3911634d576bbdf6695b9a7c1ba741", size = 11251509 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/15/6d/4e1c21c60fee11af7d8e4f2902a29886d1387d6a836be16229eb3982a963/mypy-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b2280cedcb312c7a79f5001ae5325582d0d339bce684e4a529069d0e7ca1e7", size = 10244282 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/8b/cf/7a8ae5c0161edae15d25c2c67c68ce8b150cbdc45aefc13a8be271ee80b2/mypy-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:342de51c48bab326bfc77ce056ba08c076d82ce4f5a86621f972ed39970f94d8", size = 12867676 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/9c/d0/71f7bbdcc7cfd0f2892db5b13b1e8857673f2cc9e0c30e3e4340523dc186/mypy-1.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:00df23b42e533e02a6f0055e54de9a6ed491cd8b7ea738647364fd3a39ea7efc", size = 12964189 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a7/40/fb4ad65d6d5f8c51396ecf6305ec0269b66013a5bf02d0e9528053640b4a/mypy-1.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:e8c8387e5d9dff80e7daf961df357c80e694e942d9755f3ad77d69b0957b8e3f", size = 9888247 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/39/32/0214608af400cdf8f5102144bb8af10d880675c65ed0b58f7e0e77175d50/mypy-1.14.0-py3-none-any.whl", hash = "sha256:2238d7f93fc4027ed1efc944507683df3ba406445a2b6c96e79666a045aadfab", size = 2752803 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "mypy-extensions" | ||||
| version = "1.0.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "nixprstatus" | ||||
| version = "0.1.16" | ||||
| source = { editable = "." } | ||||
| dependencies = [ | ||||
|     { name = "pydantic" }, | ||||
|     { name = "requests" }, | ||||
|     { name = "typer" }, | ||||
| ] | ||||
|  | ||||
| [package.dev-dependencies] | ||||
| dev = [ | ||||
|     { name = "mypy" }, | ||||
|     { name = "ruff" }, | ||||
|     { name = "types-requests" }, | ||||
| ] | ||||
| lint = [ | ||||
|     { name = "ruff" }, | ||||
| ] | ||||
| typing = [ | ||||
|     { name = "mypy" }, | ||||
|     { name = "types-requests" }, | ||||
| ] | ||||
|  | ||||
| [package.metadata] | ||||
| requires-dist = [ | ||||
|     { name = "pydantic", specifier = ">=2.10.2" }, | ||||
|     { name = "requests", specifier = ">=2.32.3" }, | ||||
|     { name = "typer", specifier = ">=0.13.1" }, | ||||
| ] | ||||
|  | ||||
| [package.metadata.requires-dev] | ||||
| dev = [ | ||||
|     { name = "mypy", specifier = ">=1.13.0" }, | ||||
|     { name = "ruff", specifier = ">=0.8.0" }, | ||||
|     { name = "types-requests", specifier = ">=2.32.0.20241016" }, | ||||
| ] | ||||
| lint = [{ name = "ruff", specifier = ">=0.8.0" }] | ||||
| typing = [ | ||||
|     { name = "mypy", specifier = ">=1.13.0" }, | ||||
|     { name = "types-requests", specifier = ">=2.32.0.20241016" }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "pydantic" | ||||
| version = "2.10.4" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "annotated-types" }, | ||||
|     { name = "pydantic-core" }, | ||||
|     { name = "typing-extensions" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "pydantic-core" | ||||
| version = "2.27.2" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "typing-extensions" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "pygments" | ||||
| version = "2.18.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "requests" | ||||
| version = "2.32.3" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "certifi" }, | ||||
|     { name = "charset-normalizer" }, | ||||
|     { name = "idna" }, | ||||
|     { name = "urllib3" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "rich" | ||||
| version = "13.9.4" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "markdown-it-py" }, | ||||
|     { name = "pygments" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "ruff" | ||||
| version = "0.8.4" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/34/37/9c02181ef38d55b77d97c68b78e705fd14c0de0e5d085202bb2b52ce5be9/ruff-0.8.4.tar.gz", hash = "sha256:0d5f89f254836799af1615798caa5f80b7f935d7a670fad66c5007928e57ace8", size = 3402103 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/05/67/f480bf2f2723b2e49af38ed2be75ccdb2798fca7d56279b585c8f553aaab/ruff-0.8.4-py3-none-linux_armv6l.whl", hash = "sha256:58072f0c06080276804c6a4e21a9045a706584a958e644353603d36ca1eb8a60", size = 10546415 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/eb/7a/5aba20312c73f1ce61814e520d1920edf68ca3b9c507bd84d8546a8ecaa8/ruff-0.8.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ffb60904651c00a1e0b8df594591770018a0f04587f7deeb3838344fe3adabac", size = 10346113 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/76/f4/c41de22b3728486f0aa95383a44c42657b2db4062f3234ca36fc8cf52d8b/ruff-0.8.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6ddf5d654ac0d44389f6bf05cee4caeefc3132a64b58ea46738111d687352296", size = 9943564 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/0e/f0/afa0d2191af495ac82d4cbbfd7a94e3df6f62a04ca412033e073b871fc6d/ruff-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e248b1f0fa2749edd3350a2a342b67b43a2627434c059a063418e3d375cfe643", size = 10805522 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/12/57/5d1e9a0fd0c228e663894e8e3a8e7063e5ee90f8e8e60cf2085f362bfa1a/ruff-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf197b98ed86e417412ee3b6c893f44c8864f816451441483253d5ff22c0e81e", size = 10306763 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/04/df/f069fdb02e408be8aac6853583572a2873f87f866fe8515de65873caf6b8/ruff-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c41319b85faa3aadd4d30cb1cffdd9ac6b89704ff79f7664b853785b48eccdf3", size = 11359574 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/d3/04/37c27494cd02e4a8315680debfc6dfabcb97e597c07cce0044db1f9dfbe2/ruff-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9f8402b7c4f96463f135e936d9ab77b65711fcd5d72e5d67597b543bbb43cf3f", size = 12094851 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/81/b1/c5d7fb68506cab9832d208d03ea4668da9a9887a4a392f4f328b1bf734ad/ruff-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e56b3baa9c23d324ead112a4fdf20db9a3f8f29eeabff1355114dd96014604", size = 11655539 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/ef/38/8f8f2c8898dc8a7a49bc340cf6f00226917f0f5cb489e37075bcb2ce3671/ruff-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:736272574e97157f7edbbb43b1d046125fce9e7d8d583d5d65d0c9bf2c15addf", size = 12912805 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/06/dd/fa6660c279f4eb320788876d0cff4ea18d9af7d9ed7216d7bd66877468d0/ruff-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fe710ab6061592521f902fca7ebcb9fabd27bc7c57c764298b1c1f15fff720", size = 11205976 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a8/d7/de94cc89833b5de455750686c17c9e10f4e1ab7ccdc5521b8fe911d1477e/ruff-0.8.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:13e9ec6d6b55f6da412d59953d65d66e760d583dd3c1c72bf1f26435b5bfdbae", size = 10792039 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/6d/15/3e4906559248bdbb74854af684314608297a05b996062c9d72e0ef7c7097/ruff-0.8.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:97d9aefef725348ad77d6db98b726cfdb075a40b936c7984088804dfd38268a7", size = 10400088 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/a2/21/9ed4c0e8133cb4a87a18d470f534ad1a8a66d7bec493bcb8bda2d1a5d5be/ruff-0.8.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ab78e33325a6f5374e04c2ab924a3367d69a0da36f8c9cb6b894a62017506111", size = 10900814 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/0d/5d/122a65a18955bd9da2616b69bc839351f8baf23b2805b543aa2f0aed72b5/ruff-0.8.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8ef06f66f4a05c3ddbc9121a8b0cecccd92c5bf3dd43b5472ffe40b8ca10f0f8", size = 11268828 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/43/a9/1676ee9106995381e3d34bccac5bb28df70194167337ed4854c20f27c7ba/ruff-0.8.4-py3-none-win32.whl", hash = "sha256:552fb6d861320958ca5e15f28b20a3d071aa83b93caee33a87b471f99a6c0835", size = 8805621 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/10/98/ed6b56a30ee76771c193ff7ceeaf1d2acc98d33a1a27b8479cbdb5c17a23/ruff-0.8.4-py3-none-win_amd64.whl", hash = "sha256:f21a1143776f8656d7f364bd264a9d60f01b7f52243fbe90e7670c0dfe0cf65d", size = 9660086 }, | ||||
|     { url = "https://files.pythonhosted.org/packages/13/9f/026e18ca7d7766783d779dae5e9c656746c6ede36ef73c6d934aaf4a6dec/ruff-0.8.4-py3-none-win_arm64.whl", hash = "sha256:9183dd615d8df50defa8b1d9a074053891ba39025cf5ae88e8bcb52edcc4bf08", size = 9074500 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "shellingham" | ||||
| version = "1.5.4" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "typer" | ||||
| version = "0.15.1" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "click" }, | ||||
|     { name = "rich" }, | ||||
|     { name = "shellingham" }, | ||||
|     { name = "typing-extensions" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/dca7b219718afd37a0068f4f2530a727c2b74a8b6e8e0c0080a4c0de4fcd/typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a", size = 99789 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/d0/cc/0a838ba5ca64dc832aa43f727bd586309846b0ffb2ce52422543e6075e8a/typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847", size = 44908 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "types-requests" | ||||
| version = "2.32.0.20241016" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| dependencies = [ | ||||
|     { name = "urllib3" }, | ||||
| ] | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/fa/3c/4f2a430c01a22abd49a583b6b944173e39e7d01b688190a5618bd59a2e22/types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", size = 18065 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/d7/01/485b3026ff90e5190b5e24f1711522e06c79f4a56c8f4b95848ac072e20f/types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747", size = 15836 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "typing-extensions" | ||||
| version = "4.12.2" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "urllib3" | ||||
| version = "2.3.0" | ||||
| source = { registry = "https://pypi.org/simple" } | ||||
| sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } | ||||
| wheels = [ | ||||
|     { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, | ||||
| ] | ||||
		Reference in New Issue
	
	Block a user