Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ IMAS-Python public API
ids_convert.convert_ids
ids_data_type.IDSDataType
ids_factory.IDSFactory
ids_factory.get_all_ids_names
ids_identifiers.identifiers
ids_metadata.IDSMetadata
ids_metadata.IDSType
Expand Down
3 changes: 2 additions & 1 deletion imas/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from .db_entry import DBEntry
from .ids_convert import convert_ids
from .ids_data_type import IDSDataType
from .ids_factory import IDSFactory
from .ids_factory import IDSFactory, get_all_ids_names
from .ids_identifiers import identifiers
from .ids_metadata import IDSMetadata, IDSType
from .ids_primitive import IDSPrimitive
Expand All @@ -42,6 +42,7 @@
"DBEntry",
"IDSDataType",
"IDSFactory",
"get_all_ids_names",
"IDSMetadata",
"IDSPrimitive",
"IDSStructure",
Expand Down
10 changes: 10 additions & 0 deletions imas/ids_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@
logger = logging.getLogger(__name__)


def get_all_ids_names() -> list[str]:
"""Get all IDS names available across all dd versions"""
ids_names: set[str] = set()

for dd_version in dd_zip.dd_xml_versions():
ids_names.update(IDSFactory(dd_version).ids_names())

return sorted(ids_names)


class IDSFactory:
"""Factory class generating IDSToplevel elements for specific DD versions.

Expand Down
11 changes: 9 additions & 2 deletions imas/test/test_ids_factory.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest

from imas.dd_zip import latest_dd_version
from imas.ids_factory import IDSFactory
from imas.dd_zip import dd_xml_versions, latest_dd_version
from imas.ids_factory import IDSFactory, get_all_ids_names


def test_ids_factory_with_version():
Expand Down Expand Up @@ -33,3 +33,10 @@ def test_ids_factory_from_env(monkeypatch: pytest.MonkeyPatch):
monkeypatch.setenv("IMAS_VERSION", version)
factory = IDSFactory()
assert factory._version == version


def test_get_all_ids_names():
ids_names = get_all_ids_names()

for dd_version in dd_xml_versions():
assert set(IDSFactory(dd_version).ids_names()) <= set(ids_names)
Loading