1{ 2 stdenv, 3 lib, 4 buildPythonPackage, 5 fetchFromGitHub, 6 appdirs, 7 dungeon-eos, 8 explorerscript, 9 ndspy, 10 pillow, 11 setuptools, 12 skytemple-rust, 13 pyyaml, 14 pmdsky-debug-py, 15 range-typed-integers, 16 pythonOlder, 17 # optional dependencies for SpriteCollab 18 aiohttp, 19 lru-dict, 20 graphql-core, 21 gql, 22 armips, 23 # tests 24 pytestCheckHook, 25 parameterized, 26 xmldiff, 27}: 28 29buildPythonPackage rec { 30 pname = "skytemple-files"; 31 version = "1.8.5"; 32 pyproject = true; 33 34 disabled = pythonOlder "3.9"; 35 36 src = fetchFromGitHub { 37 owner = "SkyTemple"; 38 repo = "skytemple-files"; 39 rev = version; 40 hash = "sha256-s7r6wS7H19+is3CFr+dLaTiq0N/gaO/8IFknmr+OAJk="; 41 # Most patches are in submodules 42 fetchSubmodules = true; 43 }; 44 45 postPatch = '' 46 substituteInPlace skytemple_files/patch/arm_patcher.py skytemple_files/data/data_cd/armips_importer.py \ 47 --replace-fail "exec_name = os.getenv(\"SKYTEMPLE_ARMIPS_EXEC\", f\"{prefix}armips\")" "exec_name = \"${armips}/bin/armips\"" 48 ''; 49 50 build-system = [ setuptools ]; 51 52 buildInputs = [ armips ]; 53 54 dependencies = [ 55 appdirs 56 dungeon-eos 57 explorerscript 58 ndspy 59 pillow 60 skytemple-rust 61 pyyaml 62 pmdsky-debug-py 63 range-typed-integers 64 ]; 65 66 optional-dependencies = { 67 spritecollab = [ 68 aiohttp 69 gql 70 graphql-core 71 lru-dict 72 ] 73 ++ gql.optional-dependencies.aiohttp; 74 }; 75 76 nativeCheckInputs = [ 77 pytestCheckHook 78 parameterized 79 xmldiff 80 ] 81 ++ optional-dependencies.spritecollab; 82 83 preCheck = "pushd test"; 84 postCheck = "popd"; 85 86 disabledTestPaths = [ 87 "skytemple_files_test/common/spritecollab/sc_online_test.py" 88 "skytemple_files_test/compression_container/atupx/atupx_test.py" # Particularly long test 89 ]; 90 91 pythonImportsCheck = [ "skytemple_files" ]; 92 93 meta = with lib; { 94 homepage = "https://github.com/SkyTemple/skytemple-files"; 95 description = "Python library to edit the ROM of Pokémon Mystery Dungeon Explorers of Sky"; 96 mainProgram = "skytemple_export_maps"; 97 license = licenses.gpl3Plus; 98 maintainers = with maintainers; [ marius851000 ]; 99 broken = stdenv.hostPlatform.isDarwin; # pyobjc is missing 100 }; 101}