# Aider chat conversation:
USER: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
ASSISTANT: To address the `DeprecationWarning` regarding `pkg_resources`, we will replace its usage with the recommended `importlib.resources` or `importlib.metadata` from the Python standard library. The specific replacement depends on the original use case of `pkg_resources`. In the provided code, `pkg_resources` is used to access package data, so we will use `importlib.resources`.
Here are the diffs for the necessary changes:
```diff
--- aider/repomap.py
+++ aider/repomap.py
@@ ... @@
import networkx as nx
-import pkg_resources
+import importlib.resources as pkg_resources
from diskcache import Cache
from grep_ast import TreeContext, filename_to_lang
from pygments.lexers import guess_lexer_for_filename
from pygments.token import Token
from pygments.util import ClassNotFound
@@ ... @@
# Load the tags queries
try:
- scm_fname = pkg_resources.resource_filename(
- __name__, os.path.join("queries", f"tree-sitter-{lang}-tags.scm")
- )
+ scm_fname = pkg_resources.files(__package__).joinpath(
+ "queries", f"tree-sitter-{lang}-tags.scm"
+ )
except KeyError:
return
- query_scm = Path(scm_fname)
+ query_scm = scm_fname
if not query_scm.exists():
return
query_scm = query_scm.read_text()
```
These changes replace the deprecated `pkg_resources.resource_filename` with `importlib.resources.files`, which is the recommended way to access package resources in Python 3.9 and later. The `files()` function returns a `Path`-like object that can be used to read the contents of the resource.
# Aider chat conversation:
ASSISTANT: The `queries` directory might not be included in the package because it's not specified correctly in the `setup.py` file.
In the `setup.py` file, you have specified `package_data={'': ['queries/*']}`. This means that setuptools will include all files in the `queries` directory that are inside any package. However, if the `queries` directory is not inside a Python package (i.e., a directory containing an `__init__.py` file), it will not be included.
To fix this, you need to move the `queries` directory inside the `aider` package and adjust the `package_data` argument in the `setup.py` file. Here's how you can do it:
```python
setup.py
<<<<<<< HEAD
package_data={
'': ['queries/*'],
},
=======
package_data={
'aider': ['queries/*'],
},
>>>>>>> updated
```
This code changes the `package_data` argument to include all files in the `queries` directory that is inside the `aider` package.
After making this change, you need to move the `queries` directory inside the `aider` package. If the `queries` directory is currently in the same directory as the `setup.py` file, you can do this by running `mv queries aider/` in the terminal.
Finally, you need to adjust the `scm_fname` assignment in the `repomap.py` file to reflect the new location of the `queries` directory:
```python
aider/repomap.py
<<<<<<< HEAD
scm_fname = pkg_resources.resource_filename(
__name__, os.path.join("..", "queries", f"tree-sitter-{lang}-tags.scm")
)
=======
scm_fname = pkg_resources.resource_filename(
__name__, os.path.join("queries", f"tree-sitter-{lang}-tags.scm")
)
>>>>>>> updated
```
This code changes the path in the `resource_filename` call to look for the `queries` directory inside the `aider` package.
# Aider chat conversation:
USER: File "/Users/gauthier/tmp/queries/.venv/lib/python3.11/site-packages/aider/repomap.py", line 180, in get_tags
scm_fname = pkg_resources.resource_filename(
^^^^^^^^^^^^^
NameError: name 'pkg_resources' is not defined
ASSISTANT: The error message indicates that the `pkg_resources` module is not imported in the `repomap.py` file. This module is part of setuptools and is used to access files included in the package.
To fix this, you need to import the `pkg_resources` module at the beginning of the `repomap.py` file. Here's how you can do it:
```python
aider/repomap.py
<<<<<<< HEAD
import colorsys
import os
import random
import sys
from collections import Counter, defaultdict, namedtuple
from pathlib import Path
=======
import colorsys
import os
import pkg_resources
import random
import sys
from collections import Counter, defaultdict, namedtuple
from pathlib import Path
>>>>>>> updated
```
This code adds the `import pkg_resources` line right after the `import os` line.