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 "). Backslashes are permitted inside quoted values, so a single-element quoted string can hold a Windows path, e.g. path = 'C:\Users\me\model'. (Unquoted values still exclude \ — quote such paths.)

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.

nmhit builds and is tested on Linux, macOS, and Windows, with GCC, Clang, or MSVC. Windows uses the Visual Studio generator (no developer shell needed).

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.6.tar.gz (103.4 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.6-cp314-cp314-win_amd64.whl (658.9 kB view details)

Uploaded CPython 3.14Windows x86-64

nmhit-0.3.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.9 kB view details)

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

nmhit-0.3.6-cp314-cp314-macosx_11_0_arm64.whl (247.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nmhit-0.3.6-cp314-cp314-macosx_10_15_x86_64.whl (261.3 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

nmhit-0.3.6-cp313-cp313-win_amd64.whl (649.9 kB view details)

Uploaded CPython 3.13Windows x86-64

nmhit-0.3.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.8 kB view details)

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

nmhit-0.3.6-cp313-cp313-macosx_11_0_arm64.whl (247.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nmhit-0.3.6-cp313-cp313-macosx_10_15_x86_64.whl (261.6 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

nmhit-0.3.6-cp312-cp312-win_amd64.whl (650.0 kB view details)

Uploaded CPython 3.12Windows x86-64

nmhit-0.3.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (369.8 kB view details)

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

nmhit-0.3.6-cp312-cp312-macosx_11_0_arm64.whl (247.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nmhit-0.3.6-cp312-cp312-macosx_10_15_x86_64.whl (261.6 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

nmhit-0.3.6-cp311-cp311-win_amd64.whl (651.1 kB view details)

Uploaded CPython 3.11Windows x86-64

nmhit-0.3.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.7 kB view details)

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

nmhit-0.3.6-cp311-cp311-macosx_11_0_arm64.whl (248.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nmhit-0.3.6-cp311-cp311-macosx_10_15_x86_64.whl (262.0 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

nmhit-0.3.6-cp310-cp310-win_amd64.whl (651.0 kB view details)

Uploaded CPython 3.10Windows x86-64

nmhit-0.3.6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.6 kB view details)

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

nmhit-0.3.6-cp310-cp310-macosx_11_0_arm64.whl (248.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

nmhit-0.3.6-cp310-cp310-macosx_10_15_x86_64.whl (262.0 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

nmhit-0.3.6-cp39-cp39-win_amd64.whl (651.2 kB view details)

Uploaded CPython 3.9Windows x86-64

nmhit-0.3.6-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (370.8 kB view details)

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

nmhit-0.3.6-cp39-cp39-macosx_11_0_arm64.whl (248.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

nmhit-0.3.6-cp39-cp39-macosx_10_15_x86_64.whl (262.3 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: nmhit-0.3.6.tar.gz
  • Upload date:
  • Size: 103.4 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.6.tar.gz
Algorithm Hash digest
SHA256 f6c737a586c5227e9fad95a1cbea41ff73b759c36ad553fb3d9d72a02ee47940
MD5 bdc2d0d9ca91c3e493a93fc720b0faa0
BLAKE2b-256 42b3fa6d5a266b334e00589bccaca8ee129f5f64dfd06dd964ff09fadc81116e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 658.9 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.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4b240f0cdf882463877c96503f47da13f3cd5c3303172f845fbdf21d16146bb4
MD5 e19436ab80fad0de7cb0af8d87050cdd
BLAKE2b-256 8cc52ac3a1b6c6a0ecab4a958a1c6fe6ae4576d6f496940cef353097c12d35f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c9b5014db43cd74fae0795924d38eac619bab796e13b12a9d218eaafa89d228f
MD5 ecec098b81b3d9bccbac5310ef5f7587
BLAKE2b-256 47d5b8ade3085c42efdbd6ef817f2b3e6209867c8dc532bfe99d32c84ad176e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53e9eb4951444073f898596cb054abb93e79dd2eb7d903deb3a03f2cd921f0d1
MD5 d0aadb119d6ee5ce742819191c7d44db
BLAKE2b-256 4bc47779e2ec356a2b201915eabf102418e36869bba8b1af51abaaa4a2fe13c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b9cd014add20fcf59c432b0eaac3b710f8196160510a943fafff72e94bc48334
MD5 f8a8f032d94d3ef49fb3ad3a3c6d8645
BLAKE2b-256 3f8d4e079319c6fb614b8b086eb31913347c63401c407b9a8dbd64e5f33c2ca4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 649.9 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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c48014528847332d7864bf51da8ef7ca9571e7e0608509f4841ae1a29ff21a34
MD5 964c85ed5c1abff216625e980babb2af
BLAKE2b-256 f6fd12b3babf086d8830d529273e18476332495ef8f6d5e8a3f079c796edcd0e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c520f8d3ecb7d1fe7db2d98a620bb1c674205ecea19b4445841c099570957a5
MD5 8ce9f377f514a39b6d6c6a8d9d7b2a15
BLAKE2b-256 55086011842a284e738293a3359b2cd20e8d7f67b3278b2efed640c53919e5d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d706cd116f7fd7b8e9b216e0f890cdeb102a35bc10a7b4bd6ba95df038d8126e
MD5 6a6763a27a746660869774cca414a674
BLAKE2b-256 a5a73b2e552bb478865e86d225d4510b73ed2e950a022f9de5b79fa40e9064fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f1d1689de033aabacb8fc1465d72074c3fdc1d90ceae689e1f344e3305475c9c
MD5 85fc0e91439b8d9ef3f0de13ffaedbb6
BLAKE2b-256 8314efcbef0753c89899432d3dd5070d42c7dbea594efda9a09994f7969b1667

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 650.0 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.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b9ede91cb2fcf9dc658119a92e4866a9add569939bcd29d1b91c9e16c1f99985
MD5 10a0df0e528044eef22e0011e54b8f8f
BLAKE2b-256 82b589d342fa0104dc7bff407bb04656f97f9b923762bdf0cca7a7377b082c15

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba03f12ab8f3f7906f815b4c3b93286d003b600523c22fbbb849b21ff4107273
MD5 0be25d27226151ce6aea35e5fe1957fe
BLAKE2b-256 79d4ab07358355c0956507da4af37cb5552fb14493d64143167ef17febf1a47e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39eb2aa5aaa0b16d5b4fc62b227b9936ed2c5120375ffabb94bb6265d7143534
MD5 7c9f652e063b672eba2162c7cbf91d7f
BLAKE2b-256 4a144519d4a89b1252aa9afd9cc261cb6ff679bb47a07581580f505a737d79c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5463dda9b2244a750ba9e1a2d516cc48f96412c911a52e74f379b2f7a6c2ef93
MD5 7d322b5bcc38db564a97f9ec8a5f5545
BLAKE2b-256 e28fc8bda0d95d9ad90904facb0aef054e8ebd1a670f6bae028a0b4053af8782

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 651.1 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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3af80613ec47ea8004cfd1ab30016b676a316d7bce1a7d127b36c274d71e2b4c
MD5 42e44c2a78ee1240b5a4b02acd4a627a
BLAKE2b-256 5d2d6ea4d2f75394a959a21a11dd4c9ecb18e79ce68aec1f55e9be4c8cdee20f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e8d7ba30bb851f160480bc4a00dcab564c1f7ae1c67184f33049a5deaa28154e
MD5 474cd9e85dd1862a9f9983c7b98a2547
BLAKE2b-256 bb0555d7fdbad152197416e35591e2078c8e547caa429f8d94830e365cb97693

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 354bc8cabd220a9d7d12047c53909378fe0d8e5bca421012281a398b1ad182d1
MD5 37b9900338bc4c7862b8896201468eb2
BLAKE2b-256 e133b7a8fb024899d0fbb98c3bd02897724dfb56eb12172b89bb9033be978ee1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a3d8bc9dc26a84e33c01b0acd3858d2594eab9a446b71778ffedbe5d6864a8c0
MD5 0caf7c41e34380d424a896e0be467390
BLAKE2b-256 230600e6166dfd4ec417d304ddb51cd9cfd3673bacd1fda5ee539f0b20bf9e68

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 651.0 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.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 065e4ce93d11e27fd56a71e0a568970fafde0b70b1713785750d8c7e9945ebc3
MD5 83d3cfb388faa2645fd437f3d1b161dc
BLAKE2b-256 5f282958c607311bf8f20f0cde46cae17ac6bb23ff3d889f498bb53c7048f95f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7481909baad582157ec6145ce7f62f680f17d7badbda0fa3a8a68433dfd8902
MD5 964d10ec8310215f138400b5498c574e
BLAKE2b-256 3be48b8d8a55c2c84f1763a7862c46593ddb23340ab2bb93ec7ca9e213c35247

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc98c1562fd1f4ba2a8b85505cf743d6dd75b0d02a7abd3aa533fb74b6678db4
MD5 0565839d361519a99d4be429f23f8b81
BLAKE2b-256 e8ddc7e88357d160e3a3b8ac66dfc9e6962d4371e26dfd7dc957f7d6c997b290

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 43f60b8b546bc0a274098cb2407b6dff0cce107e482565f931a4240fa439a8e9
MD5 16b3def8caf4bab247c48b7445a5014d
BLAKE2b-256 1103def56d1cc857037b225a9b83f8ae62be6dea6dc483b9017741424f295265

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 651.2 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.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3a251e40aa28c66f92702aa57526bd012c5707419b5dc3afd0581011eb1ef99f
MD5 f1c272ef688b24137d8172254b38898e
BLAKE2b-256 58b1bbfa4c8825f6a39d678898b3788dbd2768ea325585f649b8683db49dd7b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fda02ee0607cf7e07527d396e43f1c6b5254281a3b515f6d3ce67411e53d9dfb
MD5 fa869df7b3bb67643f7b15e3eb3d3c2e
BLAKE2b-256 c8700a34a9cafd213d84bfb3d8fa20be869c563e25c35baa91b18917fd4b54d6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nmhit-0.3.6-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 248.6 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.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f2a2c60f3c27fe179b635f3826a70d928748e9a29fe7df0c7c87daa8e0129c7
MD5 f84791093754128ec2bb311a3ee6b0cd
BLAKE2b-256 ce79b7f7bec881e41f7445b5cd41ebfeb1b75e5e5739bef53f3766bfac25c84a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nmhit-0.3.6-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1e7efe2744af28f39484c0943df626540fc2ea1eb930bfa2a429bc071888ea15
MD5 7545645d152c498a217c94b304cd50ec
BLAKE2b-256 447110775f92bbbba6518936fa26da3f0f1e90b8c1273d2217d185a299f6c006

See more details on using hashes here.

Provenance

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