Skip to main content

neml2-hit

A standalone C++17 parser for a NEML2-flavored dialect of HIT (Hierarchical Input Text) — the hierarchical input format used by MOOSE. This library provides a self-contained, opinionated implementation tailored for use in NEML2 and related projects. It differs from the upstream MOOSE HIT parser in syntax restrictions and API design choices; it is not a general-purpose drop-in replacement. The library depends on Flex & Bison.

The public C++ namespace is nmhit ("NEML2 HIT").


HIT Format

HIT is a simple, human-readable format for hierarchical configuration. A file is a flat sequence of items — sections, key-value fields, comments, blank lines, and file includes — which together form a tree.


Syntax Reference

Comments

A # character begins a comment that extends to the end of the line. Comments are preserved in the AST and are reproduced by render().

# This is a comment
key = value  # inline comments are not supported; this text is part of the value

Note: # is a reserved character in all value positions. It cannot appear inside an unquoted string value or an array element.

Blank lines

One or more consecutive blank lines are preserved as a single Blank node and are reproduced by render().

Sections

A section groups related fields and nested sub-sections.

[section_name]
  key = value
  nested_key = 42
[]

Every section must be closed with []. There is no [../] or [./name] syntax.

Path splitting. A slash in the section header creates the corresponding nesting in the AST:

[mesh/generator]
  type = CartesianMesh
[]

is equivalent to:

[mesh]
  [generator]
    type = CartesianMesh
  []
[]

Sections may appear at the top level or nested inside other sections. Fields and nested sections can appear in any order within a section body.

Fields

A field assigns a value to a name.

key = value

Identifier characters. A field name may contain letters, digits, and any of . / < > + - * ! _ ~. Slashes in a field name trigger path splitting (see below). The ~ is allowed primarily for NEML2's var~1 history-variable convention.

Path splitting. A slash in the field name creates intermediate Section nodes in the AST:

[solver]
  linear/max_iter = 100
[]

is equivalent to:

[solver]
  [linear]
    max_iter = 100
  []
[]

Override assignment. The operators := and :override= are both accepted. The library implements last-override-wins semantics directly: the earlier occurrence of the field is removed from the tree, leaving only the overriding value.

max_iter := 200
max_iter :override= 200   # identical meaning

Values

Every value is one of the following kinds.

Integer

An optional sign followed by one or more decimal digits.

n = 42
n = -7
n = +0

Floating-point number

Standard decimal notation with an optional sign and optional exponent.

x = 3.14
x = -1.0e-3
x = .5
x = 2.
x = 1e10

At least one digit must appear on one side of the decimal point, or an exponent must be present.

The value is stored verbatim as a string. At interpretation time:

  • param<double>() parses it as a 64-bit IEEE 754 double-precision value.
  • param<float>() parses it as double first, then narrows to 32-bit single precision. Values outside the float range become ±inf; values that are representable in double but not exactly in float are rounded to the nearest float.

Boolean

Exactly the two lowercase literals true and false. No other strings (including yes, no, on, off, or any capitalised variant) are accepted.

flag = true
flag = false

Unquoted string

Any sequence of non-whitespace characters that does not begin a number, boolean, quoted string, array, or brace expression, and contains none of [ # $ ' " \.

type = GeneratedMesh
label = some_label
path = /usr/local/share

Unquoted strings are single-line only — they cannot contain whitespace or newlines.

Verbatim string (triple-quoted)

A triple-quoted string stores its content verbatim — all whitespace, newlines, and any mix of quote characters are preserved exactly as written. Two delimiter styles are supported:

# Triple single-quote delimiter
code = '''
  import torch
  result = torch.tensor([1.0, 2.0, 3.0])
'''

# Triple double-quote delimiter
label = """it's a "verbatim" value"""

The content between the opening and closing ''' (or """) delimiters is returned by param_str() with whitespace and quote characters preserved exactly — no whitespace stripping, no quote unescaping. ${...} brace expressions ARE expanded, the same way they are for single-quoted strings, so triple-quoted bodies can interpolate values from elsewhere in the document:

n = 5

[block]
  code = '''
    for i in range(${n}):
        print(i)
  '''
[]

Verbatim fields are string-only. Calling param_int(), param_float(), param_bool(), param_list_*(), or any other non-string accessor on a verbatim field raises nmhit::Error. Only param_str() (and its param_optional_str variant) is allowed.

Tip: Triple-quoted strings solve the classic HIT quoting problem — a '...' string cannot contain ', and a "..." string cannot contain ". Triple-quoted strings can contain any combination of single and double quotes as long as they do not form the closing triple delimiter.

Array (1-D)

A whitespace-delimited sequence of elements enclosed in single quotes or double quotes — both delimiters are completely equivalent. Elements may be integers, floating-point numbers, or unquoted tokens (none of which may contain ;, #, $, ', ", or \).

vals   = '1 2 3'
floats = '1.0 2.5 3.14'
tags   = 'alpha beta gamma'

The two quote styles are interchangeable:

vals = '1 2 3'
vals = "1 2 3"   # identical meaning

An empty array is written as '' or "".

Array contents may span multiple lines — newlines inside the quotes are treated as whitespace:

vals = '
  1 2 3
  4 5 6
'

Array (2-D)

Rows are separated by ;. Each row is a whitespace-delimited sequence of elements, following the same rules as 1-D array elements.

matrix = '1 2 3; 4 5 6; 7 8 9'

The semicolons and surrounding whitespace (including newlines) are flexible:

matrix = '
  1 2 3;
  4 5 6;
  7 8 9
'

Every row must contain at least one element. Trailing semicolons (an empty last row) are a parse error.

Accessing a 2-D array value as a 1-D type (e.g. param<std::vector<int>>) will fail because the semicolons are stored as part of the raw value. Accessing a 1-D array as a 2-D type returns a single-row result.

Brace expressions

A ${...} expression is expanded at value-extraction time (i.e. when param<T>() is called). The raw token is stored in the AST as-is.

The following built-in commands are supported:

Expression Effect
${varname} Look up the field at path varname from the document root and return its string value.
${replace varname} Identical to ${varname}.
${env VARNAME} Substitute the environment variable VARNAME. Returns an empty string when unset.
${raw a b c} Concatenate all arguments literally: abc.

Brace expressions may be nested:

prefix = /opt
lib    = ${raw ${prefix} /lib}   # → /opt/lib

A brace expression may appear as the sole value of a field:

dim = ${mesh/dim}

File inclusion

!include relative/or/absolute/path.i

The referenced file is parsed recursively and its top-level items are spliced into the AST at the point of the !include directive. Relative paths are resolved against the directory of the including file.


Complete Grammar (EBNF)

file        = item* ;
item        = section | field | comment | blank | include ;
section     = '[' path ']' item* '[]' ;
field       = ident ('=' | ':=' | ':override=') value ;
quote       = "'" | '"' ;
value       = integer | float | bool | unquoted_str
            | brace_expr
            | quote array_row (';' array_row)* quote
            | quote quote
            | "'''" <verbatim content> "'''"
            | '"""' <verbatim content> '"""' ;
array_row   = array_elem+ ;
array_elem  = integer | float | unquoted_elem ;
include     = '!include' path ;
comment     = '#' <to end of line> ;
blank       = <two or more consecutive newlines> ;

path        = segment ('/' segment)* ;
segment     = <one or more non-whitespace, non-bracket characters> ;
ident       = [A-Za-z0-9_./<>+\-*!~]+ ;
integer     = [+\-]? [0-9]+ ;
float       = [+\-]? ( [0-9]* '.' [0-9]+ | [0-9]+ '.' [0-9]* ) ([eE] [+\-]? [0-9]+)?
            | [+\-]? [0-9]+ [eE] [+\-]? [0-9]+ ;
            (* stored verbatim; interpreted as double-precision (64-bit IEEE 754) by default,
               narrowed to single-precision (32-bit) when read as float *)
bool        = 'true' | 'false' ;
unquoted_str= [^ \t\n\r\[#$'"\\]+ ;
unquoted_elem=[^ \t\n\r;#$'"\\]+ ;
brace_expr  = '${' <content, brace-depth-tracked> '}' ;

C++ API

Parsing

Two entry points are provided to avoid ambiguity when passing string literals:

#include "nmhit/nmhit.h"

// Read and parse a file from disk.
// Throws nmhit::Error if the file cannot be opened or on syntax errors.
std::unique_ptr<nmhit::Node> root = nmhit::parse_file("my_file.i");

// Parse an in-memory string.
// !include paths are resolved relative to the current working directory.
std::unique_ptr<nmhit::Node> root = nmhit::parse_text("dim = 3\n");

Both functions accept optional pre/post string vectors for injecting HIT snippets (e.g. command-line overrides). All content is concatenated and parsed as a single document, so := override semantics apply globally across all sources:

std::vector<std::string> cli_overrides = { "solver/max_iter := 200" };
auto root = nmhit::parse_file("input.i", /*pre=*/{}, cli_overrides);
auto root = nmhit::parse_text(input_text, /*pre=*/{}, cli_overrides);

Reading values

// Resolve a slash-separated path and return a typed value.
// Throws nmhit::Error if the path does not exist or the value cannot be converted.
int    n  = root->param<int>("mesh/dim");
double x  = root->param<double>("solver/tol");
bool   on = root->param<bool>("output/enabled");

// Return a default when the path is absent (does not throw).
int n = root->param_optional<int>("mesh/dim", 3);

Built-in scalar types: bool, int, unsigned int, int64_t, float, double, std::string.

1-D arrays: std::vector<T> for any built-in or registered scalar T.

2-D arrays: std::vector<std::vector<T>> for any built-in or registered scalar T.

Tree navigation

// Walk direct children, optionally filtered by node type.
for (nmhit::Node * child : root->children())          { ... }
for (nmhit::Node * child : root->children(nmhit::NodeType::Field)) { ... }

// Find a node by relative path (returns nullptr when absent).
nmhit::Node * n = root->find("mesh/dim");

// Walk upward.
nmhit::Node * parent = n->parent();
nmhit::Node * docroot = n->root();

// Full slash-joined path from the root.
std::string fp = n->fullpath();   // e.g. "mesh/dim"

// Source location.
int line = n->line();
int col  = n->column();
std::string file = n->filename();

Inspecting fields

auto * f = dynamic_cast<nmhit::Field *>(root->find("mesh/dim"));
if (f) {
    std::string raw = f->raw_val();    // stored string, e.g. "3" or "'1 2 3'"
    f->set_val("4");                   // replace the stored value
}

Rendering

// Render the tree back to HIT text (preserves comments and blank lines).
std::string text = root->render();

// Custom indentation.
std::string text = root->render(0, "    ");  // 4-space indent

Scalar converters

The same conversions used internally by param<T>() are available as free functions for use on raw strings (e.g. from Field::raw_val()). Surrounding single or double quotes are stripped before conversion. All functions throw nmhit::Error on failure; the optional ctx node is used only to attach file/line/column information to the error.

bool    nmhit::parse_bool  (const std::string & s, const nmhit::Node * ctx = nullptr);
int64_t nmhit::parse_int   (const std::string & s, const nmhit::Node * ctx = nullptr);
double  nmhit::parse_double(const std::string & s, const nmhit::Node * ctx = nullptr);
float   nmhit::parse_float (const std::string & s, const nmhit::Node * ctx = nullptr);

Custom types

Register a scalar parser once before any param<T>() call:

// Registration (e.g. in main() or a static initializer)
nmhit::TypeRegistry::register_parser<MyEnum>(
  [](const std::string & s) -> MyEnum {
    if (s == "linear")    return MyEnum::Linear;
    if (s == "quadratic") return MyEnum::Quadratic;
    throw std::invalid_argument("unknown MyEnum value: " + s);
  }
);

// Usage — all three arities work automatically once T is registered.
MyEnum                          e  = root->param<MyEnum>("order");
std::vector<MyEnum>             v  = root->param<std::vector<MyEnum>>("orders");
std::vector<std::vector<MyEnum>> m = root->param<std::vector<std::vector<MyEnum>>>("order_matrix");

The parser receives the unquoted, brace-expanded token string. Calling param<T>() for an unregistered type throws nmhit::Error.

Thread safety: register_parser is not thread-safe relative to concurrent param calls. Register all custom types before spawning threads that call param.

Errors

All errors throw nmhit::Error, which is a std::exception carrying a vector of nmhit::ErrorMessage (filename, line, column, message).

try {
    auto root = nmhit::parse("input.i", text);
} catch (const nmhit::Error & e) {
    for (auto & msg : e.messages)
        std::cerr << msg.str() << '\n';   // "file.i:10:5: unexpected '}'"
}

Python API

Installation

pip install nmhit

Wheels are published to PyPI for Linux (x86_64, aarch64) and macOS (x86_64, arm64), covering Python 3.9 and later. No Flex or Bison is required.

Quick start

import nmhit

# Parse a file or an in-memory string
root = nmhit.parse_file("input.i")
root = nmhit.parse_text("[mesh]\n  dim = 3\n[]")

# Read typed values via slash-separated paths
dim = root.param_int("mesh/dim")         # int
tol = root.param_float("solver/tol")     # float
on  = root.param_bool("output/enabled")  # bool
tag = root.param_str("type")             # str

# Optional — returns a default when the path is absent
n = root.param_optional_int("mesh/dim", 3)

# 1-D and 2-D arrays
vals   = root.param_list_int("vals")           # list[int]
matrix = root.param_list_list_float("matrix")  # list[list[float]]

parse_text and parse_file accept optional pre and post keyword arguments (lists of HIT strings) for injecting snippets or command-line overrides:

root = nmhit.parse_file("input.i", post=["solver/max_iter := 200"])

Auto-detection with param()

nmhit.param() infers the type from the raw value (bool → int → float → str) and returns a native Python object. Pass an explicit type as the third argument to override inference:

nmhit.param(root, "mesh/dim")           # → 3  (int)
nmhit.param(root, "mesh/dim", float)    # → 3.0
nmhit.param(root, "mesh/dim", str)      # → "3"

Node types and tree navigation

root = nmhit.parse_text("[mesh]\n  dim = 3\n[]")

node = root.find("mesh/dim")            # returns Field, or None if absent
sec  = root.find("mesh")               # returns Section

node.type()      # nmhit.NodeType.Field / .Section / .Root / ...
node.path()      # "dim"
node.fullpath()  # "mesh/dim"
node.line()      # source line number

# Direct children, optionally filtered by type
root.children()                          # list[Node]
root.children(nmhit.NodeType.Section)    # list[Section]

# Walk upward
node.parent()    # parent Node, or None at root
node.root_node() # the Root node

Mutation

# Change a field value in-place
root.find("mesh/dim").set_val("2")

# Add / insert / remove children (cloned into the tree)
root.add_child(nmhit.Field("k", "42"))
root.insert_child(0, nmhit.Field("first", "1"))
removed = root.remove_child("mesh")    # returns the detached node

# Deep copy
root2 = root.clone()

Render

text = root.render()          # default 2-space indent
text = root.render(indent_text="    ")

Errors

All errors raise nmhit.Error (a subclass of RuntimeError). The exception carries a .messages attribute — a list of ErrorMessage objects with line, column, message, and filename fields:

try:
    nmhit.parse_text("[mesh]\n  dim = 3")   # missing []
except nmhit.Error as e:
    for m in e.messages:
        print(m)   # e.g. "<string>:2:9: expected '[]'"

Building

Requirements

Tool Minimum version When required
CMake 3.20 Always
C++ compiler C++17 Always
Flex 2.6 Debug builds only
Bison 3.7 Debug builds only

Pre-generated parser/lexer sources are committed to generated/ and used automatically for non-Debug build types, so end users and CI release builds do not need flex or bison installed.

Configure and build

Release build (no flex or bison required — uses committed generated sources):

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

Debug build (requires flex ≥ 2.6 and bison ≥ 3.7 — regenerates parser/lexer from source):

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j$(nproc)

After modifying src/Lexer.l or src/Parser.y, run the helper target to refresh the committed sources in generated/ and then commit them:

cmake --build build --target update_generated
git add generated/ && git commit

Pass -DNMHIT_BUILD_TESTS=OFF to skip building the test executable.

Run tests

ctest --test-dir build --output-on-failure

Install

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/your/prefix
cmake --build build -j$(nproc)
cmake --install build

This installs:

Path Contents
<prefix>/lib/libnmhit.a Static library
<prefix>/include/nmhit/ Public headers
<prefix>/lib/cmake/nmhit/ CMake config files
<prefix>/lib/pkgconfig/nmhit.pc pkg-config file

Use from an installed location

CMake find_package:

find_package(nmhit REQUIRED)
target_link_libraries(myapp PRIVATE nmhit::nmhit)

If the library was installed to a non-standard prefix, point CMake at it:

cmake -S . -B build -Dnmhit_DIR=/your/prefix/lib/cmake/nmhit

pkg-config:

pkg-config --cflags --libs nmhit

If the library was installed to a non-standard prefix:

PKG_CONFIG_PATH=/your/prefix/lib/pkgconfig pkg-config --cflags --libs nmhit

Use as a CMake subdirectory

Add the repository as a subdirectory of your project:

add_subdirectory(neml2-hit)
target_link_libraries(myapp PRIVATE nmhit)

The nmhit target exports include/ as a public include directory, so #include "nmhit/nmhit.h" works without any additional configuration.


License

This project is a sub-component of NEML2 and is distributed under the same license.

Download files

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

Source Distribution

nmhit-0.3.4.tar.gz (101.2 kB view details)

Uploaded Source

Built Distributions

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

nmhit-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp314-cp314-macosx_11_0_arm64.whl (247.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nmhit-0.3.4-cp314-cp314-macosx_10_15_x86_64.whl (261.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

nmhit-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp313-cp313-macosx_11_0_arm64.whl (247.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nmhit-0.3.4-cp313-cp313-macosx_10_15_x86_64.whl (261.4 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

nmhit-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp312-cp312-macosx_11_0_arm64.whl (247.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nmhit-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl (261.5 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

nmhit-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (371.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp311-cp311-macosx_11_0_arm64.whl (248.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nmhit-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl (261.9 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

nmhit-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (371.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp310-cp310-macosx_11_0_arm64.whl (248.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

nmhit-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl (261.9 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

nmhit-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (371.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nmhit-0.3.4-cp39-cp39-macosx_11_0_arm64.whl (248.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

nmhit-0.3.4-cp39-cp39-macosx_10_15_x86_64.whl (262.2 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

Details for the file nmhit-0.3.4.tar.gz.

File metadata

  • Download URL: nmhit-0.3.4.tar.gz
  • Upload date:
  • Size: 101.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.4.tar.gz
Algorithm Hash digest
SHA256 4ae938d2b7a731ac7c963d8b88861ffebd961eaefbfdbc106b97957b6e03e2db
MD5 a543fdac3a42e60c4558d4f85c3c882d
BLAKE2b-256 5f9b69783f6f18a1b57681b530f040f8e16a02ac985227d86574734aace28ed0

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4.tar.gz:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b84222a22986d1a48c731d429d0cece54772fff8b3edf73535a9e0c4fa4ed9f0
MD5 4223d815c3667bb1f41f8a213892b5dd
BLAKE2b-256 958da28c375f8563f09573338727415270bd8aa77806707b9116eb2e1e118696

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf23e51cef1ab08852a8e1a43eac1d506d409679695955b70cc4f564ef97fe7c
MD5 f051819ed3079077db9d98e7b11668f1
BLAKE2b-256 cc92e6393c16f5d85463e9d452c80ff78181bf7278b1910f911757ae13993102

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6e2911a3133e818075e431248be99b29e01423e100da50ac7e52d0d914220552
MD5 d6d1dc3023d077df96f0e7016e8c8eec
BLAKE2b-256 5084248ab4b96d86c7725cecf834ed17d0dcae1e8cd14660edc48d3645e8565a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f3de3384a5c200d157b9a624ac19944d8de6611e20fb36bf50908d92d28241f
MD5 7f92a40d4419b1cfe31ef07f39bf5eb1
BLAKE2b-256 32c6543c90ce971446564f32371538c6c498a02ae7a4b62983b1eb5f7459ba70

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c64857d565b344f61b75417c7f7b5d552ef51e2f03c7300b35b1412f5ec1014
MD5 5082963bbd358146d09200031b1558a4
BLAKE2b-256 8c160ed92ed3d3caa7f25077ac275595f312f89c9ead74927379f0e03619559b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 914901a70a3f50dfdec59c50498713b24601655908665ca795cd121ba7aaa296
MD5 e33ad6d34170ee6ffd69d0dcbf39ad6a
BLAKE2b-256 de074152c744ca4f654b956ca945a90b85c3d38171fe2313ad177347f94d1bde

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d976bb604285e7fe8db38d21ee4348c434536f5ae9157172aba0a9243923247
MD5 30ab255a933fcff3a2aec276d4f02238
BLAKE2b-256 ba2f8b6ecdcd1416b1130a672173645b84596e487d33495d5c01cf04fbda37a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 372e98f687c6f7d596349f82475232cbe85a1f9ac638fe31e199fcf14f0296ac
MD5 da1553a1ad18394eada70d2e6eee7308
BLAKE2b-256 b5324b8f623a9cb54c2f7aecd35754cb1857e6d28606f86e54104de35dee8b19

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1d7367b4eb9547f8ea0810ae105ad0fef519406f5bea92853655922491122227
MD5 4559193412a20d82f321df5410763917
BLAKE2b-256 792197d972cf2b207b4373877ed7a338abeccf83911a0f8e962e759415803691

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 050e37a31ca166911571a6aad3d4aa1d6d89c76706b9e356f83676883a9bbb32
MD5 a321117cb745b9ffc3eae858720c59ae
BLAKE2b-256 5364f8c3a34c6ff54ecfe8a4d7131e9b5780198613c164d915a10ee3bb166de1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b13ffb8714d1d90f77748086b1363e8cbc674205aed15bdb9dfa9300c0186ac
MD5 ad49634113698163edda827275cae565
BLAKE2b-256 96f1df9121e279862c78179696c0461a85d95113c0e326bcb2c96e6a46fa94b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bed89f8d8489a84a818295bb47ab1113811c4497c44719d9885712da2e9e8249
MD5 258b3b7582445ea72f9cc78afdb6a100
BLAKE2b-256 0962b1ee0916485b015e8b0fe7fa9538f846f1fe40cbaadd84adaae57c9dad05

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ce281529b27c9984eb8e1309d744ff01d3528e6978c83b5f7c0a4925447c64ef
MD5 e28c5ec944528d4b6e0c3f44313464cd
BLAKE2b-256 3ec7a63a2630c53e2ef1d6676cda004697e831c5794b9058782b0715f1da96f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 348c09d6bda9146436e038177e3589aa58efa30028218b4d14ea9025812db6f3
MD5 1e114b8aa9bdfda0645e7b300f762d78
BLAKE2b-256 5dcc3fb94c2a12d05361eeaacac1459f4fd3db83a1b225e945121195a5b9040a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 50bb3123b00d866d61a03830f68fb0f7e66e9c94b94fc69362b3f95c12899e62
MD5 815499cc261f94812e4e27ef39eda8a5
BLAKE2b-256 76e909264da3f64c0ac35b9bc2660c2d4e4d4109088006703f687883cd4e1cbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4902772c1bbfe8326b0ef99620dbdb3be59b0b6b55b9a3d2bfe66861d80844d9
MD5 9f5b4f4353d5b219ffa1ca8a7778c2dd
BLAKE2b-256 cbdf2306b15869b740f92038cc463943ef8f850e8e2c5410a03bab55e5ebb571

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: nmhit-0.3.4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 248.5 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c094f8c1588471e057d53f8ac177fdc5f7186cde88e8efc67ce6ea8d62762e0
MD5 98251eed66eaa4f5da21181139b4fba7
BLAKE2b-256 317d9a2718d49a2e21503ef56d335f34188ebb74c55e4f6566451d0ee47facac

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nmhit-0.3.4-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c8a0d48888157412c729ce04647e52323e35559cadf623c86c1a1f01446fa2cd
MD5 c83662cd3d35571ee3703f962a946688
BLAKE2b-256 6b7fb80ef966f21da7011189dc4e928d8996bd050e226c38f535f2dbd098a821

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.4-cp39-cp39-macosx_10_15_x86_64.whl:

Publisher: release.yml on applied-material-modeling/neml2-hit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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