Skip to main content

ITk Serial Number parser

Project description

itksn v0.4.2

Helper utility for parsing ITk Serial Numbers


itksn logo
CI/CD CI - Test CI - Coverage
Docs Docs Zenodo
Package PyPI - Downloads PyPI - Version PyPI platforms Conda-Forge
Meta GitHub - Discussion GitHub - Issue License - BSD 3.0

Using

From the command line, you can parse serial numbers. If there is an error in parsing, it will loudly complain (sometimes).

$ itksn parse 20UPGMC2291234
Container:
    atlas_project = (enum) atlas_detector b'20'
    system_code = (enum) phaseII_upgrade b'U'
    project_code = (enum) pixel_general b'PG'
    subproject_code = (enum) Module_carrier b'MC'
    identifier = Container:
        module_type = (enum) Linear_triplet_module_carrier b'2'
        module_version = (enum) Quad_v2p1 b'2'
        manufacturer = b'9' (total 1)
        number = b'1234' (total 4)

$ itksn parse 20UPGR90012345
Container:
    atlas_project = (enum) atlas_detector b'20'
    system_code = (enum) phaseII_upgrade b'U'
    project_code = (enum) pixel_general b'PG'
    subproject_code = (enum) Digital_quad_module b'R9'
    identifier = Container:
        FE_chip_version = (enum) RD53A b'0'
        reserved = b'0' (total 1)
        number = b'12345' (total 5)

$ itksn parse 20UPGPD0012345
Container:
    atlas_project = (enum) atlas_detector b'20'
    system_code = (enum) phaseII_upgrade b'U'
    project_code = (enum) pixel_general b'PG'
    subproject_code = (enum) Dual_PCB b'PD'
    identifier = Container:
        FE_chip_version = (enum) RD53A b'0'
        reserved = b'0' (total 1)
        number = b'12345' (total 5)

$ itksn parse 20UPGFW2123456
Container:
    atlas_project = (enum) atlas_detector b'20'
    system_code = (enum) phaseII_upgrade b'U'
    project_code = (enum) pixel_general b'PG'
    subproject_code = (enum) FE_chip_wafer b'FW'
    identifier = Container:
        batch_number = (enum) CROC b'2'
        number = b'123456' (total 6)

If you want to, for example, build the serial number for a front-end chip hex, you can do:

import itksn

number = str(0x20098).zfill(7).encode()
obj = {
    "atlas_project": "atlas_detector",
    "system_code": "phaseII_upgrade",
    "project_code": "pixel_general",
    "subproject_code": "FE_chip",
    "identifier": {"number": number},
}

itksn.core.SerialNumberStruct.build(obj)  # b'20UPGFC0131224'

or even from python, one can parse

import itksn

results = itksn.parse(b"20UPGR90012345")
assert results.atlas_project == "atlas_detector"
assert results.project_code == "pixel"
assert results.identifier.PCB_manufacturer == "Dummy"

or build

from itksn.core import SerialNumberStruct

sn = SerialNumberStruct.build(
    {
        "atlas_project": "atlas_detector",
        "system_code": "phaseII_upgrade",
        "project_code": "pixel",
        "subproject_code": "pixel_general",
        "component_code": "Digital_quad_module",
        "identifier": {
            "FE_chip_version": "RD53A",
            "PCB_manufacturer": "Dummy",
            "number": b"12345",
        },
    }
)
assert sn == b"20UPGR90012345"

Installation

In a fresh virtual environment, you can install from PyPI:

$ python -m pip install itksn

or from the main branch of the GitHub repository:

$ python -m pip install "git+https://github.com/kratsg/itksn.git"

The above is actually cloning and installing directly from the Git repository.

However, if you want to, you can of course also install it directly from the Git repository "locally" by first cloning the repo and then from the top level of it running

$ python -m pip install .

Contributing

As this library is experimental contributions of all forms are welcome.

If you have ideas on how to improve the API or fix a bug please open an Issue.

You are of course also most welcome and encouraged to open PRs.

Developing

To develop, use a virtual environment.

Once the environment is activated, clone the repo from GitHub

git clone git@github.com:kratsg/itksn.git

and you can use hatch for running tests/development, e.g.

hatch run +py=3.7 dev:test

(Optional) Then setup the Git pre-commit hooks by running

pre-commit install

Acknowledgements

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itksn-0.4.2.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itksn-0.4.2-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file itksn-0.4.2.tar.gz.

File metadata

  • Download URL: itksn-0.4.2.tar.gz
  • Upload date:
  • Size: 36.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for itksn-0.4.2.tar.gz
Algorithm Hash digest
SHA256 4ebee14dfb84f07914ae36304a8e1182659dfc3a20f7c8b25fc85b16ddd1f073
MD5 a9352cc75ea847975fa9f5cc26567c8d
BLAKE2b-256 7a1bbf1aa7777100e40857ee8633217977a6fae9a67433b6cb05058dab802d13

See more details on using hashes here.

File details

Details for the file itksn-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: itksn-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for itksn-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d799156b0159adf8bda71fa3fae49a06bc33cf7c9e10da40008ec9542f5af2d1
MD5 8714364b99d8fd8c103610168d03f965
BLAKE2b-256 958b57f8261c793e44055b49760927c132799f0f71d47d81e6f692d6761b873b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page