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.4
  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.4
  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.4.tar.gz (110.1 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.4-cp314-cp314t-win_arm64.whl (825.0 kB view details)

Uploaded CPython 3.14tWindows ARM64

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

Uploaded CPython 3.14tWindows x86-64

gersemi-0.27.4-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.4-cp314-cp314t-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp314-cp314t-macosx_11_0_arm64.whl (940.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

gersemi-0.27.4-cp314-cp314t-macosx_10_15_x86_64.whl (989.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

gersemi-0.27.4-cp314-cp314-win_arm64.whl (826.5 kB view details)

Uploaded CPython 3.14Windows ARM64

gersemi-0.27.4-cp314-cp314-win_amd64.whl (880.7 kB view details)

Uploaded CPython 3.14Windows x86-64

gersemi-0.27.4-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.4-cp314-cp314-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp314-cp314-macosx_11_0_arm64.whl (943.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gersemi-0.27.4-cp314-cp314-macosx_10_15_x86_64.whl (991.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gersemi-0.27.4-cp313-cp313-win_arm64.whl (782.6 kB view details)

Uploaded CPython 3.13Windows ARM64

gersemi-0.27.4-cp313-cp313-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.13Windows x86-64

gersemi-0.27.4-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.4-cp313-cp313-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp313-cp313-macosx_11_0_arm64.whl (943.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

gersemi-0.27.4-cp312-cp312-win_arm64.whl (782.8 kB view details)

Uploaded CPython 3.12Windows ARM64

gersemi-0.27.4-cp312-cp312-win_amd64.whl (839.1 kB view details)

Uploaded CPython 3.12Windows x86-64

gersemi-0.27.4-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.4-cp312-cp312-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

gersemi-0.27.4-cp312-cp312-macosx_10_13_x86_64.whl (991.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

gersemi-0.27.4-cp311-cp311-win_arm64.whl (784.1 kB view details)

Uploaded CPython 3.11Windows ARM64

gersemi-0.27.4-cp311-cp311-win_amd64.whl (840.2 kB view details)

Uploaded CPython 3.11Windows x86-64

gersemi-0.27.4-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.4-cp311-cp311-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

gersemi-0.27.4-cp311-cp311-macosx_10_12_x86_64.whl (994.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows ARM64

gersemi-0.27.4-cp310-cp310-win_amd64.whl (840.0 kB view details)

Uploaded CPython 3.10Windows x86-64

gersemi-0.27.4-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.4-cp310-cp310-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp310-cp310-macosx_11_0_arm64.whl (945.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gersemi-0.27.4-cp310-cp310-macosx_10_12_x86_64.whl (994.2 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

gersemi-0.27.4-cp39-cp39-win_arm64.whl (785.9 kB view details)

Uploaded CPython 3.9Windows ARM64

gersemi-0.27.4-cp39-cp39-win_amd64.whl (842.6 kB view details)

Uploaded CPython 3.9Windows x86-64

gersemi-0.27.4-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.4-cp39-cp39-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp39-cp39-macosx_11_0_arm64.whl (948.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.12+ x86-64

gersemi-0.27.4-cp38-cp38-win_amd64.whl (841.8 kB view details)

Uploaded CPython 3.8Windows x86-64

gersemi-0.27.4-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.4-cp38-cp38-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

gersemi-0.27.4-cp38-cp38-macosx_11_0_arm64.whl (946.0 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

gersemi-0.27.4-cp38-cp38-macosx_10_12_x86_64.whl (993.7 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: gersemi-0.27.4.tar.gz
  • Upload date:
  • Size: 110.1 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.4.tar.gz
Algorithm Hash digest
SHA256 b005073af2e3777b2622949d093fbe0ddc2b376a4e78b4a14bc2468083c7ba25
MD5 633da5eb079038515cff40363a93284d
BLAKE2b-256 a992772da571b13f6c4f2f6cc7c5ab952adc613e5befb9a994e7e9195b64c898

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 825.0 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.4-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 a655e303026e504d2e70e21a97c5988562f9c058fa8f76b63073a19e59e955e7
MD5 30a1d28991c00065f1f55702d987450f
BLAKE2b-256 a36aa3e646ccc7b4b9f69afdb3591029a4f2bd45431017eebb690ba14f85d6c2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-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.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 82084448b2281898151fff3c1fd1fef1f6ea51f2c2593b40bb5762f5395c3e65
MD5 d723081e23cf055e910b1e26f6ecf74a
BLAKE2b-256 a5befc68eb195f7a21ea9c52eb9ad1424e36f9ef2747ec9f3f7504811d8ce407

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0c0674a8d2c7f93d00eb57fea5683502e262396512245ef5245f74e176557d4e
MD5 67c94d320eaf9375813eb27eac4a8bf0
BLAKE2b-256 4082b320f0eacab224d8662ae2c7a79893a36dbe4a1f897338dba717ad5e33ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 155db1a956cac8f0cc5b65b1b4bfe23ca4efe8ae91f5531278685a1abdae587c
MD5 564d8fd74a374860911658fe5f6d1a79
BLAKE2b-256 11e2658339018b85d5e9f63dbdf305767400a84313c931af467048c80027f489

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45aaaf49c46487da591e279ea0b54f89bdcd3f77f0c9dfc77bf30aa07289109a
MD5 180f6de5ab6f16764afa3e027c6a0a44
BLAKE2b-256 a16a124f542d65b9e821bf265378a36befe877b072ecf397a839e743f6c3e8ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f1e6860a81b5a07576e042b2612749a522d8db0a8eb1704b63b35e2646fd2375
MD5 8fd6386faf96bf8bc37fa316de4928d4
BLAKE2b-256 2e109edad0a0c15c2c217edba27daec1ab21078a84a4807e71b7fc58b7cd60b4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 826.5 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.4-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 10c232ba00fe0c5398a89c37587c73a3d03fa50bd2b66c77536166ee6e304359
MD5 6bffab96e8a7b1d2da4d174631b97b61
BLAKE2b-256 f51d7d1f13266fe4a4fd408c9f5f356f8ab60e6efc8f1478026f8560cd35af85

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 880.7 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.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0267c80fb50c5bcb857f8b2da0481074877336c42b619b63ef1d180974b5b960
MD5 b0cf6b9e2f9ee046cfdd6c2cf0712989
BLAKE2b-256 cf075a66ab29bf4eec12a61a778e9973ebee3928f6a66dcf588aa2f1304b989f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9b71a0407d24710619181aee004c8f987568463e687152d161051d2fae8c6cf3
MD5 925bd611794639f8cec9ae0d7300e7ae
BLAKE2b-256 4eff475f52ccce1b73ed8c099917d3e82125a750929a5ec142d6864a4059a500

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1513da84e0a1d733923563b7b2badfefbf4477f3245c19fe521752e2dd66520e
MD5 877a7a6c572660bc2919ade6616ceff8
BLAKE2b-256 ec3a6ea908433e62759e3c007ef666400efae44b49edc828f71f70366bb3cccb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df712f6b8b1a409e948230e18726bcdf14330b4eb80681839461d493f4d3e13e
MD5 71e3dd2c7af97796316eb769424367c0
BLAKE2b-256 d6b07c6c46a5317f7ac02f454bf76ce9e738fb9dd5b90cf77e4ae6423409c368

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 98643ec77f99ee02fdc00801dd4a73887d230fb1a95e0879df353610c0bbdce4
MD5 7ba86af1ff51c793e0726ba638f71bba
BLAKE2b-256 f3a9a5055b506560277289b756a5c40dbed1dcbe23a3f1e5f425077e5232af79

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 782.6 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.4-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 f5e57702c78bc7366321f18f7bdc5dd9aca15165f2a7c468391d8cf727bcea54
MD5 db6ae64e7b7265d9ea3efeea501c65f5
BLAKE2b-256 fbfcdd27ba5c43d9fc027c641080006f0f3f123166a94b3460dcf4655ea60fcf

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gersemi-0.27.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c6588aa745c32a0f29bdbef100c0e28317aac1722bc568ed2c8885b5b7febad1
MD5 c3027454c26aac6eee874a1f764aa674
BLAKE2b-256 3013e9ea15d39be2246cc8bf499a98dc3e384214c8a739a25371447932adbacd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1a61422f2003f111053af4e55729472bd355c3cd035c77753bc13256107c8e6
MD5 971834365074011e9b3effa246391471
BLAKE2b-256 92a8b09e0c0787c618b1c5bf7290a0efe2d05e945553a29440bc68f3415e5501

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4ad2e17f5edd29478066f44466668839b0a97123ed54dfa10cd3147a9a0e28b
MD5 cf2419507bdcbb358ee21825d7878458
BLAKE2b-256 4ef1ef72f95a3ffaa357d7ab03debce207a96b971c5cac34f18c1c6689450791

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 66e8cf120f3b0c174d33c4e0f560b352e48a2b2524ce0c6d698bf59166ae3b3d
MD5 2724c169442ae274794107eeb8415778
BLAKE2b-256 de5fd0adf70ecbf239d336b8341edf2beaa4fa9c3071862c786e47ff5ca6f6bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1869629684a07346949326060a76ceed342fdf7057b032b99f144dbe4bf6819c
MD5 a6434a1bb2bf8996b2f88ca2a1dfcca2
BLAKE2b-256 1b0cd2b436f435f2075f1dd76f495b866b8738692a7009a038479985801ce914

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 782.8 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.4-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 b45aabfd006befc9300c695e18cb53b889d2c90beef5d99159fb366cd28aaf0d
MD5 8bf95e53e431e347da6dfc45cefbffd8
BLAKE2b-256 03c0d93f3b4bb3acc684e57e3bd86798c0eba78882d3c6868d98d8eafa99e34f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 839.1 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 62cb6e37cadea541b22b510e518e30e26664dffb470258746fdc342154765072
MD5 973886d96a567ada746cb3b8eb321489
BLAKE2b-256 fd985b7a4378c094ca88efbb96c32c190ee9da5591bce9274303e912e9eaada1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2279eefcbfe01f7d8e4c38f024e75eab5d6a17867882f8407d0f72d03fabe5bb
MD5 c6ef962c768306db059e19cf72ccee17
BLAKE2b-256 02e0a924c84eb0879db2d37a001dfff712ce1e6f9baec68db998f3c774e22033

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d30c5975ec1453d78a665cdc20502f7c4359a6778f0d5ce3369fd2e1c024202
MD5 bbcad87d9003a5015f8c1be123dc72dc
BLAKE2b-256 bf6cdecf357b1abb847ba0ae39ebbfaa7ca916227e2c9be10040b9954f9a5744

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fdcff334c9ba512b01b8e2afad192f925ecbafa5d001fccb509f9a103a07faf
MD5 e15a8a885ce40df35cffbad7948848c7
BLAKE2b-256 b204999574eb8fdf5b76f9792944183de671fd1bb19d8a807679ee5566d17ed7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 19bc17febcc34b8c397813873c7aed715aae79ac601eb431d50db4c8dbacb131
MD5 a1464d07db6b42c589f473f1208e92e8
BLAKE2b-256 fa7875360cdaf0730ba441107cbcab806af108825d5e2b61242b17d9142fd5ea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 784.1 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.4-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 625e39f8ebbcf679f77810e0dc0df6651961a8ca5fe6cb78b39474315d56e38d
MD5 1103696c6920cef6b00391c870863ade
BLAKE2b-256 b6e373e894da57a8b880bf525dca02539906f51fd0e8f1e1a648da1d677adb7c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 840.2 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c66c384c0cd1b52eb6072746a9c940a2fa44d1442d8fd3e6a5c2ba7fb78d4c9b
MD5 2cc20a08f2c5c8e702d1773bec448ea2
BLAKE2b-256 4aecd2b1cf28f984f2ada64a89ca21ba4bd57b367b3860a0523fd9734c34802b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0acb36f2c4bdf0aea11a8ade9d7dfa8bba7175465092b6dc7b0f4b991e012e2a
MD5 3c585f05bcdcd3a2914e5298c7a93da1
BLAKE2b-256 7967d9acf70ca37f89a0246d3f6d16dfe9927b1995b671c6459b68547477e8a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fa32a5abd7b0088045f187a04180b0ac085e05ddf92222f51ebe278f423186bb
MD5 0055bd4d43d8a10cd8badb41677318b9
BLAKE2b-256 58d110619b954bf115b439f2bd9a074b682cae7a202aede4dcdeee2a2f7be254

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b23e0bb04a5639dba2cea55c07a7ae741cbca9b6cc8d28dde17d4a0842a55d5
MD5 79bbfd6bbe03a5637a93d02861b2cd07
BLAKE2b-256 385218311b7caa8b88e0ad28c1ee6d6995208192bfb4006af7688db1d86688a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 eb32b63e953244b580cd410e284cb1b982d86276e062229c475e2e0ef311d9ad
MD5 840678d6b5cd4caa7fb5c268ca8b27b3
BLAKE2b-256 f447a67b1e400044c64b6b15ccb9c210373d7689099abd9829e269af7a2372e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-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.4-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 a5bfd90552b078096ef26ff50aecc04e0bd6e936d7a23274e5bba41429802fbe
MD5 f9cb56000d2e7c23bdf5638f6a4ccd12
BLAKE2b-256 ad5f2f90d43de484dd6a40532b875616dd8c2e8e628e04a0374c46bc9e16fa32

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gersemi-0.27.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c913fca10159374f29c4a543f8b39ddcb4b2b8cef92667b3f8e7bd65b3641644
MD5 314f8b6472454edb15177a8e236d2b36
BLAKE2b-256 9cc26e29acacb6f7533f6088ee9b75233645bf6325e4185d6f5fbcee139dc50a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dabef22fe73995c865c0f053004a69aea7b22e4102ae97728e76bf41569d6abe
MD5 9b299f014742366834898ad4911590df
BLAKE2b-256 8643a00a84e7486dcef5ffd09b15ebf7539a1fe9e7b8d77ed629851d2d9a44f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 05f2c3d5f28db4678f0db8b985a1484c8eeb7551156c068868a3e0b8ab7f1129
MD5 19c1677c1c77f2d8fd37eb51362c559e
BLAKE2b-256 ef45eca12562d32b9772efed2dfd6c03b87239ad270a6957c517fe45bf1abdb1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 922310ce02dbededdf62f4e3322ef083a3c1a1b673d2d773a9f9aa5281a58b36
MD5 1da848341700dcd00e40cd2e69f3a08b
BLAKE2b-256 e2f24f8959fd33dd34359ab59b4e3559cec76841890003364bc664060cac0601

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 be130684bf6e8fe0f7b4a68cddabe6b74165f7aab101219d0166dd563f2c0e35
MD5 324f1d386a20d2f33ef934423300fe9b
BLAKE2b-256 ff32ebd0c9ebe998288617361639a25614bbb3c1e610eae75d26206bc695f021

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 785.9 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.4-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 62cab52f9c3246f79e21f217d8dce932b5b5db293cbb61cef5302951a1fded69
MD5 d864af9cfa1d19beaf228ca12e7430dc
BLAKE2b-256 6ce1e8ded6457ad3537e667f53af231d5703431a0f019922cf7d12ad89bb948d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 842.6 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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d9a5bdef6b101e936d2203c86c834883464b8c7eba4efcdec4562aad168b258a
MD5 ec64115182cca2fd6428748c73a4fbe4
BLAKE2b-256 2c5f2b70c78afd568d3b527541e449d206ab165f0aac5d0c2e626a74f62805ff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 db15c4c36fe01095662ef3f974d8c48f29705857cee6e8141b107c2399f723cb
MD5 bd9cdc3884a105dbfc5c137754880d1b
BLAKE2b-256 5c85e57b3cc637a8c057392b000465e45ac32134ac1b7e0a67b6f448a31513fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c2486c409d91001b61723e9f37e16c3eec8fadf8c88791629074cb3ebe48a64
MD5 16620753c1d3b8b668d36ce46f241fc9
BLAKE2b-256 c205f10800f4798fad22da4a769e7d5d7b1e874edd930e3d4479104b9ec78b38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23d12f7bc3458dc6f355c8d26ff76c48bd95b2ddd66236d728ff64802e887f3d
MD5 8d2088b160579662c463fedd2b51bf72
BLAKE2b-256 3ebe80b4249cc18a21abb7bd6b1230011aa2657f87ad44bf792d0208d3283fbb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c253445122f562a5e698b01be8b1438aa0b633b471010c45372baae108662851
MD5 d31ce47f6d72eaec0a34d37bb301ced8
BLAKE2b-256 356d171650cea45fbd0e201faf07186b69ef9e1b75b60e4e27c0804377261f53

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 841.8 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.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 863c842c2e4c99e4e5fff6581a426d8cdc1cbc0e2e9256706ed4ede97dd13fe3
MD5 2687f38bb1bbd1095d1287a8dbf246c6
BLAKE2b-256 d7d2be480fb45dda85861e503b5c215a293eaafb1a700df5d43d7ec2b22fb38d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8ebd420b3bf5382f15b250b5efafd533132916feca1b7b602cb0d26d225bd63
MD5 7906423ba9aa3993c06f9e38f4bc8532
BLAKE2b-256 c931b41c76facbfae623941aa1c4ceb54ce5297d6c82c7f16d5a3003658be08a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 06e7997707db646e3bd4ee722809c7b891dcfeb50819558b20de33bf54458925
MD5 1e7cd4b148cde659c0bb69b4da70dbcc
BLAKE2b-256 570966572cae66c3702a94e48bb207141857deaf37db99a7f23e2004f9bde933

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf4bab6cbe039bb566128320c019b6412a4aa6b8e06231e13031bbd061141391
MD5 cd26b448485740356f83da0e3a5e1d47
BLAKE2b-256 a35d3a04ec35d8e49cbfa8c48b898dedec10bfb127acca5900987980bdc0f97b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.4-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4f87971db019b07522e19e287599492fcf0737cdca6fc1173e7c8a60712a5a00
MD5 bc88c2b737ad0e7e8548334df0bc66f7
BLAKE2b-256 79c7d627f73e53cf2c28449f7a1ba2ce2ee0fcd7207cb0b10c494bd957cf553d

See more details on using hashes here.

Provenance

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