Skip to content

Commit

Permalink
Clean-up bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
WilliamJamieson committed Oct 7, 2022
1 parent ae10dd0 commit 537dfd2
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 43 deletions.
2 changes: 1 addition & 1 deletion asdf/entry_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def get_extensions():
def _list_entry_points(group, proxy_class):
results = []

points = entry_points().select(group=group)
points = entry_points(group=group)

# The order of plugins may be significant, since in the case of
# duplicate functionality the first plugin in the list takes
Expand Down
14 changes: 14 additions & 0 deletions asdf/tests/test_asdf.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
import warnings

import pytest

from asdf import config_context, get_config
from asdf.asdf import AsdfFile, SerializationContext, open_asdf
from asdf.entry_points import get_extensions
from asdf.exceptions import AsdfWarning
from asdf.extension import AsdfExtensionList, ExtensionManager, ExtensionProxy
from asdf.tests.helpers import assert_no_warnings, yaml_to_asdf
from asdf.versioning import AsdfVersion


def test_no_warnings_get_extensions():
"""
Smoke test for changes to the `importlib.metadata` entry points API.
"""

with warnings.catch_warnings():
warnings.simplefilter("error")

get_extensions()


class TestExtension:
__test__ = False

Expand Down
34 changes: 6 additions & 28 deletions asdf/tests/test_entry_points.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import sys
import unittest.mock as mk
import warnings

import pytest

Expand All @@ -23,22 +21,13 @@ def mock_entry_points():

@pytest.fixture(autouse=True)
def monkeypatch_entry_points(monkeypatch, mock_entry_points):
def _entry_points():
points = mk.MagicMock()
def _entry_points(*, group):
for candidate_group, name, func_name in mock_entry_points:
if candidate_group == group:
point = metadata.EntryPoint(name=name, group="asdf.tests.test_entry_points", value=func_name)
vars(point).update(dist=metadata.distribution("asdf"))

def _select(group):
points = []
for candidate_group, name, func_name in mock_entry_points:
if candidate_group == group:
point = metadata.EntryPoint(name=name, group="asdf.tests.test_entry_points", value=func_name)
vars(point).update(dist=metadata.distribution("asdf"))
points.append(point)

return points

points.select = _select

return points
yield point

monkeypatch.setattr(entry_points, "entry_points", _entry_points)

Expand Down Expand Up @@ -180,14 +169,3 @@ def test_get_extensions(mock_entry_points):
with pytest.warns(AsdfWarning, match="TypeError"):
extensions = entry_points.get_extensions()
assert len(extensions) == 0


def test_no_warnings_get_extensions():
"""
Smoke test for changes to the `importlib.metadata` entry points API.
"""

with warnings.catch_warnings():
warnings.simplefilter("error")

entry_points.get_extensions()
17 changes: 17 additions & 0 deletions asdf/tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,20 @@ def read(self, size=-1):
fd = generic_io.get_file(OnlyHasAReadMethod(content))
assert util.get_file_type(fd) == expected_type
assert fd.read() == content


def test_minversion():
import numpy
import yaml

good_versions = ["1.16", "1.16.1", "1.16.0.dev", "1.16dev"]
bad_versions = ["100000", "100000.2rc1"]
for version in good_versions:
assert util.minversion(numpy, version)
assert util.minversion("numpy", version)
for version in bad_versions:
assert not util.minversion(numpy, version)
assert not util.minversion("numpy", version)

assert util.minversion(yaml, "3.1")
assert util.minversion("yaml", "3.1")
17 changes: 3 additions & 14 deletions asdf/util.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import collections
import enum
import importlib.util
import inspect
Expand All @@ -16,20 +15,10 @@

from . import constants

if sys.version_info[:2] >= (3, 10):
from importlib.metadata import packages_distributions
if sys.version_info < (3, 10):
from importlib_metadata import packages_distributions
else:

def packages_distributions():
"""
Return a mapping of top-level packages to their distributions.
Note: copied from https://github.com/python/importlib_metadata/pull/287
"""
pkg_to_dist = collections.defaultdict(list)
for dist in metadata.distributions():
for pkg in (dist.read_text("top_level.txt") or "").split():
pkg_to_dist[pkg].append(dist.metadata["Name"])
return dict(pkg_to_dist)
from importlib.metadata import packages_distributions


# We're importing our own copy of urllib.parse because
Expand Down

0 comments on commit 537dfd2

Please sign in to comment.