A library to easily convert climbing route grades between different grading systems.

Overview

pyclimb

PyPI PyPI - Python Version codecov Code style: black GitHub Workflow Status PyPI - Wheel

A library to easily convert climbing route grades between different grading systems.

In rock climbing, mountaineering, and other climbing disciplines, climbers give a grade to a climbing route or boulder problem, intended to describe concisely the difficulty and danger of climbing it. Different types of climbing (such as sport climbing, bouldering or ice climbing) each have their own grading systems, and many nationalities developed their own, distinctive grading systems.

Install

The recommended installation is via pip:

pip install pyclimb

Usage

import pyclimb


pyclimb.convert(grade='6a+', to='YDS')
// '5.10b'
pyclimb.convert(grade='9c', to='YDS')
// '5.15d'

Note

This is a package under active development. Currently, only the following conversions are being supported:

Other conversions and different types of climbing will be included soon. These changes may drastically change the user-facing API, so do consult the semantic versioning of this package before upgrading to a newer version.

How to contribute

If you wish to contribute, this is a great place to start!

License

Distributed under the MIT License.

You might also like...
A workflow management tool for numerical models on the NCI computing systems

Payu Payu is a climate model workflow management tool for supercomputing environments. Payu is currently only configured for use on computing clusters

Daiho Tool is a Script Gathering for Windows/Linux systems written in Python.
Daiho Tool is a Script Gathering for Windows/Linux systems written in Python.

Daiho is a Script Developed with Python3. It gathers a total of 22 Discord tools (including a RAT, a Raid Tool, a Nuker Tool, a Token Grabberr, etc). It has a pleasant and intuitive interface to facilitate the use of all with help and explanations for each of them.

osqueryIR is an artifact collection tool for Linux systems.
osqueryIR is an artifact collection tool for Linux systems.

osqueryIR osqueryIR is an artifact collection tool for Linux systems. It provides the following capabilities: Execute osquery SQL queries Collect file

A functional standard library for Python.

Toolz A set of utility functions for iterators, functions, and dictionaries. See the PyToolz documentation at https://toolz.readthedocs.io LICENSE New

🔩 Like builtins, but boltons. 250+ constructs, recipes, and snippets which extend (and rely on nothing but) the Python standard library. Nothing like Michael Bolton.

Boltons boltons should be builtins. Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the same spirit as — and yet conspicuously mis

Retrying library for Python

Tenacity Tenacity is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just

Retrying is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything.

Retrying Retrying is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just

isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type.
isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type.

isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type. It provides a command line utility, Python library and plugins for various editors to quickly sort all your imports.

A Python library for reading, writing and visualizing the OMEGA Format
A Python library for reading, writing and visualizing the OMEGA Format

A Python library for reading, writing and visualizing the OMEGA Format, targeted towards storing reference and perception data in the automotive context on an object list basis with a focus on an urban use case.

Comments
  • support for python 3.11

    support for python 3.11

    Is your feature request related to a problem? Please describe. python version support.

    Describe the solution you'd like pydatagovgr to also support python 3.11 (first released: 2022-10-24)

    Additional context https://www.python.org/downloads/release/python-3110/

    opened by ilias-ant 0
  • support different climbing types (e.g. bouldering)

    support different climbing types (e.g. bouldering)

    Right now, library supports grading conversion only in the context of sport climbing (and trad?). For example, bouldering has a different grading scheme.

    opened by ilias-ant 0
Releases(v0.2.0)
  • v0.2.0(Jan 30, 2022)

    It supports full conversion between French and YDS grades, by implementing the YDS-to-French conversion path.

    Features

    • pyclimb.convert now supports conversion from YDS grades to the French grading system.

    • pyclimb.convert has a new required argument called grade_system that refers to the grade system in which grade belongs. This contextual information is necessary in order to be able to map between multiple grading systems.

    • GradeConversionError exception now includes the user-defined param that led to the raising.

    • GradeConversionError exception chaining is now explicitly suppressed, for simplicity. For example: before:

        >>> pyclimb.convert(grade='9c', grade_system='French', to='foo')
      
        Traceback (most recent call last):
          File "/workspaces/pyclimb/pyclimb/converter.py", line 33, in convert
            output_grading = GradingSystem(to)
          File "/opt/python/3.8.12/lib/python3.8/enum.py", line 339, in __call__
            return cls.__new__(cls, value)
          File "/opt/python/3.8.12/lib/python3.8/enum.py", line 663, in __new__
            raise ve_exc
        ValueError: 'foo' is not a valid GradingSystem
      
        During handling of the above exception, another exception occurred:
      
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/workspaces/pyclimb/pyclimb/converter.py", line 36, in convert
            raise exceptions.GradeConversionError(
        pyclimb.exceptions.GradeConversionError: Grade could not be converted: foo is not a recognized grading system.
      

      now:

        >>> pyclimb.convert(grade='9c', grade_system='French', to='foo')
      
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        NameError: name 'pyclimb' is not defined
        >>> import pyclimb
        >>> pyclimb.convert(grade='9c', grade_system='French', to='foo')
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/workspaces/pyclimb/pyclimb/converter.py", line 36, in convert
            raise exceptions.GradeConversionError(
        pyclimb.exceptions.GradeConversionError: Grade could not be converted: foo is not a recognized grading system.
      

    Docs

    • updated Usage section of README
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jan 23, 2022)

    The inaugural release - it introduces the most basic functionality of pyclimb.

    Features

    • pyclimb.convert API, in order to convert between different climbing grades - at the moment, supports only conversion of French grades to the YDS (Yosemite Decimal System).
    • poetry as dependeny management and packaging system.

    Docs

    • README
    • CONTRIBUTING
    • CODE_OF_CONDUCT
    • SECURITY
    • LICENSE
    • ISSUE_TEMPLATE: bug_report, feature_request

    CI/CD

    • CI step as Github action
    • CD step as Github action
    Source code(tar.gz)
    Source code(zip)
Owner
Ilias Antonopoulos
Machine Learning Engineer | MSc student.
Ilias Antonopoulos
Simple tool for creating changelogs

Description Simple utility for quickly generating changelogs, assuming your commits are ordered as they should be. This tool will simply log all lates

2 Jan 05, 2022
Delete all of your forked repositories on Github

Fork Purger Delete all of your forked repositories on Github Installation Install using pip: pip install fork-purger Exploration Under construc

Redowan Delowar 29 Dec 17, 2022
This tool analyzes the json files generated by stream-lnd-htlcs to find hidden channel demand.

analyze_lnd_htlc Introduction Rebalancing channels is an important part of running a Lightning Network node. While it would be great if all channels c

Marimox 4 Dec 08, 2022
Automatically Generate Rulesets for IIS for Intelligent HTTP/S C2 Redirection

Automatically Generate Rulesets for IIS for Intelligent HTTP/S C2 Redirection This project converts a Cobalt Strike profile to a functional web.config

Jesse 99 Dec 13, 2022
Random Number Generator

Application for generating a random number.

Michael J Bailey 1 Oct 12, 2021
Teleport Ur Logs with Love

Whatever you pipe into tull, will get a unique UUID and the data gets stored locally - accessible via a flask server with simple endpoints. You can use ngrok or localtunnel then to share it outside L

Lokendra Sharma 11 Jul 30, 2021
A (very dirty) experiment to remove layers from a Docker image.

Surgically remove layers from a Docker image (with a chainsaw)

Jérôme Petazzoni 9 Jun 08, 2022
Make your functions return something meaningful, typed, and safe!

Make your functions return something meaningful, typed, and safe! Features Brings functional programming to Python land Provides a bunch of primitives

dry-python 2.6k Jan 09, 2023
'ToolBurnt' A Set Of Tools In One Place =}

'ToolBurnt' A Set Of Tools In One Place =}

MasterBurnt 5 Sep 10, 2022
extract gene TSS/TES site form gencode/ensembl/gencode database GTF file and export bed format file.

GetTsite python Package extract gene TSS/TES site form gencode/ensembl/gencode database GTF file and export bed format file. Install $ pip install Get

laojunjun 7 Nov 21, 2022
Plone Interface contracts, plus basic features and utilities

plone.base This package is the base package of the CMS Plone https://plone.org. It contains only interface contracts and basic features and utilitie

Plone Foundation 1 Oct 03, 2022
Animation retargeting tool for Autodesk Maya. Retargets mocap to a custom rig with a few clicks.

Animation Retargeting Tool for Maya A tool for transferring animation data and mocap from a skeleton to a custom rig in Autodesk Maya. Installation: A

Joaen 63 Jan 06, 2023
Check username

Checker-Oukee Check username It checks the available usernames and creates a new account for them Doesn't need proxies Create a file with usernames an

4 Jun 05, 2022
This tool lets you perform some quick tasks for CTFs and Pentesting.

This tool lets you convert strings and numbers between number bases (2, 8, 10 and 16) as well as ASCII text. You can use the IP address analyzer to find out details on IPv4 and perform abbreviation a

Ayomide Ayodele-Soyebo 1 Jul 16, 2022
A collection of resources/tools and analyses for the angr binary analysis framework.

Awesome angr A collection of resources/tools and analyses for the angr binary analysis framework. This page does not only collect links and external r

105 Jan 02, 2023
Allows you to canibalize methods from classes effectively implementing trait-oriented programming

About This package enables code reuse in non-inheritance way from existing classes, effectively implementing traits-oriented programming pattern. Stor

1 Dec 13, 2021
A color library based on pokemons colors!

pokepalette A simple pokemon color chooser " This repo is based on CDWimmer/PokePalette and was originated from this tweet. If you don't remember your

Thomas Capelle 5 Aug 30, 2021
A Python script that transcript Arcaea chart file (.aff file) into AutoJS touchscreen script which automatically plays the Arcaea chart

ArcaeaAutoplay (AutoJS Version) A Python script that transcript Arcaea chart file (.aff file) into AutoJS touchscreen script which automatically plays

7 Dec 03, 2021
API Rate Limit Decorator

ratelimit APIs are a very common way to interact with web services. As the need to consume data grows, so does the number of API calls necessary to re

Tomas Basham 575 Jan 05, 2023
This utility lets you draw using your laptop's touchpad on Linux.

FingerPaint This utility lets you draw using your laptop's touchpad on Linux. Pressing any key or clicking the touchpad will finish the drawing

Wazzaps 95 Dec 17, 2022