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
Search, generate & deliver Msfvenom payloads in an quick and easy way

Goal Search, generate & deliver payloads in an quick and easy way Be as simple as possible BUT with all msfvenom payloads. Ever lost time searching th

2 Mar 03, 2022
The git for the Python Story Utility Package library.

SUP The git for the Python Story Utility Package library. Installation: Install SUP by simply running pip install psup in your terminal. Check out our

Enoki 6 Nov 27, 2022
Simplex using Jordan exchanges taught in 236A

Simplex for 236A Python script to solve LP using simplex by Jordan exchanges taught in 236A. You will need python installed along with the 'numpy' and

Kunal Kishore 1 Nov 30, 2021
Shypan, a simple, easy to use, full-featured library written in Python.

Shypan, a simple, easy to use, full-featured library written in Python.

ShypanLib 4 Dec 08, 2021
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
cpp20.py is a Python script to compile C++20 code using modules.

cpp20.py is a Python script to compile C++20 code using modules. It browses the source files to determine their dependencies. Then, it compiles then in order using the correct flags.

Julien VERNAY 6 Aug 26, 2022
Course-parsing - Parsing Course Info for NIT Kurukshetra

Parsing Course Info for NIT Kurukshetra Overview This repository houses code for

Saksham Mittal 3 Feb 03, 2022
This code renames subtitle file names to your video files names, so you don't need to rename them manually.

Rename Subtitle This code renames your subtitle file names to your video file names so you don't need to do it manually Note: It only works for series

Mostafa Kazemi 4 Sep 12, 2021
A python app which aggregates and splits costs from multiple public cloud providers into a csv

Cloud Billing This project aggregates the costs public cloud resources by accounts, services and tags by importing the invoices from public cloud prov

1 Oct 04, 2022
A collection of utility functions to prototype geometry processing research in python

gpytoolbox This repo is a work in progress and contains general utility functions I have needed to code while trying to work on geometry process resea

Silvia Sellán 73 Jan 06, 2023
✨ Un générateur de lien raccourcis en fonction d'un lien totalement fait en Python par moi, et en français.

Shorter Link ❗ Un générateur de lien raccourcis en fonction d'un lien totalement fait en Python par moi, et en français. Dépendences : pip install pys

MrGabin 3 Jun 06, 2021
More routines for operating on iterables, beyond itertools

More Itertools Python's itertools library is a gem - you can compose elegant solutions for a variety of problems with the functions it provides. In mo

2.9k Jan 06, 2023
Fuzzy box is a quick program I wrote to fuzz a URL that is in the format https:// url 20characterstring.

What is this? Fuzzy box is a quick program I wrote to fuzz a URL that is in the format https://url/20characterstring.extension. I have redacted th

Graham Helton 1 Oct 19, 2021
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
Password generator

Password generator technologies used What is? It is Password generator How to Download? Download on releases Clone repo git clone https://github.com/m

Miek 1 Nov 02, 2021
A tool for testing improper put method vulnerability

Putter-CUP A tool for testing improper put method vulnerability Usage :- python3 put.py -f live-subs.txt Result :- The result in txt file "result.txt"

Zahir Tariq 6 Aug 06, 2021
cssOrganizer - organize a css file by grouping them into categories

This python project was created to scan through a CSS file and produce a more organized CSS file by grouping related CSS Properties within selectors. Created in my spare time for fun and my own utili

Andrew Espindola 0 Aug 31, 2022
Python code to divide big numbers

divide-big-num Python code to divide big numbers

VuMinhNgoc 1 Oct 15, 2021
Python code to remove empty folders from Windows/Android.

Empty Folder Cleaner is a program that deletes empty folders from your computer or device and removes clutter to improve performance. It supports only windows and android for now.

Dark Coder Cat | Vansh 4 Sep 27, 2022
A library to easily convert climbing route grades between different grading systems.

pyclimb A library to easily convert climbing route grades between different grading systems. In rock climbing, mountaineering, and other climbing disc

Ilias Antonopoulos 4 Jan 26, 2022