File: utils.py

package info (click to toggle)
pynwb 2.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 44,312 kB
  • sloc: python: 17,501; makefile: 597; sh: 11
file content (31 lines) | stat: -rw-r--r-- 1,121 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""Utilities for creating a custom TypeMap for testing so that we don't use the global type map."""
import tempfile
from pynwb import get_type_map
from pynwb.spec import NWBNamespaceBuilder, export_spec


NAMESPACE_NAME = "test_core"


def create_test_extension(specs, container_classes, mappers=None):
    ns_builder = NWBNamespaceBuilder(
        name=NAMESPACE_NAME,
        version="0.1.0",
        doc="test extension",
    )
    ns_builder.include_namespace("core")

    output_dir = tempfile.TemporaryDirectory()
    export_spec(ns_builder, specs, output_dir.name)

    # this will copy the global pynwb TypeMap and add the extension types to the copy
    type_map = get_type_map(f"{output_dir.name}/{NAMESPACE_NAME}.namespace.yaml")
    for type_name, container_cls in container_classes.items():
        type_map.register_container_type(NAMESPACE_NAME, type_name, container_cls)
    if mappers:
        for type_name, mapper_cls in mappers.items():
            container_cls = container_classes[type_name]
            type_map.register_map(container_cls, mapper_cls)

    output_dir.cleanup()
    return type_map