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.7
  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.7
  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.7.tar.gz (110.2 kB view details)

Uploaded Source

Built Distributions

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

gersemi-0.27.7-cp314-cp314t-win_arm64.whl (825.2 kB view details)

Uploaded CPython 3.14tWindows ARM64

gersemi-0.27.7-cp314-cp314t-win_amd64.whl (878.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp314-cp314t-macosx_11_0_arm64.whl (940.5 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

gersemi-0.27.7-cp314-cp314t-macosx_10_15_x86_64.whl (989.8 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

gersemi-0.27.7-cp314-cp314-win_arm64.whl (826.7 kB view details)

Uploaded CPython 3.14Windows ARM64

gersemi-0.27.7-cp314-cp314-win_amd64.whl (880.5 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp314-cp314-macosx_11_0_arm64.whl (943.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gersemi-0.27.7-cp314-cp314-macosx_10_15_x86_64.whl (991.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gersemi-0.27.7-cp313-cp313-win_arm64.whl (782.8 kB view details)

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp313-cp313-macosx_11_0_arm64.whl (943.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gersemi-0.27.7-cp313-cp313-macosx_10_13_x86_64.whl (992.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows ARM64

gersemi-0.27.7-cp312-cp312-win_amd64.whl (839.0 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp312-cp312-macosx_11_0_arm64.whl (943.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gersemi-0.27.7-cp312-cp312-macosx_10_13_x86_64.whl (991.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp311-cp311-macosx_11_0_arm64.whl (944.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gersemi-0.27.7-cp311-cp311-macosx_10_12_x86_64.whl (994.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

gersemi-0.27.7-cp310-cp310-win_arm64.whl (784.0 kB view details)

Uploaded CPython 3.10Windows ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp310-cp310-macosx_11_0_arm64.whl (945.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gersemi-0.27.7-cp310-cp310-macosx_10_12_x86_64.whl (994.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows ARM64

gersemi-0.27.7-cp39-cp39-win_amd64.whl (842.4 kB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

gersemi-0.27.7-cp39-cp39-macosx_10_12_x86_64.whl (995.9 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

gersemi-0.27.7-cp38-cp38-win_amd64.whl (841.6 kB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

gersemi-0.27.7-cp38-cp38-macosx_11_0_arm64.whl (946.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

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

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for gersemi-0.27.7.tar.gz
Algorithm Hash digest
SHA256 f598d62bd2bee0b6cbfc4e71f82c86f768ab31d135a312585fabbd7e57b64e09
MD5 5c18d369ca3bc66caf8bc04ca98a5695
BLAKE2b-256 014593f06bcc8fd631e50875ae70c542de7a46e6a06b9e19f39fb903b61e8ac8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 825.2 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.7-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 b18a13b3e65c0a1d65ac3d07e3eba42a3d1d5fc3ebfd1ef0f0fafe5eaa669e03
MD5 6e54787d1ac851d1636cf18b0bdf3e0b
BLAKE2b-256 bdc8784b6c906e35335fe6a05077476603ab41b9e611fa417f10d2dbdf91f716

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 878.2 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.7-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 16fe395f6e8f1d36e836be14f0bef120bf694a7b81ab70f4bc6d2e00a1e6f497
MD5 a3a848435fc5775c2eb8b1c9322abeee
BLAKE2b-256 bd7139d9aebb3b7bf8836367711cfb6292cca28852e1aca928b6f66e1e48b705

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c5169c69f5c7c8d52a6d5e30cff2073a3abf114bd2a42da76d642b3bb27e6fa1
MD5 8c1417d93e48713724edfdea26334762
BLAKE2b-256 deea610d2a1a8436268cc2acd581e366418020cfc5d3cbee56f0dda7d7816c31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5e1016240632e446e4a17dd2cf0c45d3c4be4ba94efdb01197d5c278942402f8
MD5 22106ed454f5512ba2e49cece24ae1ec
BLAKE2b-256 7c80c731270ab4e095570524fa114ea1c5c8b1b1cf37ceec6b4af676bf2d0a90

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04fbdb8927b2e645f11812100aafc32f231a1e48dfbbaf88a9f6cd97188058c9
MD5 571a87c073da64d4bef514acdebb5b24
BLAKE2b-256 66d15439f8470eb4280910a371b3572886484f06d85b993408c59b5a8fed3836

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d31598ba73206b6f57ab56149c2020703aaf7dcfb806a50194b99e28ba945b75
MD5 8cbd41702d3ca0bdb44817d70f1743d6
BLAKE2b-256 01a4b4556cddb6f9fbbddf237b228d632a8cd8db64ffeb370d6603691c7f5c80

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 826.7 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.7-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 c32ecca8b4150a1ba80efebc9ca27072f77ea2adffa3f12d854a804e16a9a675
MD5 90abeb5573fcbde82d073ee931556e9d
BLAKE2b-256 3045afcf4850525f363bf17cc9b332f683cc675ca588a926660c9888cc0668ca

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 880.5 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.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c51ae9ce838b0ce9289c9e0857ddfe7f02c4c7f862a704af91ee323dc0d9e12c
MD5 d92047e62bea769b39a9e625951778b3
BLAKE2b-256 0b0c0de1e27cd4187def5fe771b8002a9aacb6d886b8222e4ec50f957e79a729

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 18eac04a70f4e9578e200f10d1da4f2af4d2487e65a0d54aa4f12701fb9af4f6
MD5 076c0f0e5ee1542979675e0064def926
BLAKE2b-256 1f24d78b534075bfc9cf51b555c7d180ff516636b83e42565263dc84b8f4b794

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 159e41e19c2f6716c7e6bb56e81a24a0be93f8faad351b06fc6f117b677f92f4
MD5 7db21ef6835ecb76759a03f9d848daea
BLAKE2b-256 296246111de88885b0507db6ca527ba26b4df7182b9e239290b3897ba609615a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2eb0a080992ce288de5ecea4af9648c870030bfada7c167d7329615c6f090d6
MD5 2d4eed55a2ccdd3d8e1b46b51127d644
BLAKE2b-256 87c92727676ef2098ba0008fd35c40233d654d77305897e1ecd6bfcb2a818e6f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 197f5728c8fdc996858c0dfd739cac1025ac0982ccf10f2bba14ebcac4c4de50
MD5 fe00d90153d51935c4318308b881f0bf
BLAKE2b-256 12311dfa82c1facd7d0c3b2df4f30f1e7c2b53242fd850a66cefb4db4728786a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 782.8 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.7-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e4e3246c0e649fb66de1a9c39287aff42f5bb4f2d0a08457c90a1f94c170860e
MD5 08c66c990723748be4ba636901383164
BLAKE2b-256 20cab1ca9bf17d8526748fc103a30b6559d0ec733df88ccb8e7dc1d0e30289cb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-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.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8ec5a54016f7c73b12061ffa6ca6d00ae1da572cd238d828127c3270ae58b002
MD5 9b28a618e0351f8506dd383e606e6141
BLAKE2b-256 dc6e62c43391645e7ca7ce53ec4885fc3d9e81209eb6499a21b904a10dec774d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1816240cdefdd548d37af57a9771875db53d4ddd7883452e96e1af53c554c5f
MD5 2970d49b9b5dab2e3df99e1178e7829a
BLAKE2b-256 62c1c455be45ee4d3a886d2353d8c6af5071536d35fee7adf2c4fdf56713fbf9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7568dcebd3471867aa83b3681ff48c5f58a40a9d87c7cc58bf1c2752d1e836a9
MD5 23b47791e2cf83b3be2aa198f26e1366
BLAKE2b-256 81ecd8cc5f5a888d924c1bcdb0cd654ab787746e5de41b963ebc10c841c78686

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 859458d7fe3c10dd0dfeaba9006198bb346e52bfad29a9f9e6d2d4f17e0aef8f
MD5 c822c819332b3697317c68468c284470
BLAKE2b-256 6408943349f99403c56ba18085f9d53894928e1bbd8cd9cc5f6ab05bed59712d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d328ca0170c359e5c76369de4d8bc9ee64aed964d4159de3b74dd187efdbdae8
MD5 bf9267769cdd020410de0e774b23be80
BLAKE2b-256 0d07e9f0b935da25cffd378dc4100937108e905e0c3da9b74303d0e80dffabb9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-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.7-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 9be671800739dd15716b5e33fae1da7b3b81a2d3e93f3d1b16b6d95cc64513c8
MD5 e7c97bf5a7e620b2ee495597a97b5f19
BLAKE2b-256 e54d7ac410e7cf4e97e288c202c48910eaea74e590d7afe104cfc33e5ff6f097

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 839.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 77484d011e5bef1826dda0c73a23ac290d84f3c4612655996b0002904390172d
MD5 422e62d0bfa24ae0ab8d4d07ebb85421
BLAKE2b-256 8bfee385324f81593128a9505338fe0fd753b412709c73f16b5450c037b8160a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a98a9b5e2df6157661d2ec4c3c15252e38a08e91fe309c93bef35a597ff81aa9
MD5 300b8fe3f7648373600f83ce0eca3689
BLAKE2b-256 f8aafa88abdb7cf4ccf46e00d84d021fc12ac2fcab0a4d83fb04683f54ad19fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ad071dc7f07558c165a50aa5c270950f5489c640e7d268601350f9b89d0d3bb6
MD5 be935da6afd85b202b1d9b50fbae403c
BLAKE2b-256 b86d8869a40850775592a087be5ce2b0dedd9c236080f8dbff1fb3bd46b45b51

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb223aa8c4b14e1969d074eaea3134fb4b3604c34d90c0afe4d7abe0839a1d03
MD5 29b63dcd26fb724a9dcff58c36de1665
BLAKE2b-256 acb001f46c2ff8050a0f541eb132129bb5d2fba42e5d8371063c93806ccb9815

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7f5322b29da2a5bb87b05a70c437c03cc4db9ce46fbe9d4a68d75ae37bb85e28
MD5 f345b9843674a50d1e1f08ad2e931381
BLAKE2b-256 384a8afe2fdb45b6add56437ad044dd1a46a545ccdda6f723834d8dede0fe4c0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-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.7-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 af9643037e9d26513297674708f9b30cbb954a681406c7469c33d29bbbcf29ab
MD5 bf74a7734374c7417cd454d4e648770d
BLAKE2b-256 a6695f43f457c37e8500738287451753135ee8a54cc113b18e8419cc1f441e15

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 840.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gersemi-0.27.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 890523d87e6e17c6ab57839d782639e06cb54eb873bf02c866d8a43d108b57f7
MD5 6d1a8f33c0f6abb4e6d5a923944a59be
BLAKE2b-256 e7e58938a6b62474b2a090eddf4346fecd59921a7901124a72fde46b1ecd6ae6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6cf970a501233691be29970df9d09df16af51a43a21e97b91e53650ecd8b6bd4
MD5 5cf6c531040da4ee25a019cd1be6f547
BLAKE2b-256 b1bf20fad00dea73dbfdb61867dbbd40dafd8a1c7fe8040ad6a058fdb1cf27d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8bee53eb943bb4c860f75927a26d860fc2e6ccdd46ece2f9f569153f8350e79b
MD5 e35c934edace57ff664d73989c6603f1
BLAKE2b-256 66096a6ab8c1e55b89e7b10f2b357829edb4c6da152634b538b0f16b1920fb64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8548b6b436d9fa23d9c3a37aa34f1a4a5a8ff4f1ca557e825bf17ac8400556e
MD5 cb1c0a1a8506ef06a5d8e9d7d4e6c5f6
BLAKE2b-256 468a120777189db8574980f564a9da2bfc2e819c7ee4cc280246f30060e5667f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7880179ed7c187509ddcb27fc8acc676488297cc584dedd9f5f2f7f98baca8f7
MD5 aab5c932238d1d6b923d17ed384d048b
BLAKE2b-256 4d3866cf3d8ef74096ae0bb9743b3043a9e344be048eba37611666b8b1180eb5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 784.0 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.7-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 e1176805875bfe789378ddaaab2a6573dceeb9ed9095841d5672610ab7ce8eb5
MD5 b070a79f3b0fac856a0cdb69cf70457f
BLAKE2b-256 14bdbd676e1358c0802cacaa22e0c1f42220c55a0be9d6e23ccb757f17af4e97

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gersemi-0.27.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d3496d09debed401db097451b331be847394208750a4e0182443acc1dd3b673e
MD5 75a6e2b872aa14b3a814feb198d2d933
BLAKE2b-256 16e3cf4245a85b18fbdd026e1ff43a6f507680c73f6c188b2de4d1bdda1b9c7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38e628fcce78d3ce5bf6b98747418be3a46875eedbabe4ec014a5f0718fae534
MD5 664dff1c41dabd8cf5df94b602940d97
BLAKE2b-256 c26cd0021ac119d4a7c95f8074e192f8361a38703f93e645c70ff99b68fc2787

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5bf0a09926b5e2f516fbe1f3d4c2ca34b68d58ca7789dae56257f6862749d19
MD5 dfcfb58d4ff137331eb3ef0734d9e206
BLAKE2b-256 4cdde4ca53b99125e2e59844df98c1db05fb480a6355cac41b30886bd54ab32a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 136c86001ef01cea5f4f09838b12e416980405902370f0efad3839182a707949
MD5 c507b6190df8a8887e9d248e466dc6fe
BLAKE2b-256 36b08aec810718c0539eaedb61c4356e34f8196d424ae7cd340ee034e366c1bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cd1b2d5c2e0f901d105cdca610c75196b23cbdc403e48f8ce679e8cb581a5569
MD5 0e8fe5a31d12fd5fba91a53a8ff5bcf6
BLAKE2b-256 87df48d6268b265b2801360e4c6d8d06cb2ac8ace8e28723e5c9e6ba7e75d3f2

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gersemi-0.27.7-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 41275b5fe725d9e8c0f7bfc8011c264e72aeebd14af09104e4bc127d125c7b82
MD5 23cb19f8d70d678e4d9c38078c8a98c6
BLAKE2b-256 a9b2a4a32dbd9c14ec50d79654a3149df696114f5afdc7d635a2a848ddeb2f72

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 842.4 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.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5593221939a151e8b88727af925ec3e6dbc1af6492696dd99bf4aed960dc1ce1
MD5 4968803b626890dbf4b9ee95059b226e
BLAKE2b-256 eef3aea184e6d6525928efdd76617f77a728ba182e9b2fc1bdfe361ade1b6765

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 52a4c475b2fe8bdee9928e0b6e9497a705d369d6afb65c65a4fcb6506454debb
MD5 dace84824d8ba82e985d0bd87eff9b46
BLAKE2b-256 610304045d1fd71f898cd6758abcd16c09c25870637e67a9b62632761cad3e3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8489c3003b6a79df09d19e72af9a59f630d04f2820dee00340b134425dc7b074
MD5 e57821465afa988a8fd0762c0b08dbee
BLAKE2b-256 62dc6d960b03da294750d7f91b9b7b7be265e2311651209c8b5f3cdf0b1aafd3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9d87902587b216c84c94142a0c912776343dcf5908fd29cb7fa2aa5e2f290cc
MD5 f43149ec9f08b32323f04b0692665936
BLAKE2b-256 a58c385f2ec9bf4b2e974f4d59361f88f27c4f0a1a6b7406bb14cf879a650092

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 78cf023b3cce818af55e6551358603a6d00210676f9862c844c9cd9666db5d9e
MD5 5e0290c30be7b7199474bf4213718159
BLAKE2b-256 774c3f7f6e0579ea488e18727763a3105f3662e9cc8f06bd6be229c7874d8ead

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.7-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 841.6 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.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 61eea85e4b961dc4cd6ce3dc189a2781d0c65ea544491ae97421068802189cf4
MD5 5ba414076a53925061828f38cf944592
BLAKE2b-256 45946619f21fae3498bfa4b2b5ddd7ea94393700303b2f0ee02922375c9243a5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b731f3cd17bc042d3a900e407c0fa13e0fb8869c7caa7a2e59b0d2e325d4dcbb
MD5 1cf09191d6b4827cea2f4e482b0a1eac
BLAKE2b-256 9359e770260e846a4073691563e0bd873b04010c4635a10482fbf0eccda7648e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 842b7fb5a0264c762a2048198c34e14b7fb853325bf659dafbb149238ea40314
MD5 cb7f121c4222dade8d2768e07e921bd0
BLAKE2b-256 0d378359628ae73790f98a2819c7012e079f9d483fc77f71ac9e02b9600bb186

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d1d07297470096b4b5b71e5bfa3f37ede0939a598c5bc7acce3250bd8dcebb7
MD5 61ab5ddb9dc1c197f407f42cbfa6d9c6
BLAKE2b-256 9cee5c314a0ba9807a713c6ca38db1330bf8a54b09f1955f36a7df871704c3cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.7-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 54ca909a9d6f2ebb451e132335677af1803aaf73303b7679979db14a28f0a6dd
MD5 dcdd4f11930b0c739dbd0d284aa9dff3
BLAKE2b-256 c117807f84ffbb550719bfa4733ba1892098607ae27ab4d0f79bbe24c96e273e

See more details on using hashes here.

Provenance

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