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
async parser for JET

This project is mainly aims to provide an async parsing option for NTDS.dit database file for obtaining user secrets.

15 Mar 08, 2022
Abby's Left Hand Modifiers Dictionary

Abby's Left Hand Modifiers Dictionary Design This dictionary is inspired by and

12 Dec 08, 2022
jsoooooooon derulo - Make sure your 'jason derulo' is featured as the first part of your json data

jsonderulo Make sure your 'jason derulo' is featured as the first part of your json data Install: # python pip install jsonderulo poetry add jsonderul

jesse 3 Sep 13, 2021
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 e

Python Code Quality Authority 5.5k Jan 08, 2023
Prime Path Generator is a prime path generator used to generate prime paths.

Prime Path Generator is a prime path generator used to generate prime paths.

1 Nov 06, 2021
Python program for Linux users to change any url to any domain name they want.

URLMask Python program for Linux users to change a URL to ANY domain. A program than can take any url and mask it to any domain name you like. E.g. ne

2 Jun 20, 2022
🚧Useful shortcuts for simple task on windows

Windows Manager A tool containg useful utilities for performing simple shortcut tasks on Windows 10 OS. Features Lit Up - Turns up screen brightness t

Olawale Oyeyipo 0 Mar 24, 2022
Python USD rate in RUB parser

Python EUR and USD rate parser. Python USD and EUR rate in RUB parser. Parsing i

Andrew 2 Feb 17, 2022
Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python

Pyfunctools Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python, bringing functional

Natanael dos Santos Feitosa 5 Dec 22, 2022
Napari plugin for loading Bitplane Imaris files .ims

napari-imaris-loader Napari plugin for loading Bitplane Imaris files '.ims'. Notes: For this plugin to work "File/Preferences/Experimental/Render Imag

Alan Watson 4 Dec 01, 2022
A python lib for generate random string and digits and special characters or A combination of them

A python lib for generate random string and digits and special characters or A combination of them

Torham 4 Nov 15, 2022
MicroMIUI - Script to optimize miui and not only

MicroMIUI - Script to optimize miui and not only

Groiznyi-Studio 1 Nov 02, 2021
Let's renew the puzzle collection. We'll produce a collection of new puzzles out of the lichess game database.

Let's renew the puzzle collection. We'll produce a collection of new puzzles out of the lichess game database.

Thibault Duplessis 96 Jan 03, 2023
A python package containing all the basic functions and classes for python. From simple addition to advanced file encryption.

A python package containing all the basic functions and classes for python. From simple addition to advanced file encryption.

PyBash 11 May 22, 2022
A Python utility belt containing simple tools, a stdlib like feel, and extra batteries. Hashing, Caching, Timing, Progress, and more made easy!

Ubelt is a small library of robust, tested, documented, and simple functions that extend the Python standard library. It has a flat API that all behav

Jon Crall 638 Dec 13, 2022
PyGMT - A Python interface for the Generic Mapping Tools

PyGMT A Python interface for the Generic Mapping Tools Documentation (development version) | Contact | Try Online Why PyGMT? A beautiful map is worth

The Generic Mapping Tools (GMT) 564 Dec 28, 2022
✨ Un juste prix totalement fait en Python par moi, et en français.

Juste Prix ❗ Un juste prix totalement fait en Python par moi, et en français. 🔮 Avec l'utilisation du module "random", j'ai pu faire un choix aléatoi

MrGabin 3 Jun 06, 2021
MITRE ATT&CK Lookup Tool

MITRE ATT&CK Lookup Tool attack-lookup is a tool that lets you easily check what Tactic, Technique, or Sub-technique ID maps to what name, and vice ve

Curated Intel 33 Nov 22, 2022
Various importers for cointracker

cointracker_importers Various importers for cointracker To convert nexo .csv format to cointracker .csv format: Download nexo csv file. run python Nex

Stefanos Anastasiou 9 Oct 24, 2022
Python implementation of Gorilla time series compression

Gorilla Time Series Compression This is an implementation (with some adaptations) of the compression algorithm described in section 4.1 (Time series c

Ghiles Meddour 19 Jan 01, 2023