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.5
  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.5
  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.5.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.5-cp314-cp314t-win_arm64.whl (825.0 kB view details)

Uploaded CPython 3.14tWindows ARM64

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

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.15+ x86-64

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

Uploaded CPython 3.14Windows ARM64

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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.12+ x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8macOS 11.0+ ARM64

gersemi-0.27.5-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.5.tar.gz.

File metadata

  • Download URL: gersemi-0.27.5.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.5.tar.gz
Algorithm Hash digest
SHA256 d8b70087243946539f73077d75a20c66d16ef12614f3c5e1dacee25ec9762d6a
MD5 e843af5c4df414ae37de1a0705cc0b89
BLAKE2b-256 b60dc382f92b3cdc131ca0ef2b51de91e3ef36498ab53005773c5c467e543cd5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 536e5eb100d666ad52fbde2ed23855c5aaa262470125441d8583a264a10bb21e
MD5 e676e2ae2c76572d3ce8d92abe4a20a1
BLAKE2b-256 deef13cb134b8d6064535eda100921a53f16d3efa95bb31c131f9eb5a303612a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 69a75b3df789fc67b3b95af6ca5568b8474e20267ddd63d915dfac82f88ee25e
MD5 6e30c1a71d02c231cf02f3dabd0641e7
BLAKE2b-256 99b3f63168f833c506a0732e3f02aeaf4914c98d15c0294c2af3152bcd16fb5b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f758735b67f7e506d4f076489b9014f8d569eda06aa26413187aaf0202704f8
MD5 a7859b763bff56400a6c462c1cc816db
BLAKE2b-256 b3d79dea204b966125a7268236657585b969a462b323ec1b7fb0974d5d770d83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d43653841eac08553fb05e3b8d9eb5ff97d929196fda502998e6911bf4c691a
MD5 cc8680086f2422721a705eca95208ca4
BLAKE2b-256 0ac6c6f4ed35b5766593b7fc8ad6f5bc91d594e3b7621c1a8e772cb8932a7a6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f16cdc5a522fa90caeacb11dbb8ed5e6774523c3f10ca3ff0a2da408d6592d9
MD5 269e43956ac2639e364dc2d387469a52
BLAKE2b-256 9768788d956bef1770ab4f45960fe9deeb24511690b35f9cc56966305dd49680

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4685bceae84bd529161158ad54409b703ba70638a1c5d380b44bcbd4eb54eae5
MD5 e03e00e5a6f77b5a9a7ffdcfbaaa5e7e
BLAKE2b-256 ea08f87a87c9b7696a498e13dc8aee992e0602e2b018df7723edb49d9f9f5d65

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 080eab6f9414da34e63aba153ae9eee61909a62f0205402c986863d291433572
MD5 c9f1bcf49b83402d98f26abf8638eba5
BLAKE2b-256 bee3e109cbe64380ec55e192a566f2ac14025a40bb359a36186c0d26f978edd6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c310af1b5e3f98c79b6335b959fe0ef095716763ed9e6d68d8ae29b584a363e1
MD5 510194bba183e242e3069a4c2b3b3594
BLAKE2b-256 f69a9456e3c1c661a8a4adc6888e3556ffb0f3f8f2a511ad9615796db2e01371

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a21e5bbd8622f4e6d10c333c8fc3d24b6e4f50de7bde649fa678a86e71b6d2a6
MD5 1b08001a3c824d921e402bea94339102
BLAKE2b-256 47a84d74e3a62d79bc62093d6f0bd7a4388bd890ba910ae50536fdb19ab3fa22

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9909ccbfb6d55317dc7eec6dbd72932b8eb188bcbcf58d35738cd8e163bc4156
MD5 3bec2f4d48d2d24b8f8cd6e3eb61d4b2
BLAKE2b-256 9bfe10a53a923478fc2acb057463e720c64b31fe3a22cd6d247489c4e0b64de3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f55ccbf08be1148e978ddf3a4fa0d98e975b3758eaf578c5dd5b8e5a6802e99f
MD5 1f294a8f33f3bb4071e226b844801699
BLAKE2b-256 208e3ad947a38147e37e0a2f8f31ce503c616696989b967da629439d6517f817

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 796a22aa825a1966e7ea0b8709613709b6153c3bca6a8f77e76158e636adf8f1
MD5 8e679f268167b01fa5f82de1afdadf13
BLAKE2b-256 7ec4062deb8384e1eb6080d444f1172249036443a45e5a4dff0ded00d39fc1a4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e7d8d6837b768bf16487775a9aa9b90a62c414c5214cf4a3af87040cc4ceb13c
MD5 8c7bbae7657451b5139f7639d5db0971
BLAKE2b-256 de6ff0aaf60dd44fcce86df2531e47e20cce38c76bb41f2eab8f2c3242914f24

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 150dee276ff1ead99e77faa1a31b3ac8bf0a62a128efe465a515ede9b94e8406
MD5 7d238e874bffa6d9a355c39d4d946d83
BLAKE2b-256 978fc491ab4fd7e6081e7a098ac47cabbad994d82a1d9af5ba4763073b80919f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 66b6305729267583fe7a12ab5a261c4792fc840f48ed62c6b280fde88e938ddd
MD5 2085b9d8e5bc93491ac555271fe3a1d9
BLAKE2b-256 f18d0883868410eda951cdfba0a24bc196762598dfa83fd50bd1db0b96c26217

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da0ebf2a3540c87470b877a9637f9f712b883a18ba6491878e2c56cdebb7fbf6
MD5 5f2b18854f68833fb7ee18ad35694e09
BLAKE2b-256 90935837392e1d46e2487edd55b75fa6642447699ea62a10001d3a0d84ce50e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b88de41b33e525f72a0074ffa8bac72f24f2056bf9fde9c584f1cade4fafb709
MD5 a38f824c12cd0d8d89c53d5cabb41e2f
BLAKE2b-256 4b88ca127ff730dcf23b046033065b4964a78fbcf80304eba4a66695f8adc0db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6900fcdeee52bc4c26e648f1f0d4e2c2c46dd5a6b07dd9c8eed3f5eee6f07626
MD5 df54ad149e348f69faeac2875823a20a
BLAKE2b-256 c8dff28a8972773dcd7767175ff23173d409208ad6bff3b6d9892d0a5558fc45

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 0be43435c2a3c2de27c9d29178a89274e16c763e900b79633e603acc54199994
MD5 0bc9b3cbad2bf3eacf72af3182766c94
BLAKE2b-256 4426a237f58a3ab497ce42f5c93184e0fd6f7fda6b3b22670add3f782499f36d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1be292d41925503d22f9f3d49dae83043772fa454172c4a03de8579988463d3c
MD5 f061826ab47dd719fb051d1bf007a5db
BLAKE2b-256 6e56143c56ad9ed227729ac0ec0a7489c5126dd3db40270245ca99e3bb7c131d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03457bf81b4dd1d3872702cbf06d06ace7a8c296c7147d4d0481fe6347848239
MD5 d5c8573210ac3ba5f2abf18c9c38df54
BLAKE2b-256 ec6063fbb5ad0d085b854af1fcb07438f396a8a572928593117fc38ea2ad18e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd72923e097e6e46c8e85254787883403419e9619501a4e7a0c721bbd2f34e48
MD5 09d60c52c327c7b1767c715cfecc7126
BLAKE2b-256 0dee86b8035aabd4177a1b58e4bd4cd5b71ac956058d2ef2479b6d35a204b525

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f819297d23639a5f5ed93a1b5c859123523f7abef56e9345ce51bf18c64b914
MD5 6bce771f84cbc74a6aa7d2bfa8c25149
BLAKE2b-256 9ae36610b390ec13c10a2166d536e9dbab67477c7df54ea84d998c6902b44477

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9087a4043a369cfcd0f35aabf7b41bb40ce09862099a609e5ad03fe88b6c2cf0
MD5 f42759f24b40831c1517f3c26b443583
BLAKE2b-256 b9e5426b871dc1548c57d38311b9d6b2407e7b60c6dad364c03f520b8e9b0cc1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 31822476f29eaab9b500aad1f4220387f6fc926e98caaea06f15fdc7cf86779e
MD5 e8694e1d9dbe834328e20a7e08fdaa5c
BLAKE2b-256 3ba01523996f15123b17748e0b58e27e60583dc75b3be765ea5a976d4d21c7e8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 10b471bca1e06b7532c73684a342dfa42e38162805c496bf64609efb93072329
MD5 1785f5ae9cd111b20f6bc77f6ac3ebc2
BLAKE2b-256 d3ef62bc8e6cc0fef2af302c0abb645cdff00f3b3040c662975ea2b96b94a306

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd4c30d36118893285bd5399edb8d6b7955992b7026898691df6fd52fa248ab5
MD5 58d3f401538729000678fb23a4aa3e10
BLAKE2b-256 1153b9ba8b81a70b59e15fae60e5502119f90d529673f97a9058380c095f7ae7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 deefed50ef5aad0956b38ff968d29dd47f792d36e6e60484aee3de946b198fad
MD5 695637e0c5ebb831869e4adbe9bec4c2
BLAKE2b-256 db81f7b7e2ab66c006b4c0745b7761188a1b844ed7f630ecbe9b6874e4e7c7fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 189883ee91b8577be8d087c754f644fef5d2dae48831d3d9e5dab9b78f47b310
MD5 5d877c1dd40302c3a162441bb0c3d6bd
BLAKE2b-256 fe59e7d3897cf40d5a1453f11249bab750cf19a67979f673e4545975f45630f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 133a5bed238ce0b70f145388715c13f99f3fcc6319c49d695567b1aef76dc9a4
MD5 55ec4b49c371d8ea9715c9ba0edc3fc7
BLAKE2b-256 24f23133a58ebb50bc36f4754bc3e1875fb71f1582fc0405dc993addb9de4ceb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 9fd32723a78d45118873e3f7f2eaefb1d7bc83f898dbce3c0368f3ee88677e16
MD5 edbb9a8353b0a8a817ef9f65d6e8c1f1
BLAKE2b-256 22de6470c0d7b4350648b05c3826d818a009b42cabc9f9be86dc09424bb2ddb8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1ec654da5a975903c10cb78fede4c92c40de5b576f0748d9b77cdedd2c90721d
MD5 2c6a6f246cf7769fde07037747519599
BLAKE2b-256 fa576ada452043ef1160244d0198e7dfbc239031d4ede467070d78660675d3b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3fbe949005dbd8425dfcd99b790dea2e134c926cf9b350ea603516a3b74ae1a
MD5 c32c0d7a4c5c859014cc7debf8e16cbd
BLAKE2b-256 37913907a92749bc1cb7ae1b15d448007b81af6130cc5ddf05c31c6a28cb27d4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 770fee588c10eac21367e2db2f6ad7a50c2c79c93e1bdb71e790b910c1fd57e5
MD5 63cf08231f20d55cd6f077e0e7f85b0e
BLAKE2b-256 18bcbee6f557253ac4f0f6cff2c24e55939df50c66fcabcf412fb976842f1c0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 324adc0804b735240a2cc8ce3e785086810ba5418cff4d0c93c16f0b8bf07cca
MD5 2f89cd4efbd30850b4ba13a43e2f492a
BLAKE2b-256 1980e1c1886cca5e00d65c66834bdaff08205d89fdec50f8a2d67c44a3cb29e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9669d101e6507214b60aa41b20dd895dff92bd17e34fb217a25852dcacc3bfd3
MD5 9da7c1bfedce00251f04356d3f9068c0
BLAKE2b-256 4a8e6bbaaf12e289a72af9bf2d6ba1cd8c0a935ade6c649ae2b8521251d26e4b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 0eedf489148d4018e8e36ac991ad0b2abf59f9d6bc0ed206811a3b0ad99fc53b
MD5 dac8fe8c5de7dbe11ab4b0428a333dfb
BLAKE2b-256 eae64c9ef0bc8be256365e976d0c004eb7b0fee1680f3a248db0d54d9d09d6e6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0df6c3a5181c08d73255bd48cb2a6bc8357b583738f0edce294b9d4639fa098c
MD5 4d3ef180e0f24014eca835877b00419f
BLAKE2b-256 4632e24f228f55c1f3191d3f91f9f38889b287406df7a346d655862709052b30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f88143eac4deac5c7799089b73a23da5944990befae847da1c6afc0fa4565d06
MD5 c2f93c740bee762ebbd2bda0afc61c03
BLAKE2b-256 76c778b9da672fc3b6987bbcd4a07c9c3b39a3d950623d3406c50bfc8f14bda2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3886b51237e8c52eaddf5b7282be0ea769b7675a50faded4bbd44bac2468d1df
MD5 966bf55c184407f87dac7b7c3cf6548d
BLAKE2b-256 b236ddb3cef5d87752e045534d06059cdb7b31c35fc0493bf3ca436b208f9a72

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8497853b04c20842f636e6a116fd5d58e8b68a60cc68a7d20dcd52577d6adcbd
MD5 78dced5acb062c2ead089e1cdc61c42f
BLAKE2b-256 25551ce3f1b3c4fe76fb801087e7d12fcfe6cedb838dd4075663210d44a45ea3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3141456aea9cec24a373dd04ac9e7e05dafb604152629dbef4d2217beac7c0d
MD5 61ac9cd10f44f32833daf64fd163e9d7
BLAKE2b-256 ae21c0d2978c40f7930f6174fc2ea02fccbfa340a3c7ceb13650fa5089778181

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.5-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.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0cc0f701e878a9adf6920ff51b8412a56f1d2120d53404670f8e4c18820ae400
MD5 da3a799e6885b2c80959cc58181f395d
BLAKE2b-256 3ee59c4bae53ce779c3be0771549eb1c6da917af2de08fa884befa4b65823f77

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 edc8e0eda58b3d26914f06928e617bcd116dac62f8b04fabd9e5824102792eaa
MD5 54722bc2705602ff869f150c638248a8
BLAKE2b-256 1dd17c2925b806e8fe9e8dccadc2ffc3cb57688e85a7127683122a24d4a09aad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae7c0f0e9eb2ebb8e212ec6efc8804398a5d1f44b6f3daac9e59961543999c72
MD5 4aaa5f8a13a07b1717bc22a19075fa6c
BLAKE2b-256 2723d4fcee193eadabe4c7710e3dcc810dfba318c622e78f0cebd8708048a14c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ba04222d343502d02dbeb603a61074e8ac1ce52b1b2d36a6c023c91caddbccb
MD5 c2376e36615aad31e22d249dbc119133
BLAKE2b-256 63fc0ad903f69848c22088f22adfc19b50ae2c0df75e3d9629c9e8757590d2f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.5-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f6eb7fbb630c4d20973815c6d11c5430b9589becdd3148703ddca8ac15d22334
MD5 505c0dbcaa1b5dbb8b8ffe87534deada
BLAKE2b-256 18792f185c02b830023a323d8f1d5c847c6207b801b979ab09bfa3f9beee2380

See more details on using hashes here.

Provenance

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