Skip to main content

A formatter to make your CMake code the real treasure

Project description

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.

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. Colorama has to
                        be installed for this option to work.
                        [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.27.6
  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.27.6
  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()

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 --.

Project details


Release history Release notifications | RSS feed

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.27.6.tar.gz (110.2 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.27.6-cp314-cp314t-win_arm64.whl (825.1 kB view details)

Uploaded CPython 3.14tWindows ARM64

gersemi-0.27.6-cp314-cp314t-win_amd64.whl (878.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

gersemi-0.27.6-cp314-cp314t-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp314-cp314t-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp314-cp314t-macosx_11_0_arm64.whl (940.4 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

gersemi-0.27.6-cp314-cp314t-macosx_10_15_x86_64.whl (989.5 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

gersemi-0.27.6-cp314-cp314-win_arm64.whl (826.6 kB view details)

Uploaded CPython 3.14Windows ARM64

gersemi-0.27.6-cp314-cp314-win_amd64.whl (880.8 kB view details)

Uploaded CPython 3.14Windows x86-64

gersemi-0.27.6-cp314-cp314-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp314-cp314-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp314-cp314-macosx_11_0_arm64.whl (943.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gersemi-0.27.6-cp314-cp314-macosx_10_15_x86_64.whl (991.5 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gersemi-0.27.6-cp313-cp313-win_arm64.whl (782.7 kB view details)

Uploaded CPython 3.13Windows ARM64

gersemi-0.27.6-cp313-cp313-win_amd64.whl (839.0 kB view details)

Uploaded CPython 3.13Windows x86-64

gersemi-0.27.6-cp313-cp313-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp313-cp313-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp313-cp313-macosx_11_0_arm64.whl (943.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gersemi-0.27.6-cp313-cp313-macosx_10_13_x86_64.whl (992.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

gersemi-0.27.6-cp312-cp312-win_arm64.whl (782.9 kB view details)

Uploaded CPython 3.12Windows ARM64

gersemi-0.27.6-cp312-cp312-win_amd64.whl (839.2 kB view details)

Uploaded CPython 3.12Windows x86-64

gersemi-0.27.6-cp312-cp312-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp312-cp312-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp312-cp312-macosx_11_0_arm64.whl (943.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gersemi-0.27.6-cp312-cp312-macosx_10_13_x86_64.whl (991.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

gersemi-0.27.6-cp311-cp311-win_arm64.whl (784.2 kB view details)

Uploaded CPython 3.11Windows ARM64

gersemi-0.27.6-cp311-cp311-win_amd64.whl (840.3 kB view details)

Uploaded CPython 3.11Windows x86-64

gersemi-0.27.6-cp311-cp311-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp311-cp311-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp311-cp311-macosx_11_0_arm64.whl (944.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gersemi-0.27.6-cp311-cp311-macosx_10_12_x86_64.whl (994.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

gersemi-0.27.6-cp310-cp310-win_arm64.whl (783.9 kB view details)

Uploaded CPython 3.10Windows ARM64

gersemi-0.27.6-cp310-cp310-win_amd64.whl (840.1 kB view details)

Uploaded CPython 3.10Windows x86-64

gersemi-0.27.6-cp310-cp310-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp310-cp310-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp310-cp310-macosx_11_0_arm64.whl (945.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gersemi-0.27.6-cp310-cp310-macosx_10_12_x86_64.whl (994.3 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

gersemi-0.27.6-cp39-cp39-win_arm64.whl (786.0 kB view details)

Uploaded CPython 3.9Windows ARM64

gersemi-0.27.6-cp39-cp39-win_amd64.whl (842.7 kB view details)

Uploaded CPython 3.9Windows x86-64

gersemi-0.27.6-cp39-cp39-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp39-cp39-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp39-cp39-macosx_11_0_arm64.whl (948.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

gersemi-0.27.6-cp39-cp39-macosx_10_12_x86_64.whl (995.7 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

gersemi-0.27.6-cp38-cp38-win_amd64.whl (841.9 kB view details)

Uploaded CPython 3.8Windows x86-64

gersemi-0.27.6-cp38-cp38-manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

gersemi-0.27.6-cp38-cp38-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

gersemi-0.27.6-cp38-cp38-macosx_11_0_arm64.whl (946.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

gersemi-0.27.6-cp38-cp38-macosx_10_12_x86_64.whl (993.8 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for gersemi-0.27.6.tar.gz
Algorithm Hash digest
SHA256 5cd2d0aa57638384e9967994953d29fd43009541f2e6010139a48c98260eb055
MD5 d56655ddb31c997ff1a1bd0effff1ca7
BLAKE2b-256 12575423766eddb6f73a56e57e3dc09f863c8298493e2f7a7654d1f595fb3d17

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6.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.27.6-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 825.1 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 2dca3ebdf17c454bdeb8009a05db48fd0695db42d5c9c3a36aaa5a9e9675773a
MD5 7c91f0eb2e1662bc6a608aa19e68a4a1
BLAKE2b-256 a48642b135a96bfda503fbd9205344156d9cdec1f2e385809492c0f961d69810

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 878.6 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 3471828d9a563491d1284148148705534d1853963c2d7a747024a03985df645b
MD5 17142a852ac0ab52fc77898fc67578e7
BLAKE2b-256 1c2b822dc9d9c8d0047af315c8ea8bc65494b6ea20d5eebbfb77f5d6c33c1498

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 718a7ec1aad2edd413c616e0e45b1ed5cd0d127311f2e55fc4b1e008c474c8ce
MD5 6465a70f7f17e98695f2a90740f1b441
BLAKE2b-256 c136a02b09efd65a3573483fc85d3e9ec8bfd3cff65aac60cdf1e22b2fa5e746

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0275b2482c9db70416a14309909f0b921fce9bb2edfd47eb9a33b1a14eea78a
MD5 89b7169736e196cf978c3e3fe257fb07
BLAKE2b-256 bb1e9724a7f47b3e4c0f696f3bf50fc9911c841a97968910c8c8b8e336eb553e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de45ed0bd5efc7148b9cfe2bc192c5e5d4705d4f1e736e7bfacdc88d44060dda
MD5 f20960c6003549aa246bcaca4fda2b6f
BLAKE2b-256 efc8fb65c8f8fbdd6f732ed4b14316bf04e3c6dbd9ec0643ca62802d4b1fc935

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 dac4c9fd670f2904064ea985827c1bdb511963cbebb28bfab88c32185c4fb50e
MD5 09a01d4359efcd7e9b0edba80e883e13
BLAKE2b-256 2526e62698498267c72b0e135e51d6a1c109ddca595b2f51341140d06970b73b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 826.6 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 2a2262bc6a53c3956a15adbfa05c49cf64a1bccba3f23f4656e11e4564080425
MD5 5d113b1babbedcd508f62177f24f86f4
BLAKE2b-256 039b01848892cfed5d203326fdc05444a8277519c1834995b284dae7dd54bed2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-win_amd64.whl.

File metadata

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

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ce9c06b07352193baec89420f8b8801d631691f64337397a08c5ed9c0dc25985
MD5 657e586e3eae7dc159057e53ff59b7a1
BLAKE2b-256 a845f461a5825a83bdcbbc81d888e185f272e563d7a06ef05d53897ddb22a29e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32b820e38bc99a3b1145a8b4c9993e8b35b479672f4e9572184804fa70ca00e2
MD5 f588a4d134219394796985e1db294995
BLAKE2b-256 0379a4b70de518c077df8ea695a691055fc548ae53e7c5e63e4879a14406982b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 467da212831a5dca19dfe59714d8f33ab9c11ef353da43417a3aa3ffe9ae977f
MD5 0e4ff650dc1cfaa6e08af325659141c5
BLAKE2b-256 d4fff6132844f373e7827784bf92dc88cdbc6287b9eba19e2d761c16cf27f570

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 120d06c38a92b10f0f5383de3a83680416fa05301ab60a5685ed9d400ba97b29
MD5 acf561e6ccba282822422f9b9270637d
BLAKE2b-256 09acc3b5f2d90be6a5e7804b2587fca3b1b850a8ee4c9fdef410a52f811cdff7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 97469cec889377c1b4f9010da51cbf62eb69c86a480441de2f3fa514bab74bc0
MD5 1778777d0afe940887b758838a96c960
BLAKE2b-256 a1e1b06a228594d9d08b192badf69f79fb9cad3c09c3cfb582f50247368873c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 782.7 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 35c4475420924812a7260b4f19d353dc3ea93d03e8a37a044467f8e1099289e9
MD5 447bb5ef884a7944d770c28dd3303032
BLAKE2b-256 42a2c8ddbbd0afdc81e49b72ba97d050b5893d671ff1447f22eba73677041aa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 839.0 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 gersemi-0.27.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ac330f18224b4ca62192f66ec0d4d1c1c38ca3dea96788359f2e415a9dfbd43e
MD5 cbbd0a986df7d5dcd401d686077775f9
BLAKE2b-256 1249fad713177be41a58f7ad38a4f03745fc0f8b9f880b2895dda05258c45dc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1af467ac6ed4e24ce0a58410317bee725fde48a029812d6eb37d656b839a62bf
MD5 1b0432cdcdb945f902aa971fdf7ff1f8
BLAKE2b-256 7da8471790d96613d3eac249f44be4fcdc7bf804801c9225ec41fe2c092ce804

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7ca427cf11251e272115b4052891ac806b94b81f9f578cb6d479a2ab9d1fb9fd
MD5 7a646ff3bd8f2a9e38c8f78acafb5b8e
BLAKE2b-256 debbf7d3a22c9af9909056b893ef25526031e641f0887f53360743b062bb5a92

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ad7d77210ac194b9eafd3e6fde98b437b5c2959b7fa35cb58bad463bc00c0c4
MD5 dd7391ecf3bcad58b4c3b16116ba5e65
BLAKE2b-256 083d4aaabde01a0dd406a9716fc7fe2e5040419248733467166fb206d123af9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d60c82e17690fe4e90bf5290537b79b647f82868c88f251bb1767b8ccdb7e461
MD5 882978f0d0b23f75e0420576b5fd9e54
BLAKE2b-256 3d6085206badadd61893be3b31671615914a981ee18b3a2d5122b5ebeaf13ba9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 782.9 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 a5b14473d476cf58e56547818811561fffc177eff48f30f0fc423eafcc5a3b9b
MD5 f3b7349a10bdf53c5319744ebe2db28d
BLAKE2b-256 9725b23e86c59e8d7f0ad687a2bc603d46be917d041daa52f6baf336a0f7239f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 839.2 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 gersemi-0.27.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 80cefd64d58707022b613a2b78e5f80c03ed2fe9ba360a175526af2da7956ba4
MD5 1e79d9f15d857e8667756cd0e801c5a2
BLAKE2b-256 98562f7cb6c68e46f6d007fd5e827110446845e49a563979d38aaca008303f52

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1d27f30cdab0d1b42b8a0ee23c377c7599011295fe269a2ed9c1cc3ef19a973
MD5 c9d01db5c843312aa551b7d4f34096a0
BLAKE2b-256 7005e5a2eecf23386271fd0fa7e764b38b4bf4e4002b8f8d0620df1350545b8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7ef00ef45c61da3dbe46fcddaffeec775d7972739706391040b52270e3c4fffc
MD5 007fe9b751dc3f1948c9860ca85da894
BLAKE2b-256 9ec71e1ea114f0811412b1fe998692e83718e890949826e4bd483000c4d1d89f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b64b6baaa731d5d78dadea33d0f2fa6978ca9895d699b2c56de9468779836b4
MD5 95865e9774b95a3e7911589e97d6153d
BLAKE2b-256 49ceaeadec6e4e28c1a7fe43d265de1083534eb6b207a808363ad797ccacb481

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d33bf846b2701f6dcd050f44f74a9ffc3d9a09197cfffaf921e7e964b3dc1774
MD5 88cde0deea899319ca43c258999359ef
BLAKE2b-256 8fdb02baa3f45a0c3ad5f2495cee4c450949da08fb0d769b9018845e6c47728a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 784.2 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 aeaebec0c06660274bf5978bbb954c35a63f1845472d791dd60770468867a05e
MD5 cffe91b0333ce0eac3862d80f21b1d72
BLAKE2b-256 958ce352b0f926dcbdb8184ac23323670aade21de3a89af20466fdb198873cb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 840.3 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 gersemi-0.27.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9829b7c9f356d2a76666c6f69e2a364ca8b7bfff73a179fb3ac60dae2ea495d7
MD5 414401cf9d51d33d28a5229e6ae1403f
BLAKE2b-256 3bbb769ce264adc050fc945c2ec8f7d1ce9e4f1074910cf2cc83830e91fcddfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e821b443746ea5b87dace27661975e733f49b35cf2282d732929dc4aeeee72a
MD5 9a2092d43640b5ec0925cff25667678d
BLAKE2b-256 e0c470b16c41a43ccfda1316c9d3b7b3fc1ea0852599e45b564da05744eb793a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a2c17e6d26401b95e4a72b841675c8e5025149e4c0d56c80d04e3a850256b95a
MD5 183ccf0cab71cc84e78b4606d138d3b9
BLAKE2b-256 af1079a4897518b1cc3034e1573efe57745ef43b0011926f83964c49c8a0e08f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3557c92e2bdf2417429cf44d2eaef268dce185380b098b5719e467a6021a23c5
MD5 4f2668476ef4741894a4a4ff85ed96b7
BLAKE2b-256 6f95926018681958433f85ff738a11fe9b715b0dce2c6526066543e1e54813ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd1882ad59d2e9c04d74c4985d70c1770b52274b4532d59c05fb7280a1d77fb0
MD5 45946c915b2c1312744ebd9aa1fc2949
BLAKE2b-256 19d6542ac6d3425af6a069c6583b79e378c7a97d1ef31c8277b9ff6df98044b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 783.9 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 f1ee932f4e44cf74cb18019d4d427dcaf735ef75c7db3c844e922e0bc8be1d7f
MD5 f28b191de1c218aec39db406116b05f1
BLAKE2b-256 df7c6abc9fdb0e28d4cd331e848f65cf09da7eee74cb4a342215a729f4645195

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 840.1 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 gersemi-0.27.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d9e6e05369934858e5d65f5bd0ab0b4a5421b8429d0d00fa2f2cc4594ba79f3d
MD5 7db8a8cb4bac9f197e2d0a5e169e9370
BLAKE2b-256 089beb2a382ee99b1a1ac9b09da8eb803a07ffe4dd3d0e1375729f9306fcaacc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4f705eeebebdad22a3380cd2a2788a70d3ba8ca355c1fa94cbbafe1726765df
MD5 c548bc5bf76da4aa2eba5d77ab256452
BLAKE2b-256 9b4d5e0e5d93008634953e4c8d6e58611fcbceb85d805e45fa857332f925a8ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 93b677f5ccca032ad9c079ef2cbf8ae9508ed52464f9265ee1ee7df6715c7352
MD5 ae94e60713d8183ee6715a7bf18a1025
BLAKE2b-256 9dd6a2431e2fedb8b55127c353743f248fa42229df9af7b7b0208e481b22d544

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62f1bae675988fb6b6d35089c41993e9af315a82cd7693f1ebb9f459dfade3d4
MD5 88475c447260ab7f4b85fc6997cbd52b
BLAKE2b-256 99ab8411f76ddd10e700bf445d39dcf37b8249c8c944e0bb0e91e07b7fade047

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d61fa220b3d6f9803992d1bb0d46ef930742d989f5f188d7c492422204bc24a5
MD5 0fdf29d8a476f325fee274fc0f3ebf9a
BLAKE2b-256 0f6bd11d2071d432d66457b10bf6903b448fa19178b08a715234ad6ad62f9989

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 786.0 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 c787fb8904217166ef6612fc1ba0423f11eaa90b1db2851cca5b833021be14ba
MD5 1861050ea6339e60913493ecbaa524cd
BLAKE2b-256 b88c41c8feab49b22791631c5d4bb6d0a68cac4200b6922b8fbeacce24db5ff1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 842.7 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 gersemi-0.27.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d01e16277852e5228d013dcc4697fde95b7f4b198720b9c319389db714deb7f9
MD5 a545ae0087caf408e4ade66cccd2065d
BLAKE2b-256 52b801bee62ab8f12c24e53d9d3942969e5d4850b0fbe34f72521b94fe97df1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c09c2721954b1c2e1e201727b4c37adc8598c0134594f6592ba241ccc12bdd9
MD5 aaa3497b102ce71c21ec6624cf7ebfe1
BLAKE2b-256 49fb31f44656952122e1dd151e6fc72637b1a5e56af55f747cce456666d4bce8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fc92c9f1ec9aec18ca35e6f3f02a3da8f1084715e61b7960d298001762bc2421
MD5 2fd5f19705766bdae55e75092cc56282
BLAKE2b-256 6b4ccf4ec06dcd81894caae81e04357e7b52334ccca1166597ce15d80639c693

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74986f935fdac4d6b474ead288674ac4d21bf8b8dd9a628d7f06d0ee22395aa5
MD5 3f8047e863c7f7f441167d7243a624ee
BLAKE2b-256 bdbe9d0ae4a7673cd0373911c535790f85b13c616018a4281de985332f67d04d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ba595b30dde072d880128c47aff3e38921a8b1dbd3b118b26aae9b10d68ac455
MD5 da63a413c49b3d6985708067c15ad0e4
BLAKE2b-256 65372fce193c85682131810f2e1456e2ccf52e41c24a567fb421ea2a41b56b26

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: gersemi-0.27.6-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 841.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b11a90e4f723a0822b71fd628b0efb7e976065ed2c3b7cf99362833e27297c89
MD5 b7adca61e54927bbf42674b6906e703d
BLAKE2b-256 d3db46ef893419d95e0383f729aa5fe84aaeb528beaecf1ec001a2fa4ff08117

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 72f8020b5e862158b354509988153d0bc00eefc5784f80038a20e1cce9285ed1
MD5 84a99a8f87248fe7cf8c1308ccf7047c
BLAKE2b-256 d5a3a45e4b7a71f0db8a75aa54d408e418d5490ce5b34114754848f35fcde38e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c7f611383e5c984fa4f3d18710c7d508e0352e40b7f7c3f06d596e48d80700eb
MD5 89a8805ed5ec3558e0da9393df3e2998
BLAKE2b-256 0d12c5a9fae783e2e8e003358f3696f34644e0a72c1d14c32d7e88dd2bf7e78c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad9be873d5fa398ca9dfa674d25f7dd16dc0466c39b6bb7640f9110e9602ea32
MD5 9c27c00eb6ceeea5f323a46e1702c69d
BLAKE2b-256 41ee180e5881a5e0c97ec4f9a0a0a480b9c84812627a04328d0319c0b6c6b0aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.27.6-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for gersemi-0.27.6-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f0cd4587b7fc2b448a35b3c7f54b82874a6c6499af4ac44716a38d67ea4edace
MD5 d3e6aef202907d6414bb3d28943c1879
BLAKE2b-256 2bc7b11420deb7aba9ec28941dcbd927f6876bfeb6650e183d317393ae8b1285

See more details on using hashes here.

Provenance

The following attestation bundles were made for gersemi-0.27.6-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.

Supported by

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