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

Uploaded CPython 3.14tWindows ARM64

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

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.15+ x86-64

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

Uploaded CPython 3.14Windows ARM64

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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

gersemi-0.27.3-cp313-cp313-macosx_10_13_x86_64.whl (992.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

gersemi-0.27.3-cp311-cp311-macosx_11_0_arm64.whl (944.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

gersemi-0.27.3-cp310-cp310-win_arm64.whl (783.8 kB view details)

Uploaded CPython 3.10Windows ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

gersemi-0.27.3-cp39-cp39-macosx_10_12_x86_64.whl (995.6 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8macOS 11.0+ ARM64

gersemi-0.27.3-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.3.tar.gz.

File metadata

  • Download URL: gersemi-0.27.3.tar.gz
  • Upload date:
  • Size: 109.7 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.3.tar.gz
Algorithm Hash digest
SHA256 ef17dd04d5683220a576915ec5d25ebba19d4e5ff1b85c4763ae7bf1abe34c9d
MD5 0336e9f16a7d3661e132b25e7eb469fd
BLAKE2b-256 4bbb4575396af9c5f7d702e0f133d4a21f3986b994d2aa62ec8c9f4a271262d1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 6379e3e70de9740fc390682b5fa98ca18a471f6544f576297a2a0167a78e46f1
MD5 a18e6b3f6379548d6efc201a04d4f0ce
BLAKE2b-256 c9c22ae047ef9245c9de21d89fa43396f8ba4ee0e301109d708d8646e3118ab0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 245e220f710c166b2ce280afb3df802cccccabcb78c24140a11be6878a7afaf9
MD5 135960d15d521ee2f67d86ebebd4ec13
BLAKE2b-256 dbe084a7f4db6671d7e391207a5e38dbde25457e4d51c1bc8f65bf775afb9f9e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f0fd19d379b667fe648a8d10a5166ac12026d0ca9e64a1518cead8191ca1d35
MD5 4fa10955d829c4739a5fedfaabb209bf
BLAKE2b-256 48c88f3887c9c067ec0167233a131ba05cac2556b4b1afada55601e7b52abd40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5811ca9685d23945a6fe75ae55752f40b8e513704744db582570c6f0c873e52a
MD5 59550a0101d851a6b8c08e43b4350c7a
BLAKE2b-256 39d8fe4b0de3f058f357e23cefd863fff0c848da08fb6707dd3d93d70381faba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5aa2272c76b158f471c761f00dc32bc8d550ccc69dbad20f0f5e6ab7c8ed6c3a
MD5 0cdbe6b88932632c575f0ae6c8d2cd80
BLAKE2b-256 e7acfd92d9295a96711ca7b4068c3d9efef89b2af167c1f74a690a9314dad6bc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e196a1c83dc72a0a4442552932b53616b91b7a3b1dd449f85d730091310ab001
MD5 c5a9a4fe06b69bf3110117f5b0bab96a
BLAKE2b-256 669ab4c8d040f9c8810553cdb5fa0b781cc7dafe863af6ee1e785ed2967c390d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 437f38de95ba10985f893f29330d23aefc58716260073fd3f72ad73012842017
MD5 d94ab7e97967eba9d775bb351aebeb83
BLAKE2b-256 563748ad5b282caa5757392f47dda9ff906d0d7bc284f089d8f2cfb9f56e8656

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c66875a0ea1a52d3e8b6025543f9528abfa874aa02a867c5a3679014e369cce2
MD5 021ce676bb2bf1dc2e534ff8d8537e3f
BLAKE2b-256 9ae696aa82ae340e5b389427771af90b39011a125e30238b7fbcc53ea15271f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f027b523328e1a969d40931995a5f07a564d78501f69c496c0f9a82834b30764
MD5 cbbc7154e565c3fc77b8d0cdc39b2a43
BLAKE2b-256 96aeb84dc9e20dc2203c757ce05b510b54943e7a14d874be677022f5828a9e5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 caa2375b0d48840c094f0ed8cf0bdc2e97a8a3403703e9bd715ba5f167fa1313
MD5 62538ee04e49fa1f87abb4c4909f3e7c
BLAKE2b-256 99305d47fa7493b9f6d6d4922e583ef3e84c8125c118f406ae8bcf205ab3d6ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45ef6e5fb3a6bd19813d2d3946638853434a6635bc0b8cb1f426f6b1b5d19109
MD5 8729111b602671946476df06f8dd095f
BLAKE2b-256 74ff3b371814f1ebdc9eb1e2bc8914cc1197b5b1afdfb86af213c5fbd00dc5bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b5e5a125233cecc9d4194d4f38a340c12d5a13b212d65e4b49cd22448f778919
MD5 3dc4f73575e95b58d04cb24ad6c1102a
BLAKE2b-256 7f6bc7343349baf8d46ead3afd7728e01baf83145996d6af727be770313ff611

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 d43fb04b7ae104b72e0712fb505438eab9463d2dd313c466ecede43918c6fec9
MD5 4da93c72c5e8dc5fe0635f9e6c524bd9
BLAKE2b-256 d6810abebedcf91cabf06bd037b51a59ca0e1b84589fa62554b6cf3586b0bd02

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 49e2b46c457c3a727221d4eba84de448d127b9b0ce2a80ef2e4d8b53e9909144
MD5 e4426e87d73b7e21221e8616e3891a29
BLAKE2b-256 6f399d1f94b2f78a8f665113927a39ab328282632f429139bf44a97df2359fd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df3a03f88467a3413a77cb014e592ee1a8f97fc5a057fb6dbfa5b5c386904371
MD5 a8f3440efb5ef1ddb69ef251445feb44
BLAKE2b-256 69d0d625d975dd93387d16609734adb2247537b8795f3071341527d2ce77cef9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ed5a4dfec565940d9cb83dfae5e3d375277bc931dd81538599df77af947daabb
MD5 e0615f669422b704f40b57e273305d92
BLAKE2b-256 68b91f743970f2807227aea37c4acc483fcd37304ae4579479376124e86843c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0a224fc7a230fac6b74058de7266fca97d8a77f9250e69124addc1088d0c5e3
MD5 7ededc8218ab307c03a51533b2b72f1d
BLAKE2b-256 11497a544cd51d3b83e53c2961700f15fe20f3b663018d96a3500d999c5295b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b08d91a0f403fe3d6c6088de123301beabed2c51462e8ed0423e1541a5af2b5f
MD5 868445aca3a71537c1ed186ffb83b718
BLAKE2b-256 4cb4687eedf028fc11bc897c5bf9d48d5fe76a019a4e0f1227c6ce678de4427d

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gersemi-0.27.3-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 71c08b0cb579e6f062d61dc484c86a36c79157ce2fd54fa2d2d561de01d0c121
MD5 946f4f273e7db93e801b4a3b5c342a66
BLAKE2b-256 705bf570279a1bf8a52f3283d5346257bf625cfaea868579844483810c5a0f5c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9386f59de5730631d525d41833332c4d7c0688c9284f28fab12572b26c4a61c0
MD5 c5cc7386528834dbaa01473e2e9ec5b5
BLAKE2b-256 52484e103caf330ec29890bd2bb3511b05663e49a3e568a6f11c65423f0be6eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d946ad68ee3fb0bf1cbc8efe0b4ef1ae76a74edb0dafdea8805d76113261c3ba
MD5 40831ec0d2fd0a96816f5b7453654dcf
BLAKE2b-256 17cda44b752aad0aec3f6af34bf9f3d023118c3a6b9eb9d00be8b521aaa0803a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3658fe90cf17caaccbf450a0ee0dd0f96ce6fdb2d142ee05de93c4a51d3bab98
MD5 74fdfe1a43b0fdf0b73eaf6600a483a6
BLAKE2b-256 1cc7bd5c119a8be2776f995bcbf31bacece5e5eebb9ec97499f557bf32409fd9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6e2404e9af5e5e60d1fd77122f8202844453ea1d7e17a6f2a999bc5ade3ae55
MD5 239c25fc4fcef5ea1981a6d14d733864
BLAKE2b-256 25cc69fb14dc72d857f5f9efaa4e8083e89211470ad7ad69730aec5283016c24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 cc4a333ad8860a6df7914fc8aa49ba6621fd08fa6e1d3a45148750cb048d78ec
MD5 4cba3a350521eb456bf2c4c1b6085a21
BLAKE2b-256 8f5cd98ad8e5aa6d030d99790e34c184b858161232d02cb8a5303eb4e57c2fee

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 6ccf508879eddcc041e5cd77a850205f3250e25740592c647d6fe8eaa13b4229
MD5 cd28352039305134c113a47450bded74
BLAKE2b-256 c8d4a435d6e595b32ce53588a48ca686ad3ad6e9407a70abb3e5b48240be5027

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6f157f8b691bf5877497a5c2c7fd47f66f968fd0d0537ed1f7742edf8458ea2d
MD5 a83e814926f193cb568ce68aa01d197d
BLAKE2b-256 0f2f774eccbcbfbc127dc66105ead6888e608812675278ae508480db5311df6a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7596a7856f3af82246ec8e0d04863a91ffac6f1ad22a2fa82cb04ce922f24d5
MD5 8d7fdebed0f9ce25e0f8ec2385c7f7d4
BLAKE2b-256 392fc1c4b7893b1783bb6eeab2a1a0cdd313a5b83f70a155c766507f55601e05

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d45e78a9956b59153172855517611a780f93bcef6e61d7898119d71de2bfbee
MD5 b665fe2a8edb1a25af2869d0ef262815
BLAKE2b-256 76d8afd983bb281b00b896ba9b1ebf1f13ce198c218ea21d42c4750e7be3dcc9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 49cefc5e880c14356804f73524ec8ef22cb72313256544e4b2bed58ca610b3b3
MD5 e94a043bf45917d1b0bec40dd0d25910
BLAKE2b-256 d10f0bf797e0c7650eab02b09f321c7aebc4ca7bc502ec54f500c6f7cbc9fc70

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6db323f80c6cec565d6b269d1304e8b55c508f8a9b4346346b1f89048d0df25f
MD5 88024a4821b508901505b51b6908b082
BLAKE2b-256 bcb9ec84879a270709e0cefb993267e8804a829883ea4b4c23c89ee9daafa81c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 783.8 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.3-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 9d2c7a77012a470f50a0a51b08d01bd1e243a2df512cfdfd69bb5c4e9f45ec35
MD5 b1944ddcbb09264ebcfc1ac9f92ef5e6
BLAKE2b-256 b784d259dcf3e7192f2195564cbf401a62b53cdd3372cc444195b4548c55880d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b54a957d903b9c1ec39b4218b1f1e0030e16ad21621f2c53cb2859bb6d6e3435
MD5 356e6182f3e2e35f210067f63bdf3d1c
BLAKE2b-256 a41d4f1edc4406718d69b423a307c9b5e9309b2055b284819987b5e180ab7e91

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 db5e6edfd4e13c681266187f25d8e63de63ba178ffede0ea63f259624ed9052e
MD5 142fa64070916c956ad6e2846bf0840b
BLAKE2b-256 339f5e40d878cca8082f4808f17c3ff3cbe3984930ba32894a50433210bd862d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b021107a521be7c697381c7585e409dac0aeac3acd5828f1f3b6c33e7d268353
MD5 0e15edf57408896908eb388e08c05c8b
BLAKE2b-256 046b01309549b0b4ab792390e844ac72221e89f5174b47dba72e737fbb83cfd0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6425b1314190eb4795a089cc78b9e7a363efb5be8723fa50c10071e5dca9d687
MD5 82edd1c6c62fa6e26abc245333bc4d27
BLAKE2b-256 b3fdd740e95daf30e036e40a25ca0055d2ce3c62dbbcff770ae6e9024461f2f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c6b645780995dd8c804296adf5b9809c2149b79490aba12b1bb01ba4f9b6c54c
MD5 37a4f92d5058116d754b32277c9fbca4
BLAKE2b-256 4c999421f485810e9eb184466b8763cc979c4febd1a31a0774c1940329928001

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 79c1bbab3249b81ae4b808844ee57c13afd5f0622127aeca03454ace161d454d
MD5 a4d8319a32c1766e033791bcb3f5e418
BLAKE2b-256 63e7f17e8b231d9ced7b01304d6352f84475294fe17e15040e669bac5b4d743a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 aa41c8b069e6616c1e207ff0f0a4bee7147ca0a13c8844954fb3e41e586ba7e8
MD5 5eb5af73344e4b38976458f49617c37b
BLAKE2b-256 e15145a427f2a880f43e11ca3ec16f7ab94de039c5f38e875589d352581c131e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a19818ef486e39b6791eb1eba93c28ade1d3c83734739494f073102aa48b25d3
MD5 2de08e509b76a327a771f71dd7018dd3
BLAKE2b-256 1e5fc87513a38fca9f12fa6113e6f19bff887c56b13abe1d632252000a655904

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7eb130b5c8f8fea4f0d637460374903d15c2aa13cc585bf0904ac7ce6327fba3
MD5 df568863ad37ce85a514f4e93693dac9
BLAKE2b-256 a59f91dddef93fffa193357f13d202d388d0cb342f36ae11b9a1560d18df2fac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f87768f7578f442914c1788a80160ff71f539f99596e9e8c66747d45c5b33fcf
MD5 8d5592beead26bee28df1e4b5dc1fcea
BLAKE2b-256 7b5889fc024999d089f40d7157b8d27f373c5587dee1d32016e444121bdb4500

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 188810fd72b279cd5ceabbf8d070bbc81d2ccda68a561da1f05e72e2f1348b2e
MD5 7ee9ced29509859f67febb422fdef9f3
BLAKE2b-256 3b9483c16134e2fee07119493541d3768108419ab7ee7d67ae86c469d7ca9feb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: gersemi-0.27.3-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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a36e644525a3fa4c1245843d0c2f54a4c452f4d4ebffdc6f13fec1f9db27f546
MD5 aeedf19f3a336e4bd512fadba9b50566
BLAKE2b-256 82123dade41841ea7beac1ade8a2dc184ecdd3a08e34d0e33ff3109316f6a5d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cecadff317eb7c7daa3983be322d8328fee3600e732fb0115fb72af05c624742
MD5 40741124804ae684257ef166098061e6
BLAKE2b-256 051a6f49d9c676d59bfc44f40d7462e2f1b9a0d5a2f03d97b5e236547e7251ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3bbf027db560eb287baf2122a6cc59929151350ec6f25dd8d097e0ba8bccc207
MD5 5f61d562a138b81c3186a65f5394385e
BLAKE2b-256 c7adfeabbc4ecea9a75956ba9d331d2e091eaef9b24056eaec1aa1e63fa243df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fcee9a68b4c86222eef2f60cc3d9b5fbf4b0ffcef69f4415b1c0b133db1b91d
MD5 a199eef556999897130d6f0cc82fcef4
BLAKE2b-256 995e23d711fbb4eea2de7ac24b5ac2ca75dd0b4d3155ef1e75ee03d38bac9f4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gersemi-0.27.3-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 33868c86cf3a1a14adcf6f5de6c6c9124e4fe109a8dad23459879a639e3ddae7
MD5 fd5531947a01cf8dc1a3ea54dcd5553e
BLAKE2b-256 2fa259840933c77b452e43a858d6bb35165a61121e9ed057d6efffa46834dd5e

See more details on using hashes here.

Provenance

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