Repository: ResearchObject/ro-crate-py (language: python)

Issue:
avoid deprecated pkg_resources
I think it is unrlated: but test are not running locally due to:
```
ImportError while loading conftest '/Users/matho180/ro-crate-py/test/conftest.py'.
test/conftest.py:24: in <module>
    from rocrate.utils import get_norm_value
rocrate/__init__.py:54: in <module>
    import arcp  # noqa
E   ModuleNotFoundError: No module named 'arcp'
```
(I can import the module if I start python manually)


Discussion / hints:
It is related, since without this PR tests run fine locally. I get a different error:

```
ImportError while loading conftest '/home/simleo/git/ro-crate-py/test/conftest.py'.
test/conftest.py:24: in <module>
    from rocrate.utils import get_norm_value
rocrate/__init__.py:57: in <module>
    from .model.metadata import Metadata  # noqa
rocrate/model/__init__.py:28: in <module>
    from .computationalworkflow import ComputationalWorkflow, WorkflowDescription, Workflow
rocrate/model/computationalworkflow.py:27: in <module>
    from .file import File
rocrate/model/file.py:28: in <module>
    from .file_or_dir import FileOrDir
rocrate/model/file_or_dir.py:24: in <module>
    from .data_entity import DataEntity
rocrate/model/data_entity.py:22: in <module>
    from .entity import Entity
rocrate/model/entity.py:25: in <module>
    from .. import vocabs
rocrate/vocabs.py:25: in <module>
    RO_CRATE = json.loads(importlib.resources.read_text(__name__, "data/ro-crate.jsonld"))
E   TypeError: 'rocrate.vocabs' is not a package
```

It's not just local tests that are broken, the `rocrate` executable is affected as well.
It turns out that automated tests also fail. However, the error is different:

```
ImportError while loading conftest '/home/runner/work/ro-crate-py/ro-crate-py/test/conftest.py'.
test/conftest.py:24: in <module>
    from rocrate.utils import get_norm_value
rocrate/__init__.py:57: in <module>
    from .model.metadata import Metadata  # noqa
rocrate/model/__init__.py:2[8](https://github.com/ResearchObject/ro-crate-py/actions/runs/8158453547/job/22300413292?pr=173#step:6:9): in <module>
    from .computationalworkflow import ComputationalWorkflow, WorkflowDescription, Workflow
rocrate/model/computationalworkflow.py:27: in <module>
    from .file import File
rocrate/model/file.py:28: in <module>
    from .file_or_dir import FileOrDir
rocrate/model/file_or_dir.py:24: in <module>
    from .data_entity import DataEntity
rocrate/model/data_entity.py:22: in <module>
    from .entity import Entity
rocrate/model/entity.py:25: in <module>
    from .. import vocabs
rocrate/vocabs.py:25: in <module>
    RO_CRATE = json.loads(importlib.resources.read_text(__name__, "data/ro-crate.jsonld"))
E   ValueError: 'data/ro-crate.jsonld' must be only a file name
```
Agh, `importlib.resources.files` was only introduced in Python 3.9, but the older option of `importlib.resources.read_text()` doesn't support the `.jsonld` files being inside a directory. Possible solutions: we could move those files out of `data/`, or split the strategy for different Python versions, or just avoid making this change until Python 3.8 goes out of support later this year...
I went for the split strategy but got unrelated errors in the CI

Fix patch:
diff --git a/README.md b/README.md
index 76aa7e2..4e1a2b8 100644
--- a/README.md
+++ b/README.md
@@ -405,15 +405,15 @@ Options:
  * Copyright 2020-2024 Center for Advanced Studies, Research and Development in Sardinia (CRS4), IT
  * Copyright 2022-2024 École Polytechnique Fédérale de Lausanne, CH
 
-Licensed under the 
-Apache License, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>, 
+Licensed under the
+Apache License, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>,
 see the file `LICENSE.txt` for details.
 
 ## Cite as
 
 [![DOI](https://zenodo.org/badge/216605684.svg)](https://zenodo.org/badge/latestdoi/216605684)
 
-The above DOI corresponds to the latest versioned release as [published to Zenodo](https://zenodo.org/record/3956493), where you will find all earlier releases. 
+The above DOI corresponds to the latest versioned release as [published to Zenodo](https://zenodo.org/record/3956493), where you will find all earlier releases.
 To cite `ro-crate-py` independent of version, use <https://doi.org/10.5281/zenodo.3956493>, which will always redirect to the latest release.
 
 You may also be interested in the paper [Packaging research artefacts with RO-Crate](https://doi.org/10.3233/DS-210053).


Test patch:
diff --git a/test/test_write.py b/test/test_write.py
index b2be9ab..aa66ac3 100644
--- a/test/test_write.py
+++ b/test/test_write.py
@@ -20,6 +20,7 @@
 import pytest
 import os
 import uuid
+import sys
 import zipfile
 from itertools import product
 from urllib.error import URLError
@@ -214,6 +215,7 @@ def test_looks_like_file_uri(tmpdir, monkeypatch):
     assert (out_path / f_name).is_file()
 
 
+@pytest.mark.skipif(sys.platform == "darwin", reason="FTP opening broken on macOS CI instances")
 @pytest.mark.slow
 @pytest.mark.parametrize("fetch_remote", [False, True])
 def test_ftp_uri(tmpdir, fetch_remote):