Skip to main content

gersemi

Status License: MPL 2.0 Ruff

A formatter to make your CMake code the real treasure.

Installation

You can install gersemi from PyPI:

pip3 install gersemi

Usage

usage: gersemi [-c] [-i] [--diff] [--print-config {minimal,verbose,default}] [--version]
               [-h] [-l INTEGER] [--indent (INTEGER | tabs)] [--safe]
               [--definitions src [src ...]]
               [--list-expansion {favour-inlining,favour-expansion}]
               [--warn-about-unknown-commands] [--disable-formatting]
               [--extensions extension-name-or-path [extension-name-or-path ...]]
               [--sort-order {case-sensitive,case-insensitive}] [-q] [--color]
               [-w (INTEGER | max)] [--cache] [--cache-dir CACHE_DIR]
               [--config CONFIGURATION_FILE] [--warnings-as-errors]
               [--line-ranges LINE_RANGES] [--respect-ignore-files]
               [src ...]

A formatter to make your CMake code the real treasure.

positional arguments:
  src                   File or directory to format. When directory is provided then
                        CMakeLists.txt, CMakeLists.txt.in and files with
                        .cmake/.cmake.in extension are automatically discovered. If only
                        `-` is provided, input is taken from stdin instead.
                        If --definitions is used it has to be separated with another
                        option or `--`, for example:
                        gersemi --definitions def1.cmake def2.cmake -- src1.cmake

modes:
  -c, --check           Check if files require reformatting. Return 0 when there's
                        nothing to reformat. Return 1 when some files would be
                        reformatted. It can be used together with --diff.
  -i, --in-place        Format files in-place.
  --diff                Show diff on stdout for each formatted file instead. It can be
                        used together with --check.
  --print-config {minimal,verbose,default}
                        Print configuration for files. With "minimal" prints source of
                        outcome configuration (configuration file or defaults) and the
                        options that differ from defaults. With "verbose" prints source
                        of outcome configuration (configuration file or defaults), files
                        for which this configuration is applicable and complete listing
                        of options. With "default" prints outcome configuration with
                        default values. Command line arguments are taken into
                        consideration just as they would be for formatting. When
                        configuration file is found values in "definitions" are printed
                        as relative paths, otherwise absolute paths are printed. Output
                        can be placed in .gersemirc file verbatim.
  --version             Show version.
  -h, --help            Show this help message and exit.

outcome configuration:
  These arguments control how gersemi formats source code. Values for these arguments
  can be stored in .gersemirc file which can be placed in directory next to the source
  file or any parent directory. The highest priority has file provided through
  --config, then file closest to the source file, then file in parent directory etc.
  until root of file system is reached. Arguments from command line can be used to
  override parts of that stored configuration or supply them in absence of
  configuration file. Precedence: (command line arguments) > (configuration file) >
  (defaults)

  -l, --line-length INTEGER
                        Maximum line length in characters. [default: 80]
  --indent (INTEGER | tabs)
                        Number of spaces used to indent or 'tabs' for indenting with
                        tabs [default: 4]
  --safe, --unsafe      Enable sanity checks. [default: skip sanity checks]
  --definitions src [src ...]
                        Files or directories containing custom command definitions
                        (functions or macros). If only - is provided custom definitions,
                        if there are any, are taken from stdin instead. Commands from
                        not deprecated CMake native modules don't have to be provided.
                        See: https://cmake.org/cmake/help/latest/manual/cmake-
                        modules.7.html
  --list-expansion {favour-inlining,favour-expansion}
                        Switch controls how code is expanded into multiple lines when
                        it's not possible to keep it formatted in one line. With
                        "favour-inlining" the list of entities will be formatted in such
                        way that sublists might still be formatted into single line as
                        long as it's possible or as long as it doesn't break the "more
                        than four standalone arguments" heuristic that's mostly focused
                        on commands like `set` or `list(APPEND)`. With "favour-
                        expansion" the list of entities will be formatted in such way
                        that sublists will be completely expanded once expansion becomes
                        necessary at all. [default: favour-inlining]
  --warn-about-unknown-commands, --no-warn-about-unknown-commands
                        When enabled file which has unknown custom commands will have
                        warnings issued about that and result won't be cached. See:
                        "Let's make a deal" section in README. [default: warnings
                        enabled, same as --warn-about-unknown-commands]
  --disable-formatting, --enable-formatting
                        Completely disable formatting. [default: formatting enabled]
  --extensions extension-name-or-path [extension-name-or-path ...]
                        Names of extension modules or paths to extension files. See:
                        "Extensions" section in README.
  --sort-order {case-sensitive,case-insensitive}
                        Defines sorting order for values after the keyword which
                        supports sorting due to either keyword hint or extension
                        definition. With "case-sensitive" arguments that are sorted in
                        case sensitive order also known as code point order. With "case-
                        insensitive" arguments are sorted in case insensitive order.
                        [default: case-sensitive]

control configuration:
  These arguments control how gersemi operates rather than how it formats source code.
  Values for these options are not read from configuration file. Default values are
  used when the arguments aren't supplied. Precedence: (command line arguments) >
  (defaults)

  -q, --quiet, --no-quiet
                        Skip printing non-error messages to stderr.
                        [default: don't skip, same as --no-quiet]
  --color, --no-color   If --diff is selected showed diff is colorized.
                        [default: don't colorize diff, same as --no-color]
  -w, --workers (INTEGER | max)
                        Explicit number of workers or 'max' for maximum possible number
                        of workers on given machine used to format multiple files in
                        parallel. [default: max]
  --cache, --no-cache   Enables cache with data about files that are known to be
                        formatted to speed up execution.
                        [default: cache enabled, same as --cache]
  --cache-dir CACHE_DIR
                        Directory used to store cache file when cache is enabled. When
                        omitted platform specific default cache directory will be used
                        instead.
                        [default: omitted]
  --config CONFIGURATION_FILE
                        Path to configuration file. When present this configuration file
                        will be used for determining configuration for all sources
                        instead of automatically found configuration files closest to
                        each of the sources. [default: omitted]
  --warnings-as-errors  Treat warnings as errors so that status code becomes 1 when at
                        least one warning would be issued. This option is not inhibited
                        by --quiet.
  --line-ranges LINE_RANGES
                        Try to format code only in specified line ranges. This option
                        works only with one input file. Range is specified as pairs of
                        integers indicating line numbers (1-based) joined with `-`
                        (dash) and each pair must be separated by comma. Examples of
                        valid values of this option: a) single line range: 13-21 b)
                        multiple line ranges: 10-49,51-100,111-123 c) single line: 7-7.
                        This option can be specified multiple times and union of ranges
                        will be considered, example: `--line-ranges 10-49 --line-ranges
                        51-100` is the same as `--line-ranges 10-49,51-100`
  --respect-ignore-files, --no-respect-ignore-files
                        When directory is passed as a source argument gersemi will
                        automatically discover relevant CMake files while respecting
                        rules in the following ignore files: .ignore, .gitignore,
                        .git/info/exclude and global gitignore globs. See:
                        https://docs.rs/ignore/latest/ignore/index.html
                        [default: respect ignore files, same as --respect-ignore-files]

pre-commit hook

You can use gersemi with a pre-commit hook by adding the following to .pre-commit-config.yaml of your repository:

repos:
- repo: https://github.com/BlankSpruce/gersemi-pre-commit
  rev: 0.28.1
  hooks:
  - id: gersemi

Update rev to relevant version used in your repository. For more details refer to https://pre-commit.com/#using-the-latest-version-for-a-repository

Extensions in pre-commit hook

If you want to use extensions with pre-commit list them with additional_dependencies. Example assuming that outcome configuration is in .gersemirc:

.pre-commit-config.yaml:

repos:
- repo: https://github.com/BlankSpruce/gersemi-pre-commit
  rev: 0.28.1
  hooks:
  - id: gersemi
    additional_dependencies:
    - https://github.com/BlankSpruce/gersemi/extension-example/extension

.gersemirc:

line_length: 123
extensions:
- extension_example

Formatting

[!IMPORTANT] Changes to code might be destructive and you should always have a backup (version control helps a lot).

The key goals:

  • Formatter should "just work" and should have as little configuration as possible so that you don't have to worry about fine-tuning formatter to your needs - as long as you embrace the gersemi style of formatting, similarly as black or gofmt do their job.
  • Only valid CMake language code is considered - gersemi might be able to format some particular cases of invalid code but it's not guaranteed and it shouldn't be relied upon.
  • Only commands from CMake 3.0 onwards are supported and will be formatted properly - for instance exec_program has been deprecated since CMake 3.0 so it won't be formatted.
  • Formatter can be informed about commands not supported out of the box:

Style

General goals:

  • Canonical casing is used as it's defined in official CMake documentation like FetchContent_Declare. There are a few deliberate exceptions for which lower case name was chosen to provide broader consistency with other CMake commands. In case of unknown commands, not provided through definitions, lower case will be used.

  • Arguments attached to certain multi-value keywords, like PUBLIC/PRIVATE/INTERFACE in target_link_libraries, are treated as an argument group and such group might introduce another level of indentation. It's meant to introduce a visual hint that certain arguments have different, specific meaning.

  • Arguments that represent key-value pairs will be treated as such pairs.

    It's applicable to:
    • PROPERTIES keyword in the following official commands:
      • gtest_discover_test
      • set_directory_properties
      • set_package_properties
      • set_source_files_properties
      • set_target_properties
      • set_test_properties
    • keyword in custom commands that has pairs hint (See: Let's make a deal).
  • Arguments that represent shell command-like sequence won't be expanded in multiple lines unless character limit for single line is reached. In case of expansion arguments not fitting in given line will be placed in the next one instead of putting each argument in its own line like it would happen for usual multi-value arguments.

    Empty comments can be used to force some explicit expansions:
    add_test(
        NAME foo
        COMMAND
            some_command --with-argument-one foo --with argument-two bar --with-some-option
            --with-another-option --with-another-another-option
    )
    add_test(
        NAME foo
        COMMAND
            some_command #
            --with-argument-one foo #
            --with argument-two bar #
            --with-some-option --with-another-option --with-another-another-option
    )
    
    It's applicable to:
    • COMMAND keyword in the following official commands:
      • add_test
      • execute_process
      • env_module
    • COMMAND and ARGS keywords in add_custom_command
    • COMMAND keyword and positional arguments of add_custom_target
    • CMAKE_COMMAND_LINE in cmake_add_fortran_subdirectory
    • GCOV_OPTIONS in ctest_coverage_collect_gcov
    • these keywords in ExternalProject_Add:
      • DOWNLOAD_COMMAND
      • GIT_CONFIG
      • UPDATE_COMMAND
      • PATCH_COMMAND
      • CONFIGURE_COMMAND
      • CMAKE_ARGS
      • CMAKE_CACHE_ARGS
      • CMAKE_CACHE_DEFAULT_ARGS
      • BUILD_COMMAND
      • INSTALL_COMMAND
      • TEST_COMMAND
      • COMMAND
    • these keywords in FetchContent_Declare:
      • DOWNLOAD_COMMAND
      • UPDATE_COMMAND
      • PATCH_COMMAND
    • EXTRA_ARGS and DISCOVERY_EXTRA_ARGS keywords in gtest_discover_tests
    • MATLAB_ADDITIONAL_STARTUP_OPTIONS in matlab_add_unit_test
    • keyword in custom commands that has command_line hint (See: Let's make a deal).

Default style favour-inlining

gersemi will try to format the code in a way that respects set character limit for single line and only break line whenever necessary with one exception. The commands that have a group of parameters that aren't attached to any specific keyword (like set or list(APPEND)) will be broken into multiple lines when there are more than 4 arguments in that group. The exception to the rule is made as a heuristic to avoid large local diff when the given command won't fit into maximum line length:

# Four elements in the list "Oceans_Eleven"
set(Oceans_Eleven Danny Frank Rusty Reuben)

# Five elements in the list "Oceans_Twelve"
set(Oceans_Twelve
    Danny
    Frank
    Rusty
    Reuben
    Tess
)

You can also force expansion by using an empty comment somewhere in the argument group that you intend to keep expanded:

target_link_libraries(FOOBAR PUBLIC foo bar baz PRIVATE foo bar baz)

target_link_libraries(
    FOOBAR #
    PUBLIC foo bar baz
    PRIVATE foo bar baz
)

target_link_libraries(
    FOOBAR
    PUBLIC #
        foo
        bar
        baz
    PRIVATE foo bar baz
)

Example

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(example CXX)

message(STATUS "This is example project")
message(
    STATUS
    "Here is yet another but much much longer message that should be displayed"
)

# project version
set(VERSION_MAJOR 0)
set(VERSION_MINOR 1)
set(VERSION_PATCH 0)

add_compile_options(
    -Wall
    -Wpedantic
    -fsanitize=address
    -fconcepts
    -fsomething-else
)

if(NOT ${SOME_OPTION})
    add_compile_options(-Werror)
endif()

# foobar library
add_library(foobar)
add_library(example::foobar ALIAS foobar)

target_sources(
    foobar
    PUBLIC
        include/some_subdirectory/header.hpp
        include/another_subdirectory/header.hpp
    PRIVATE
        src/some_subdirectory/src1.cpp
        src/some_subdirectory/src1.cpp
        src/another_subdirectory/src1.cpp
        src/another_subdirectory/src2.cpp
        src/another_subdirectory/src3.cpp
)

target_include_directories(
    foobar
    INTERFACE
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>
)

target_link_libraries(
    foobar
    PUBLIC example::dependency_one example::dependency_two
    PRIVATE
        example::some_util
        external::some_lib
        external::another_lib
        Boost::Boost
)

include(GNUInstallDirs)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})

# example executable
add_executable(app main.cpp)
target_link_libraries(app PRIVATE example::foobar Boost::Boost)

# tests
include(CTest)
include(GTest)
enable_testing()
add_subdirectory(tests)

# some helper function - see more details in "Let's make a deal" section
function(add_test_executable)
    set(OPTIONS
        QUIET
        VERBOSE
        SOME_PARTICULARLY_LONG_KEYWORD_THAT_ENABLES_SOMETHING
    )
    set(ONE_VALUE_ARGS NAME TESTED_TARGET)
    set(MULTI_VALUE_ARGS SOURCES DEPENDENCIES)

    cmake_parse_arguments(
        THIS_FUNCTION_PREFIX
        ${OPTIONS}
        ${ONE_VALUE_ARGS}
        ${MULTI_VALUE_ARGS}
    )
    # rest of the function
endfunction()

add_test_executable(
    NAME foobar_tests
    TESTED_TARGET foobar
    SOURCES
        some_test1.cpp
        some_test2.cpp
        some_test3.cpp
        some_test4.cpp
        some_test5.cpp
    QUIET
    DEPENDENCIES googletest::googletest
)

add_custom_command(
    OUTPUT ${SOMETHING_TO_OUTPUT}
    COMMAND ${CMAKE_COMMAND} -E cat foobar
    COMMAND cmake -E echo foobar
    COMMAND
        cmake -E echo "something quite a bit                           longer"
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/something
    DEPENDS
        ${CMAKE_CURRENT_SOURCE_DIR}/something
        ${CMAKE_CURRENT_SOURCE_DIR}/something_else
    COMMENT "example custom command"
)

Alternative style favour-expansion

In this style lines are broken in one of these cases:

  • there is at least one multi-value argument present a single command invocation, either keyworded one like PUBLIC in target_link_libraries or standalone one like list of files in add_library, which has more than one value
  • there are more than one multi-value arguments present in the command invocation like target_link_libraries with PUBLIC and PRIVATE arguments.
  • character limit for single line is reached

One-value arguments (like NAME in add_test) will be inlined unless that'd violate character limit. Structure or control flow commands (if, while, function, foreach etc.) are exempted from these special rules and follow the same formatting as favour-inlining. This style is more merge or git blame friendly because usually multi-value arguments are changed one element at a time and with this style such change will be visible as one line of code per element.

Example

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(example CXX)

message(STATUS "This is example project")
message(
    STATUS
    "Here is yet another but much much longer message that should be displayed"
)

# project version
set(VERSION_MAJOR 0)
set(VERSION_MINOR 1)
set(VERSION_PATCH 0)

add_compile_options(
    -Wall
    -Wpedantic
    -fsanitize=address
    -fconcepts
    -fsomething-else
)

if(NOT ${SOME_OPTION})
    add_compile_options(-Werror)
endif()

# foobar library
add_library(foobar)
add_library(example::foobar ALIAS foobar)

target_sources(
    foobar
    PUBLIC
        include/some_subdirectory/header.hpp
        include/another_subdirectory/header.hpp
    PRIVATE
        src/some_subdirectory/src1.cpp
        src/some_subdirectory/src1.cpp
        src/another_subdirectory/src1.cpp
        src/another_subdirectory/src2.cpp
        src/another_subdirectory/src3.cpp
)

target_include_directories(
    foobar
    INTERFACE
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>
)

target_link_libraries(
    foobar
    PUBLIC
        example::dependency_one
        example::dependency_two
    PRIVATE
        example::some_util
        external::some_lib
        external::another_lib
        Boost::Boost
)

include(GNUInstallDirs)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})

# example executable
add_executable(app main.cpp)
target_link_libraries(
    app
    PRIVATE
        example::foobar
        Boost::Boost
)

# tests
include(CTest)
include(GTest)
enable_testing()
add_subdirectory(tests)

# some helper function - see more details in "Let's make a deal" section
function(add_test_executable)
    set(OPTIONS
        QUIET
        VERBOSE
        SOME_PARTICULARLY_LONG_KEYWORD_THAT_ENABLES_SOMETHING
    )
    set(ONE_VALUE_ARGS
        NAME
        TESTED_TARGET
    )
    set(MULTI_VALUE_ARGS
        SOURCES
        DEPENDENCIES
    )

    cmake_parse_arguments(
        THIS_FUNCTION_PREFIX
        ${OPTIONS}
        ${ONE_VALUE_ARGS}
        ${MULTI_VALUE_ARGS}
    )
    # rest of the function
endfunction()

add_test_executable(
    NAME foobar_tests
    TESTED_TARGET foobar
    SOURCES
        some_test1.cpp
        some_test2.cpp
        some_test3.cpp
        some_test4.cpp
        some_test5.cpp
    QUIET
    DEPENDENCIES googletest::googletest
)

add_custom_command(
    OUTPUT
        ${SOMETHING_TO_OUTPUT}
    COMMAND
        ${CMAKE_COMMAND} -E cat foobar
    COMMAND
        cmake -E echo foobar
    COMMAND
        cmake -E echo "something quite a bit                           longer"
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/something
    DEPENDS
        ${CMAKE_CURRENT_SOURCE_DIR}/something
        ${CMAKE_CURRENT_SOURCE_DIR}/something_else
    COMMENT "example custom command"
)

Let's make a deal

It's possible to provide reasonable formatting for custom commands. However on language level there are no hints available about supported keywords for given command so gersemi has to generate specialized formatter. To do that custom command definition is necessary which should be provided with --definitions. There are limitations though since it'd probably require full-blown CMake language interpreter to do it in every case so let's make a deal: if your custom command definition (function or macro) uses cmake_parse_arguments and does it in obvious manner such specialized formatter will be generated. Name casing used in command definition will be considered canonical for custom command (in the example below canonical casing will be Seven_Samurai). For instance this definition is okay (you can find other examples in tests/custom_command_formatting/):

function(Seven_Samurai some standalone arguments)
    set(options KAMBEI KATSUSHIRO)
    set(oneValueArgs GOROBEI HEIHACHI KYUZO)
    set(multiValueArgs SHICHIROJI KIKUCHIYO)

    cmake_parse_arguments(
        THIS_FUNCTION_PREFIX
        "${options}"
        "${oneValueArgs}"
        "${multiValueArgs}"
        ${ARGN}
    )

    # rest of the function definition...
endfunction()

With this definition available it's possible to format code like so:

Seven_Samurai(
    three
    standalone
    arguments
    KAMBEI
    KATSUSHIRO
    GOROBEI foo
    HEIHACHI bar
    KYUZO baz
    SHICHIROJI foo bar baz
    KIKUCHIYO bar baz foo
)

Otherwise gersemi will fallback to only fixing indentation of command name and it's closing parenthesis while preserving original formatting of arguments:

# before formatting of unknown command
  watch_david_fincher_movies(
       "Se7en"
       "The Game"
         "Fight Club"
       "Zodiac"     "The Curious Case of Benjamin Button"
         )

# after
watch_david_fincher_movies(
       "Se7en"
       "The Game"
         "Fight Club"
       "Zodiac"     "The Curious Case of Benjamin Button"
)

If you find these limitations too strict let me know about your case.

When source code has custom commands but their definitions aren't known gersemi will warn about that. Warnings can be suppressed with --no-warn-about-unknown-commands/warn_about_unknown_commands: false.

How to format custom commands for which path to definition can't be guaranteed to be stable? (e.g external dependencies not managed by CMake)

You can either implement extension or provide stub definitions that will be used only as an input for gersemi. Example of stub definition:

# ./.gersemirc
definitions: [./src/cmake/stubs, ...] # ... other paths that might contain actual definitions
line_length: 120
list_expansion: favour-expansion
# ./src/cmake/stubs/try_to_win_best_picture_academy_award.cmake
# A stub for some external command out of our control
function(try_to_win_best_picture_academy_award)
    # gersemi: hints { CAST: pairs, SUMMARY: command_line }
    set(options FOREIGN_LANGUAGE)
    set(oneValueArgs GENRE YEAR)
    set(multiValueArgs DIRECTORS CAST SUMMARY)

    cmake_parse_arguments(_ "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
endfunction()

gersemi: ignore

If your definition should be ignored for purposes of generating specialized formatter you can use # gersemi: ignore at the beginning of the custom command:

function(harry_potter_and_the_philosophers_stone some standalone arguments)
    # gersemi: ignore
    set(options HARRY)
    set(oneValueArgs HERMIONE)
    set(multiValueArgs RON)

    cmake_parse_arguments(
        THIS_FUNCTION_PREFIX
        "${options}"
        "${oneValueArgs}"
        "${multiValueArgs}"
        ${ARGN}
    )

    # rest of the definition...
endfunction()

# no reformatting
harry_potter_and_the_philosophers_stone(HARRY
    HERMIONE foo
              RON foo bar baz)

It should be still preferred simply to not provide that definition instead.

gersemi: hints

If your definition has # gersemi: hints at the beginning then after hints you can provide YAML formatted pairs <keyword>: <specialized_formatting> to indicate how to treat specific multi-value arguments. <specialized_formatting> can be:

  • pairs: values after the keyword will be grouped into pairs, similar to how set_target_properties(PROPERTIES) is handled
  • command_line: values after the keyword will be treated like a sequence of words in command line, similar to how add_custom_command(COMMAND) is handled
  • sort: values after the keyword will be sorted in alphabetical order
  • unique: repeated values after the keyword will be removed during formatting
  • sort+unique: values will be sorted and repetitions will be removed

All line comments with # gersemi: hints prefix within custom command definition will be taken into consideration so it's possible to list all of the hints in more readable fashion.

Example:
function(movie_description_without_hints)
set(options "")
set(oneValueArgs DIRECTOR)
set(multiValueArgs CAST SUMMARY)

cmake_parse_arguments(THIS_FUNCTION_PREFIX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
endfunction()

function(movie_description_with_hints)
# gersemi: hints { CAST: pairs, SUMMARY: command_line }
set(options "")
set(oneValueArgs DIRECTOR)
set(multiValueArgs CAST SUMMARY)

cmake_parse_arguments(THIS_FUNCTION_PREFIX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
endfunction()

# alternative definition with hints spread across multiple line comments
function(movie_description_with_hints)
# gersemi: hints { CAST: pairs }
# gersemi: hints { SUMMARY: command_line }
set(options "")
set(oneValueArgs DIRECTOR)
set(multiValueArgs CAST SUMMARY)

cmake_parse_arguments(THIS_FUNCTION_PREFIX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
endfunction()

movie_description_without_hints(
    Oppenheimer
    DIRECTOR "Christopher Nolan"
    CAST
        "J. Robert Oppenheimer"
        "Cillian Murphy"
        "Kitty Oppenheimer"
        "Emily Blunt"
        "General Leslie Groves"
        "Matt Damon"
    SUMMARY
        Oppenheimer
        is
        an
        epic
        biographical
        thriller
        directed
        by
        Christopher
        Nolan.
)

movie_description_with_hints(
    Oppenheimer
    DIRECTOR "Christopher Nolan"
    CAST
        "J. Robert Oppenheimer" "Cillian Murphy"
        "Kitty Oppenheimer" "Emily Blunt"
        "General Leslie Groves" "Matt Damon"
    SUMMARY
        Oppenheimer is an epic biographical thriller directed by Christopher
        Nolan.
)

gersemi: block_end

If your definition has # gersemi: block_end at the beginning then after block_end you can provide name of another command. This will form block-like structure that will be formatted similarly to the pair of function/endfunction.

Example:
function(movie_prologue)
    # gersemi: block_end movie_epilogue

    # details of this function
endfunction()

function(movie_epilogue)
    # details of this function
endfunction()

movie_prologue()
    set(MOVIE_SETTING "Jury room on a hot summer day")
movie_epilogue()

Inline argument hints

In case you want format group of arguments in particular way you can introduce bracket comment with hint how to format that group. It will affect arguments from that bracket argument until next keyword or end of command invocation. The following hints are supported:

  • Same as hints used in custom command definitions:
    • [[gersemi: pairs]]
    • [[gersemi: command_line]]
    • [[gersemi: sort]]
    • [[gersemi: unique]]
    • [[gersemi: sort+unique]]
  • [[gersemi: as_command=<name_of_command>]] to format list of arguments in the same way as another command.
Example:
set(MY_SOURCES
    #[[gersemi: sort+unique]]
    a.h
    b.h
    c.h
    d_____________________________________________.h
    CACHE INTERNAL # CACHE is the next keyword after inline hint
    "Short docstring"
    FORCE
)

set(install_args
    #[[gersemi: as_command=install]]
    TARGETS
        long_arg______________________________________________________________
    EXPORT
        long_arg______________________________________________________________
    PUBLIC_HEADER
        DESTINATION
            long_arg____________________________________________________________
        PERMISSIONS OWNER_READ
        CONFIGURATIONS Debug
        COMPONENT
            long_arg____________________________________________________________
        NAMELINK_COMPONENT
            long_arg____________________________________________________________
        OPTIONAL
        EXCLUDE_FROM_ALL
        NAMELINK_ONLY
    INCLUDES DESTINATION
        long_arg____________________________________________________________
)

Extensions

You can extend gersemi capabilities through Python modules listed with --extensions(command line)/extensions (configuration file). Such extension has to:

  • either:
    • be module installed in gersemi's environment that follows naming convention gersemi_{extension module name},
    • be file that ends with .py extension, for example: acme_corporation.py
  • implement command_definitions mapping, where key describes command in its canonical casing and value describes command properties,

[!IMPORTANT]

  1. Exact details on command properties are available in extension example implementation.
  2. It's possible to override or tweak builtin commands. Extension example shows how to do that with target_sources command example. Use with caution.
  • pass verification done once during runtime that checks whether command_definitions follows some basic constraints like "keyworded arguments are strings", "command names don't start with a digit" etc.

How to disable reformatting

Gersemi can be disallowed to format block of code using pair of fencing comments. Supported pairs:

  • # gersemi: off/# gersemi: on
  • # cmake-format: off/# cmake-format: on
  • # fmt: off/# fmt: on Mixing fencing comments, for instance # gersemi: off + # fmt: on, is not supported. Example:
the_hobbit(
    BURGLAR "Bilbo Baggins"
    WIZARD Gandalf
    DWARVES
        "Thorin Oakenshield"
        Fili
        Kili
        Balin
        Dwalin
        Oin
        Gloin
        Dori
        Nori
        Ori
        Bifur
        Bofur
        Bombur
)

# gersemi: off
the_fellowship_of_the_ring     (
    RING_BEARER Frodo GARDENER Samwise
    Merry Pippin Aragon
            Boromir
            Gimli
       Legolas
       Gandalf
       )
# gersemi: on

# gersemi: off
the_two_towers(
            RING_BEARER Frodo
        GARDENER Samwise
    Merry Pippin Aragon
    # gersemi: on
    Boromir
    Gimli
    Legolas
    Gandalf
)

# gersemi: off
function(how_to_make_a_successful_movie args)
step_one_have_a_good_scenario()
    # gersemi: on
    step_two_make_the_movie()
endfunction()

Fencing comments will be indented as usual comments (as in the_two_towers and how_to_make_a_successful_movie examples) so it's probably a good idea to disable formatting in code block representing the same semantic level.

Contributing

Bug or style inconsitencies reports are always welcomed. In case of style enhancement or feature proposals consider providing rationale (and maybe some example) having in mind the deliberate choice mentioned above. As long as it's meant to improve something go for it and be prepared to defend your point.

Running tests

Entire test suite can be run with just:

tox

Selecting functional tests can be done like so:

tox -e tests -- -k <test_pattern>

If you are familiar with pytest then you can pass relevant arguments after --.

Download files

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

Source Distribution

gersemi-0.28.1.tar.gz (124.5 kB view details)

Uploaded Source

Built Distributions

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

gersemi-0.28.1-cp314-cp314t-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14tWindows ARM64

gersemi-0.28.1-cp314-cp314t-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14tWindows x86-64

gersemi-0.28.1-cp314-cp314t-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp314-cp314t-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp314-cp314t-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

gersemi-0.28.1-cp314-cp314t-macosx_10_15_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

gersemi-0.28.1-cp314-cp314-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows ARM64

gersemi-0.28.1-cp314-cp314-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14Windows x86-64

gersemi-0.28.1-cp314-cp314-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp314-cp314-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp314-cp314-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gersemi-0.28.1-cp314-cp314-macosx_10_15_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gersemi-0.28.1-cp313-cp313-win_arm64.whl (2.1 MB view details)

Uploaded CPython 3.13Windows ARM64

gersemi-0.28.1-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

gersemi-0.28.1-cp313-cp313-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp313-cp313-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp313-cp313-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gersemi-0.28.1-cp313-cp313-macosx_10_13_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

gersemi-0.28.1-cp312-cp312-win_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12Windows ARM64

gersemi-0.28.1-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

gersemi-0.28.1-cp312-cp312-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp312-cp312-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gersemi-0.28.1-cp312-cp312-macosx_10_13_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

gersemi-0.28.1-cp311-cp311-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows ARM64

gersemi-0.28.1-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

gersemi-0.28.1-cp311-cp311-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gersemi-0.28.1-cp311-cp311-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

gersemi-0.28.1-cp310-cp310-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows ARM64

gersemi-0.28.1-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

gersemi-0.28.1-cp310-cp310-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp310-cp310-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gersemi-0.28.1-cp310-cp310-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

gersemi-0.28.1-cp39-cp39-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.9Windows ARM64

gersemi-0.28.1-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9Windows x86-64

gersemi-0.28.1-cp39-cp39-manylinux_2_28_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp39-cp39-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

gersemi-0.28.1-cp39-cp39-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

gersemi-0.28.1-cp38-cp38-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.8Windows x86-64

gersemi-0.28.1-cp38-cp38-manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

gersemi-0.28.1-cp38-cp38-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

gersemi-0.28.1-cp38-cp38-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

gersemi-0.28.1-cp38-cp38-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

Details for the file gersemi-0.28.1.tar.gz.

File metadata

  • Download URL: gersemi-0.28.1.tar.gz
  • Upload date:
  • Size: 124.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1.tar.gz
Algorithm Hash digest
SHA256 a05086e4b975fd784d562b8053ddd96340cdc64ca092cc63a77c3e6be5a2c43f
MD5 2479dff63eb0b8ce17f04053f6398b18
BLAKE2b-256 24e8089e6b68a3640ca8e16ec99280a4f1b3504865d04f00179b0a1b58d64b43

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1.tar.gz:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 5fc74ceaff654fdfa2bf1d7035a0448923fe0bf3ef8624ffa776eeb7c95c655d
MD5 c7bbab70313e2103069f87c56aaa1788
BLAKE2b-256 15dcbd3e11df0f2d32cf651bc0da53250aac46ffdaba98c21820ee35ca3e0f94

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 8cb1f80fd3e1c505fda0c9a7d108bf6d6ed4aec42155ecd6d45e0d2928f0c9b3
MD5 396b57115f42671e3c83480cbeb54b67
BLAKE2b-256 38bd555e382474070faa5b94805ada08a932670f54da5ecec715bff745127874

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 488b8b6a19a790f0f7b9baf209fcceba67b53abb26bf5b075c2386b00a38d908
MD5 95a00d490b4d568ee564b6a0d955dcf3
BLAKE2b-256 50796d19d5c59313055fe9be3db42b79d03a44864f6d307a1d8a2fda4dc68034

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 79a3bb7214011674b744f6f7dd8c0251ee409563d2404fc17de3eaf91f62768e
MD5 33377f0fde9094590c935b867972d3dd
BLAKE2b-256 a46df95290c017edfd65ed33f89494b40e95d7501af8b82a726aa68b9e7a0361

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c910aae6a491ac2ec283f050010887df56b5ab031824772f5b1775e53ff5949
MD5 8999e0149452169590b60779aceb2378
BLAKE2b-256 8e86014905b9bb527c99d919079710f44863f184c6471e65958570e2b7a84264

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 da1496a1e8295d5631fced27a2f909f7739a74afd418d515fe4d0ca1e902e2e4
MD5 d860a10fb93c2c31f9f2bfd3877f6f4c
BLAKE2b-256 3162f75e2ff5a1d1cd202fc307cd452bbb22688f97bc69644c269bc53d99fac2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 e2ab5e74892d78608c49f93f38b80d16cd3a7a1e206b6adfe2b616dca91f23d1
MD5 f2dee6bdf7e5e61085affbcdfac37f6d
BLAKE2b-256 f220fc7b182d1e290d6ca6dcaf4c599fd40c887299be5a632176d504c9823dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 84d9b57c50e7fce7c1b843bd4a22c43bc2fe7ef9baa0e55bddd61847eb98d5db
MD5 6eedfc5c355aa180322b7faf7898280e
BLAKE2b-256 fda5c5377ed9d8ce505b175554640f99c34a35897ad0a0b4a02e29d157e73365

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 065cf4bc6c9b72f0fe9f0f3da4e2e4fdb97bf3bd419059599241d5e155cde262
MD5 e9899a6174ce025a721dbaa648f24d5e
BLAKE2b-256 62e65cd908c8a2caa47fdb0543d6dbc8655b78a53b83514819d66e7f71ecee16

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 16c4db42644985caf14f66e3f0c525e1d5c4f9cc3f9769987de82beba4d98d7e
MD5 a3980f9a965be3e00ca7dc904371e155
BLAKE2b-256 6848de6f798e573e3d9193437b9effee6fc2b6b3ccad2a1c650e32227c1b542b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd91fcbafa6c8237d96759cc6aa0c56fa0bf84737bc20d144828e493a31cb4ab
MD5 84063790ad4c72b5172b035e6c9ea051
BLAKE2b-256 e53b171e3bd09de04ba35f529c6147ef4870e128cad43d22e2c06f2cecc78504

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 90d9407a173ed5e164c1612b49e25ba822ce52200b04439d2d794c35df9ad9f3
MD5 469af74aacecf64ea5a6666a5d46c338
BLAKE2b-256 c0032d2c8089e4a519b87f0c1cc14ae7d486a4e223a587387b0c64bef9da6300

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 a83aefabab136330c30b36754cab79486926b91d5edafd9f8a936af8bc1dac09
MD5 00409c8a3e6893af3f7d9e07652b56f4
BLAKE2b-256 f0d8adb26b2477d8140ef680d6b1ce9bbd20b66e9dc9566b345d0e2c2b25aab9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed5422ad6b5dd716220ebe596e5b8640913cd31aed43f20f3724a26c23387a26
MD5 ff550e52852628fe2b6e25805ffbb9ab
BLAKE2b-256 2d976668a8ae8906c8b7fedd0276d06ebe604106bea26a0473f1f62a6bf8ab46

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 349c1e057d79d1ca9c6cca687799c2dfa29717c0cb1bde9c8b1329cfba5f59aa
MD5 ac1cac6311350b42ac2ae27beb7ca494
BLAKE2b-256 ec55410b6c2c8fa55761bcdeb844a8d0937ed20e4afc9e70130f18412e4a8f6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9985e989aecd9c87f0b686ab63cbc455a6fd954daeeead5ab8f1bbcd65a7c480
MD5 5dbf6ce931e41586ccc8c50e5131ebf5
BLAKE2b-256 c14e697c9f19e86baca05a2bd8ccc55cd657e9eeff586d5493456808f051ef0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40b524749b9e4c25207cc6a081fc87e4b8ae4907670a7e03464ffc343e800f1d
MD5 6e3c588240e106ef6855334fb38e10dc
BLAKE2b-256 1b8076b867123fb509be9673f8236b5fc2666d8965e6b5741e3abdc03c1246ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8947a380b0899b4a51bf3c84e4d67063d4bc7a7b361191a22e71ef8ecf3efacf
MD5 1cfc4b0a4b4f26b92ac5b36395af0948
BLAKE2b-256 a4561f73db98ef6283abfa67aaaf153fbed22ad8a6cd8a00c7eaa3e764ec8c40

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 73976d0785819b0bd33b7330d151cfafb3b1b0baf5172199e40f3c9a8f58b345
MD5 7cf952dd6bbc30fcaa5a4beb103963b0
BLAKE2b-256 53020b8ea2c313266af75b36748238da8acb2ea06f703b7d685c7f546f31b89c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 01d6b010ba75c60a0e694effe65676e4b1b4c11a122907308163e9ee035f0130
MD5 fb44900d60e7e83793e25eb446f946ff
BLAKE2b-256 0fd9af38cd74c20a81683cdf57fc9eca8db04d5b562ce519b3242be957260af2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cbff148413dbdc6fc1ca5985247f2142fea1f8723fe4d70417fe13750fdade96
MD5 5202a9b070d4b8623ab1c88ded555de9
BLAKE2b-256 ae02c78c084fc7e9103fc06739536b651e9361be89b2e678f055a8ab7d07a659

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 027b5632d8056bfa01c17d1c9462b12cf474c4e929874d654fbd96a78ccc407a
MD5 f80c5b48555557e924db6a62b795377c
BLAKE2b-256 33390bd3aec1cd54c7121b387a6c6c37414737faff97166a7fe5c29e39dd57f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3dc24dbdf17b11a76c85dbe10df694be11130fa9964e797643046a0834fd3c97
MD5 3a8aa2cc40c849efce20768acdab524a
BLAKE2b-256 a87d22a28bc5329b09ec471dbd39c53f315e47293d8c69191a4a3b4fcaf34c54

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c6391611349a199912d7ff5d6fca3c684fe883da65fe87a89627136b17633ca9
MD5 ffa26556cdea76ea36fc3e7c851b421b
BLAKE2b-256 af359ca1aefd7dd01573215130c65eead130138c9b69da2c41a28430a901aa23

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 9e9bb253ad8e2c69c437c83c063aaba161e6dc382f8d7b368f38f385487b97e5
MD5 3c0d20580f9b28c8c3fd24dd797dfaa8
BLAKE2b-256 3e626edac9f9ee683a56f7a4d35baf9796ca937947e0aadee2db0970e46b3e45

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f52fe109a3446264a801b36476005cd2ad3847d357c8f572371af908d797b13d
MD5 9889cc69264935c186d6de555c8551e0
BLAKE2b-256 531b7d1fcc8b27bf62d034d9c3173fd29a0a667df4c88c46a269b59a40440884

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bc4656e383a002c4d6848a2186b7e011bba841826298e4d32895c46602fce72
MD5 3f69d9dc94126a85863cfdb372b78170
BLAKE2b-256 e52e91b46ec7bdb9cce8e4f8940807423777d9ff18c968dbba1857b1ad1c99ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 65c68c9bbe2612f367d2639e96c362256636574dcf17bb735ec88df77300b81f
MD5 e27a5913b622821789180f59929fc465
BLAKE2b-256 79705d3847ab3d99f5a8f547a7846b20d28c2d3153d7db9ad29c641fa7d7502b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 004d204cca216d84554076281363bff44d1bdd687ea15dd055a9ebbcc0fcf029
MD5 1215344ddd8ffff9bb9e8aa92cdc51a9
BLAKE2b-256 32db3afb819c00db9ae9998da4bad60e66e6d7d70f8f995669845cb09b429316

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2bcf1a71b7671de0ecfe1458d5766b158485e4c0cb7301239ac87e0a630da25d
MD5 dde9b585899f942b7845590c62fa5ee8
BLAKE2b-256 133dcc94f20a841c7f826dc91407ce3e1a204a509c0a1d67e6241787ebc5f4fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 ae66048214c85b8c269b6afcdf78d24f40d606511c6c4ac31fbede261b2d5a89
MD5 584f18d0d223b343f4ff3bf9bc4a8b92
BLAKE2b-256 a1b2caec81703c9dd1f6c6ba1f499d7ac128c17e23968c65898d5a0b25e83616

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8394293726abb101e32a5477f22c0cf8f4bc5bfa4b88a781c770453c931c3fbd
MD5 d433c1983d9bcdab084068454e482112
BLAKE2b-256 db68765a941d4a5fd5ccac6b94a70f3874cd9a77f9f94baf0c7c77bd9b42d3bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80446caf163e66c7b95abfc6ab0f06f6bcd90b7628c652788d34440692d7668b
MD5 747ece4bb38ecd17f21a1d604b1faf0d
BLAKE2b-256 85f84314dce4daed02b36020f11ec52515ed663148d0a15739bf893acbbf223b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c6fe0acfca67b71527c0886ac4bda634e8a0f8e705bf471fdd91971f5683aa86
MD5 3f7bc6856273f0a7e7b013a3bab8da37
BLAKE2b-256 0bb93faa93d798230349f5cc0b0f4dae65765b60bb92e2bf35f016f183753f47

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f80106d4eefa71f02a7de26e2cc299fd3609c054dd36c3cbc8493457392a7e6
MD5 f4ec9fe5cafee846cdc6fb436d96c2b8
BLAKE2b-256 ce0324e2912b8e24e89f8e098cc5195eb30c4d8d088e622fbe8098db99913194

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e5bbd948807a53309c176f299681ea6b25c0799ead7a3cfbc8f1f166731f4d63
MD5 46c8efe28532e8df08090ac5c73c8582
BLAKE2b-256 33d9c4033f1926256d3971b5af6dd7b43f40b26fd817bca2cc066fbb8bbb2ade

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 dff7ab46b1160f0884b64eb8ef67b8f2185b545c0270d8c5e7cb6741193776ad
MD5 605d300cdb1660ad5acf9d9f421b9e70
BLAKE2b-256 b900f9966bf4bb86cdd53ddeb9ac2aca8c6726aec2be639a228fa1117d011835

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-win_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ba2925632af32c221819110c64dfb9f0894b02cbfa5fb42fa592324e2e912e78
MD5 15f3db0b97cefb22abc9bc156c512075
BLAKE2b-256 49d3f796e06df1c867dcc93f6562c4c8c5a988dabb81bd9a0891e44dc1609f66

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d671d21dfcba35b49d0f60145e3ab81681ce0fc54b955c0e4140a47a4d797b89
MD5 bf7a7142b193b85ec41ce501af4efe20
BLAKE2b-256 a79afe583d25b82848c5c146cb23469d9dcba664145f2bf14d88e7bcb85b61ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da8c256681c95880f6192d09198d6e079831a59d4fbec10f3b1f8a45daef3b94
MD5 940e8b03327f5cf971fab4358ab986ca
BLAKE2b-256 14aa4145aa7c34b80ac2120d1d01dcfc61f58d1cac8d6651d9cc2e28743ebbd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f12ff6fa2605ddd49ba059e2bf431b7c0ea915cafde6220a2bbdecf5c8e563b
MD5 975cabf4c43ee08173940101cc06d0e5
BLAKE2b-256 16c892e7c9cf69981977487464d75b3ad2733ed89cc5882b46e3baa818baa31d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aa66e6f94171c7529e19336362787fe689708f2708594b39622fdfd0b17d6d6f
MD5 30f52261a89cca0510bba54926b2bb76
BLAKE2b-256 f7dc44fc941df4c2c5e1e9a001862dc956f2c243e10c737db146644c5ce37d66

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp39-cp39-macosx_10_12_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.28.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gersemi-0.28.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a98a3a4814cb868f081bfcc700ad74153d5c56e8b11c7bd76ae4c43cc6799191
MD5 940054ea0e4c4494f47ade46526b66e8
BLAKE2b-256 05f27e6bb8fd6c883f72dd4b401332ac978614d0b669109ae21204cea1e50c9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp38-cp38-win_amd64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08c8219e64f61eb09051c9266c4012af754e75068f2109e2bb0dc68bacf93748
MD5 3083156c1f4c14c9c838ec6058611ac3
BLAKE2b-256 665e72c71e9097b44976a680beb402023eb960c6eb9f765926e0ff6e1f0e3bd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp38-cp38-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b4805c4fda46f6a856d44323216037f869fec8c7ef377795cde2261593fad0b
MD5 698c32e725a16f40f6683f846f16d622
BLAKE2b-256 3704b268814538a3851aa1888eb16652a3a536dcadeb27dfebe59806b327f7fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp38-cp38-manylinux_2_28_aarch64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b919889b61b1caf5aac6e8d64283aa3ba2c59e31eeca2d523e75d162631f3739
MD5 de73d8a25121b3c68893a121a6efcd65
BLAKE2b-256 3435ad1142b75a74e9cd8c99907f9ebba509866af9b86d3d4fc20bb59224eb1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

File details

Details for the file gersemi-0.28.1-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.28.1-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e5c92b091ce5ea6d92e12b694736f095ffb9c7f96af47dd92609a280c9f29025
MD5 e5faad83ae9b8a8ea139d5f76c9d9327
BLAKE2b-256 1b564def72bc8da3dc5e27e49f92c2dae1c8ecd73ebc649d8b816e6085572f25

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.28.1-cp38-cp38-macosx_10_12_x86_64.whl:

Publisher: deploy.yml on BlankSpruce/gersemi

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

Release history Release notifications | RSS feed

This release

0.28.1 This release

48 files

0.28.0

48 files

0.27.7

48 files

0.27.6

48 files

0.27.5

48 files

0.27.4

48 files

0.27.3

48 files

0.27.2

25 files

0.27.1

25 files

0.27.0

25 files

0.26.1

2 files

0.26.0

2 files

0.25.4

2 files

0.25.3

2 files

0.25.2

2 files

0.25.1

2 files

0.25.0

2 files

0.24.0

2 files

0.23.2

2 files

0.23.1

2 files

0.23.0

2 files

0.22.3

2 files

0.22.2

2 files

0.22.1

2 files

0.22.0

2 files

0.21.0

2 files

0.20.1

2 files

0.20.0

2 files

0.19.3

2 files

0.19.2

2 files

0.19.1

2 files

0.19.0

2 files

0.18.2

2 files

0.18.1

2 files

0.18.0

2 files

0.17.1

2 files

0.17.0

2 files

0.16.2

2 files

0.16.1

2 files

0.16.0

2 files

0.15.1

2 files

0.15.0

2 files

0.14.0

2 files

0.13.6

2 files

0.13.5

2 files

0.13.4

2 files

0.13.3

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.1

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.0

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

1 file

0.5.0

1 file

0.4.0

1 file

0.3.1

1 file

0.3.0

1 file

0.2.2

1 file

0.2.1

1 file

0.2.0

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page