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), macOS (x86_64, arm64), and Windows (AMD64), 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.5.tar.gz (102.7 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.5-cp314-cp314-win_amd64.whl (658.8 kB view details)

Uploaded CPython 3.14Windows x86-64

nmhit-0.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.7 kB view details)

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

nmhit-0.3.5-cp314-cp314-macosx_11_0_arm64.whl (247.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

nmhit-0.3.5-cp313-cp313-win_amd64.whl (649.8 kB view details)

Uploaded CPython 3.13Windows x86-64

nmhit-0.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.6 kB view details)

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

nmhit-0.3.5-cp313-cp313-macosx_11_0_arm64.whl (247.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.15+ x86-64

nmhit-0.3.5-cp312-cp312-win_amd64.whl (649.9 kB view details)

Uploaded CPython 3.12Windows x86-64

nmhit-0.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.7 kB view details)

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

nmhit-0.3.5-cp312-cp312-macosx_11_0_arm64.whl (247.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nmhit-0.3.5-cp312-cp312-macosx_10_15_x86_64.whl (261.4 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

nmhit-0.3.5-cp311-cp311-win_amd64.whl (650.9 kB view details)

Uploaded CPython 3.11Windows x86-64

nmhit-0.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.6 kB view details)

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

nmhit-0.3.5-cp311-cp311-macosx_11_0_arm64.whl (248.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.15+ x86-64

nmhit-0.3.5-cp310-cp310-win_amd64.whl (650.9 kB view details)

Uploaded CPython 3.10Windows x86-64

nmhit-0.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.5 kB view details)

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

nmhit-0.3.5-cp310-cp310-macosx_11_0_arm64.whl (248.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.15+ x86-64

nmhit-0.3.5-cp39-cp39-win_amd64.whl (651.1 kB view details)

Uploaded CPython 3.9Windows x86-64

nmhit-0.3.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.7 kB view details)

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

nmhit-0.3.5-cp39-cp39-macosx_11_0_arm64.whl (248.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

nmhit-0.3.5-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.5.tar.gz.

File metadata

  • Download URL: nmhit-0.3.5.tar.gz
  • Upload date:
  • Size: 102.7 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.5.tar.gz
Algorithm Hash digest
SHA256 6ea469576ae0779db1ac7b3c6bfb016fae8db48b49755f760d6c6edd9a6cfc5b
MD5 e4feb22e84237b7029925cfb59511447
BLAKE2b-256 40157bf3e4a30c1d9a181c66d9392a3184d57506eb1ed847bda954d7d6dce433

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5.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.5-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 658.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ba894f1602e8fde9ac2414e8940337811bf685f4ad4005f1b061d975ea2098e4
MD5 2f5c217907c73c17a3da25406a45d4c5
BLAKE2b-256 9e5e192ab7cb390332ea72d7ee77fcbf81c9e8e52b1a2bfbfb630d71b1fbf5bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp314-cp314-win_amd64.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.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5bb2eb18625e5dcf10cf4cfaa3be7bcebbdee8443ade44562751bb34da7f719e
MD5 c799dd107ee1d0a0886dc842a3848a90
BLAKE2b-256 6a4ea671a777852d8dd7bdde1fd4b171eec64bde5e607d5a1a5ae5df82a2539a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7eb431b234efbba332d4f519a4f62171aebb5e64f24fd2992f9cb31ab861246
MD5 804fcfd0bb697947e9f090a7f176f73f
BLAKE2b-256 39e185885c1792f7b0c79c14dfd9791516f5bcb68c65792974b449aeaa373ecc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 487d1dfddc19cf1306e95fd923d820fd9a0ff39120965ab3d2dda1509bd6b2ce
MD5 6ec451d2d6c9a1a7ad74947ddcb7b4e8
BLAKE2b-256 a1b8992bfbe8480465dd620b72445071a005333c52b1d6b8a54bac12a42b7742

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 649.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1677930ddf4f57492b71515fa15efbde7a5d5fb8608117979600b6d1fb9f4e9d
MD5 12a13d7751a01e43930bf8e3ef8a0b84
BLAKE2b-256 e7bea2a7eadb05c1fc6bbf65e68c136f7cce58ff45d0de074a7f40399fc52afd

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp313-cp313-win_amd64.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.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a913b73807fbe99c2f016e6175ee724ba89c3be93c5e22d93f73bb75d60302d
MD5 b399dfe66642cfcf2f730f991a3023ab
BLAKE2b-256 77d609a8fbdaf34d9c8df078c69793b5df44ab5ff1309e051f94b928eddb781a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3f3a9d0fd514bebc423c1393afaeebe93f235fe4fa53569fd8b60566a704f68
MD5 ab7d36a2dd40559caa0bdf795ed7cfd6
BLAKE2b-256 beb3779183af6292c3437f229cb8adf2f4ce936b3cfd4b1d4eb4c8797792ae11

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1b88c2ac85acf92d9ccabf3167c692d4aa7aecbc8a89ae7828a76de8006fe92e
MD5 53276c49290b942c99204833a980a14c
BLAKE2b-256 c1da931d4044a00eaf42bff4ee84830a328f027a4306ae56b8753c5d858d8660

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 649.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5fb0b536f0f53e7326e87303a9feb8dd2da5660b3fddf486df40fb46e559b7a0
MD5 2aa0f57acf2abebbd06862e6ba04cbae
BLAKE2b-256 cb1b2c14cee97a53d65dfbcc53bf48971218830feb4b2824782b7c896adaefda

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp312-cp312-win_amd64.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.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 adfde6e28b8efb6bc466c7fdf436c27d1a2d1389fcae60b8a7eca4bc4725bd11
MD5 f86c850a703401d8c1a45db8283b0212
BLAKE2b-256 f73a00788e1dd5e66af3e8505632376c0fe86d63aafb807e5790979fc0e5f1d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86bc9ef22cb49407eb21b3e541fd62bc7213419846e16d695376f64fbd56c8fc
MD5 e5a1a8bd42bc486ebc7835459dca984e
BLAKE2b-256 800b94490c3df56b953b45cc39afc581e9f397ba9059bfb75e8cc84dda199f51

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6e120a4ae0a74900a6c8efb14fef7590cbad6042df1ee0bda21b4d4db65e0b05
MD5 95b5572cce6c16209c799236274c86b8
BLAKE2b-256 940dc3fc3df4f63c54f5bf882c5117396f33c8ea4d975d2b4efe7eb5b0c0f07a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 650.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7230e728bf4a53eda893b8b2e74586040c5769136e1ede8a455abe4269a6049e
MD5 ef9cc794208588b5298d8cdd73a7dc38
BLAKE2b-256 39defa16d9c687bfa64decf749884f06296db81978428a5c1810754f8c6ad2e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp311-cp311-win_amd64.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.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eef6a9d8283670dcd4b049adc5d07594a860bf58f923d36c8400595fdb1d85e7
MD5 05f6e1bfc1edcbcb40c66433debaa212
BLAKE2b-256 ab2bdf97683c7c245cf2e6af016515a8dac29fdf362f9af2745e202459baeea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0369144fdd7914d699b10c104f4baa5222c7ecf396a071a9aa6c62e27d918ea5
MD5 7b9192a5cb7af30196f1859910b221e1
BLAKE2b-256 d65cc1ab698ae894f0a6c538fc72b9574aa077cfeacf1c2fd9ccb9d238efe691

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 de3ecef2ad4eae7c973c72b1f38551617dcb4ce539f5a150e04c8c20c7be5a7d
MD5 8259ff8db4bfbc9bb854cc2e82aa1a86
BLAKE2b-256 b71e69841051b876cd615fa044eedb982a27c3469f693813bf3a0efca35cde03

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 650.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c183e079ea33672820e77cca7229d6eea80897852ddd65f3247332d778f56cbb
MD5 b9b28d54c2c168e58d6fc37b11a52938
BLAKE2b-256 d82a9e0cb8c3bce8297083f22562063ac3f0c3d61fe7c779bace4fa031a3da74

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp310-cp310-win_amd64.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.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 81773a7699c34d7b6b1a522eddef17fe40a96cfacc0014831e9d267c6c68d904
MD5 3a03f34a88c14621779bc68a6cd68ff1
BLAKE2b-256 6689904d9b1286c9912fb739a5259e820cf86402a5923d725a6d5fce6295bb8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ba9fd051952f96bebaf56cc523bee2769a1d8451f0ae3155263ace14e4cd99e
MD5 3352df917cc5571834ead26e9ec39a9b
BLAKE2b-256 dc217ef59c0fa64f23d755949e470c4ec9be3d43b8036d8e987a673c2bcaebd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 dac812f959485d59ae9d8ca14c86f33082b15e22361ae1a2ba6e743718563c03
MD5 10a1bf553f06197dc2cbd88e98b9ed81
BLAKE2b-256 e00455ff53b7a7ae6c0184ca8635c51c7452a6bbea0bb950f7273ca2f51fd68f

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 651.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nmhit-0.3.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 bf7949a192df41c1b97286be1ba46cc532af20dcf5036e3845ed57fe854621ed
MD5 813d5b7dc29e4a46e0313708b7ee9fa1
BLAKE2b-256 9d68be27489575ddb9d48a264174298650dd0f38b73f48e3a73727dfe2fdfd47

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-cp39-cp39-win_amd64.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.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4416d1fe6a33bfe8305bc8768513a29913f479a1b6f82f3f292c13bf2fa43308
MD5 d5a13ad5c60551e0ef68b7feb2ba7c57
BLAKE2b-256 5fb4d9adbd74900408deb21ce11601aa35df2e0fd1fa9082033384a24c2993bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: nmhit-0.3.5-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 248.4 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.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f59d03023c2e4103ede80c090d06a9c501625f3d09b1a8b883403e59f44fe71
MD5 3aa20d5115c6f9b899b45d33777a1d06
BLAKE2b-256 7471499749c4299506f543ed5fa23051ca554dec91224f4f5dec37ebd066216d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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.5-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for nmhit-0.3.5-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 315802ecca9c3d30c49dc40fe48482480d3c00bd7bffdd54f9cbae327a032fe6
MD5 33d4fe40681c9678ac59b35117c2ee01
BLAKE2b-256 3048e3c98c7bc20630c7936d7223d7e4398880d870148c3f720647b1c750fbe0

See more details on using hashes here.

Provenance

The following attestation bundles were made for nmhit-0.3.5-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