From abac92178083aee5463e37fc83139ca350e0ba97 Mon Sep 17 00:00:00 2001 From: codingWhale13 Date: Wed, 18 Jun 2025 10:22:14 +0200 Subject: [PATCH 1/2] Replace pkg_resources with importlib.resources This resolves "UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81." --- minihack/base.py | 9 +++------ minihack/envs/boxohack.py | 7 ++----- minihack/scripts/download_boxoban_levels.py | 4 ++-- minihack/scripts/get_nhwiki_data.sh | 2 +- minihack/tiles/glyph_mapper.py | 7 ++----- minihack/wiki.py | 4 ++-- 6 files changed, 12 insertions(+), 21 deletions(-) diff --git a/minihack/base.py b/minihack/base.py index 2bbd433d..fb777215 100644 --- a/minihack/base.py +++ b/minihack/base.py @@ -5,7 +5,7 @@ import random import gymnasium as gym import numpy as np -import pkg_resources +from importlib.resources import files from typing import Tuple from nle import _pynethack, nethack @@ -17,10 +17,7 @@ PATH_DAT_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "dat") LIB_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "lib") -PATCH_SCRIPT = os.path.join( - pkg_resources.resource_filename("minihack", "scripts"), - "mh_patch_nhdat.sh", -) +PATCH_SCRIPT = files("minihack.scripts").joinpath("mh_patch_nhdat.sh") MH_FULL_ACTIONS = list(FULL_ACTIONS) try: MH_FULL_ACTIONS.remove(nethack.MiscDirection.UP) @@ -38,7 +35,7 @@ ) except AttributeError: NLE_EXTRA_V081_ACTIONS = () -HACKDIR = pkg_resources.resource_filename("nle", "nethackdir") +HACKDIR = files("nle").joinpath("nethackdir") RGB_MAX_VAL = 255 N_TILE_PIXEL = 16 diff --git a/minihack/envs/boxohack.py b/minihack/envs/boxohack.py index 59aeb01e..2d1eac2f 100644 --- a/minihack/envs/boxohack.py +++ b/minihack/envs/boxohack.py @@ -3,15 +3,12 @@ import random import numpy as np -import pkg_resources +from importlib.resources import files from nle import nethack from minihack.envs import register from minihack import LevelGenerator, MiniHackNavigation -LEVELS_PATH = os.path.join( - pkg_resources.resource_filename("minihack", "dat"), - "boxoban-levels-master", -) +LEVELS_PATH = files("minihack.dat").joinpath("boxoban-levels-master") # The agent can only move towards 4 cardinal directions (instead of default 8) MOVE_ACTIONS = tuple(nethack.CompassCardinalDirection) diff --git a/minihack/scripts/download_boxoban_levels.py b/minihack/scripts/download_boxoban_levels.py index 7bfaa6a3..7fadb72a 100644 --- a/minihack/scripts/download_boxoban_levels.py +++ b/minihack/scripts/download_boxoban_levels.py @@ -2,9 +2,9 @@ import os import zipfile -import pkg_resources +from importlib.resources import files -DESTINATION_PATH = pkg_resources.resource_filename("minihack", "dat") +DESTINATION_PATH = files("minihack.dat") BOXOBAN_REPO_URL = ( "https://github.com/deepmind/boxoban-levels/archive/refs/heads/master.zip" ) diff --git a/minihack/scripts/get_nhwiki_data.sh b/minihack/scripts/get_nhwiki_data.sh index b1b7a507..19a44e25 100755 --- a/minihack/scripts/get_nhwiki_data.sh +++ b/minihack/scripts/get_nhwiki_data.sh @@ -1,6 +1,6 @@ # Copyright (c) Facebook, Inc. and its affiliates. -DATA_DIR=$(python -c 'import pkg_resources; print(pkg_resources.resource_filename("nle", "minihack/dat"), end="")') +DATA_DIR=$(python -c 'from importlib.resources import files; print(files("nle").joinpath("minihack").joinpath("dat"), end="")') wget https://www.dropbox.com/s/6qbfmsr3l89sip0/nethackwikidata.json diff --git a/minihack/tiles/glyph_mapper.py b/minihack/tiles/glyph_mapper.py index 785de7a6..abaa6c28 100644 --- a/minihack/tiles/glyph_mapper.py +++ b/minihack/tiles/glyph_mapper.py @@ -3,7 +3,7 @@ from minihack.tiles import glyph2tile, MAXOTHTILE from nle.nethack import MAX_GLYPH import numpy as np -import pkg_resources +from importlib.resources import files import pickle import os @@ -19,10 +19,7 @@ def load_tiles(self): If it doesn't, call make_tiles.py in win/ """ - tile_rgb_path = os.path.join( - pkg_resources.resource_filename("minihack", "tiles"), - "tiles.pkl", - ) + tile_rgb_path = files("minihack.tiles").joinpath("tiles.pkl") return pickle.load(open(tile_rgb_path, "rb")) diff --git a/minihack/wiki.py b/minihack/wiki.py index e4681ba5..e55d7f25 100644 --- a/minihack/wiki.py +++ b/minihack/wiki.py @@ -8,7 +8,7 @@ from typing import List from urllib.parse import unquote -import pkg_resources +from importlib.resources import files try: import inflect @@ -20,7 +20,7 @@ PREPROCESSING_ALLOWED = False import_error = error -DATA_DIR_PATH = pkg_resources.resource_filename("nle", "minihack/dat") +DATA_DIR_PATH = files("nle").joinpath("minihack").joinpath("dat") EXCEPTIONS = ( "floor of a room", From 2d4945a1cd999206d795346e8befd8b2874c479a Mon Sep 17 00:00:00 2001 From: codingWhale13 Date: Wed, 18 Jun 2025 13:54:47 +0200 Subject: [PATCH 2/2] Replace importlib.resources with importlib_resources Reason: importlib.resources.files is only available in Python>=3.9 --- minihack/base.py | 2 +- minihack/envs/boxohack.py | 2 +- minihack/scripts/download_boxoban_levels.py | 2 +- minihack/scripts/get_nhwiki_data.sh | 2 +- minihack/tiles/glyph_mapper.py | 2 +- minihack/wiki.py | 2 +- setup.py | 7 ++++++- 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/minihack/base.py b/minihack/base.py index fb777215..7109b8f5 100644 --- a/minihack/base.py +++ b/minihack/base.py @@ -5,7 +5,7 @@ import random import gymnasium as gym import numpy as np -from importlib.resources import files +from importlib_resources import files from typing import Tuple from nle import _pynethack, nethack diff --git a/minihack/envs/boxohack.py b/minihack/envs/boxohack.py index 2d1eac2f..4a3535a9 100644 --- a/minihack/envs/boxohack.py +++ b/minihack/envs/boxohack.py @@ -3,7 +3,7 @@ import random import numpy as np -from importlib.resources import files +from importlib_resources import files from nle import nethack from minihack.envs import register from minihack import LevelGenerator, MiniHackNavigation diff --git a/minihack/scripts/download_boxoban_levels.py b/minihack/scripts/download_boxoban_levels.py index 7fadb72a..b18d56bd 100644 --- a/minihack/scripts/download_boxoban_levels.py +++ b/minihack/scripts/download_boxoban_levels.py @@ -2,7 +2,7 @@ import os import zipfile -from importlib.resources import files +from importlib_resources import files DESTINATION_PATH = files("minihack.dat") BOXOBAN_REPO_URL = ( diff --git a/minihack/scripts/get_nhwiki_data.sh b/minihack/scripts/get_nhwiki_data.sh index 19a44e25..263146e5 100755 --- a/minihack/scripts/get_nhwiki_data.sh +++ b/minihack/scripts/get_nhwiki_data.sh @@ -1,6 +1,6 @@ # Copyright (c) Facebook, Inc. and its affiliates. -DATA_DIR=$(python -c 'from importlib.resources import files; print(files("nle").joinpath("minihack").joinpath("dat"), end="")') +DATA_DIR=$(python -c 'from importlib_resources import files; print(files("nle").joinpath("minihack").joinpath("dat"), end="")') wget https://www.dropbox.com/s/6qbfmsr3l89sip0/nethackwikidata.json diff --git a/minihack/tiles/glyph_mapper.py b/minihack/tiles/glyph_mapper.py index abaa6c28..b0f14e27 100644 --- a/minihack/tiles/glyph_mapper.py +++ b/minihack/tiles/glyph_mapper.py @@ -3,7 +3,7 @@ from minihack.tiles import glyph2tile, MAXOTHTILE from nle.nethack import MAX_GLYPH import numpy as np -from importlib.resources import files +from importlib_resources import files import pickle import os diff --git a/minihack/wiki.py b/minihack/wiki.py index e55d7f25..d799b110 100644 --- a/minihack/wiki.py +++ b/minihack/wiki.py @@ -8,7 +8,7 @@ from typing import List from urllib.parse import unquote -from importlib.resources import files +from importlib_resources import files try: import inflect diff --git a/setup.py b/setup.py index 69198deb..92bcaffa 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,12 @@ ] } -install_requires = ["numpy>=1.16", "gymnasium", "setuptools"] +install_requires = [ + "numpy>=1.16", + "gymnasium", + "setuptools", + "importlib-resources", +] if not os.getenv("READTHEDOCS"): install_requires.append("nle")