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
Python code to divide big numbers

divide-big-num Python code to divide big numbers

VuMinhNgoc 1 Oct 15, 2021
Find unused resource keys in properties files in a Salesforce Commerce Cloud project and get rid of them.

Find Unused Resource Keys Find unused resource keys in properties files in a Salesforce Commerce Cloud project and get rid of them. It looks through a

Noël 5 Jan 08, 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
iOS Snapchat parser for chats and cached files

ParseSnapchat iOS Snapchat parser for chats and cached files Tested on Windows and Linux install required libraries: pip install -r requirements.txt c

11 Dec 05, 2022
This is Cool Utility tools that you can use in python.

This is Cool Utility tools that you can use in python. There are a few tools that you might find very useful, you can use this on pretty much any project and some utils might help you a lot and save

Senarc Studios 6 Apr 18, 2022
Greenery - tools for parsing and manipulating regular expressions

Greenery - tools for parsing and manipulating regular expressions

qntm 242 Dec 15, 2022
A simple gpsd client and python library.

gpsdclient A small and simple gpsd client and library Installation Needs Python 3 (no other dependencies). If you want to use the library, use pip: pi

Thomas Feldmann 33 Nov 24, 2022
Similar looking domain detection using python fuzzywuzzy

Major cause of phishing and BEC incident is similar looking domain, if you detect it early, you can prevent incidents early, python fuzzywuzzy module let you do that

2 Nov 07, 2021
Utility to play with ADCS, allows to request tickets and collect information about related objects.

certi Utility to play with ADCS, allows to request tickets and collect information about related objects. Basically, it's the impacket copy of Certify

Eloy 185 Dec 29, 2022
Python Libraries with functions and constants related to electrical engineering.

ElectricPy Electrical-Engineering-for-Python Python Libraries with functions and constants related to electrical engineering. The functions and consta

Joe Stanley 39 Dec 23, 2022
Macro recording and metaprogramming in Python

macro-kit is a package for efficient macro recording and metaprogramming in Python using abstract syntax tree (AST).

8 Aug 31, 2022
kawadi is a versatile tool that used as a form of weapon and is used to cut, shape and split wood.

kawadi kawadi (કવાડિ in Gujarati) (Axe in English) is a versatile tool that used as a form of weapon and is used to cut, shape and split wood. kawadi

Jay Vala 2 Jan 10, 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
A simple tool that updates your pubspec.yaml file, of a Flutter project, without altering the structure of your file.

A simple tool that updates your pubspec.yaml file, of a Flutter project, without altering the structure of your file.

3 Dec 10, 2021
ZX Spectrum Utilities: (zx-spectrum-utils)

Here are a few utility programs that can be used with the zx spectrum. The ZX Spectrum is one of the first home computers from the early 1980s.

Graham Oakes 4 Mar 07, 2022
Data Utilities e.g. for importing files to onetask

Use this repository to easily convert your source files (csv, txt, excel, json, html) into record-oriented JSON files that can be uploaded into onetask.

onetask.ai 1 Jul 18, 2022
A Python package implementing various colour checker detection algorithms and related utilities.

A Python package implementing various colour checker detection algorithms and related utilities.

colour-science 147 Dec 29, 2022
Casefy (/keɪsfaɪ/) is a lightweight Python package to convert the casing of strings

Casefy (/keɪsfaɪ/) is a lightweight Python package to convert the casing of strings. It has no third-party dependencies and supports Unicode.

Diego Miguel Lozano 12 Jan 08, 2023
Python library to decorate and beautify strings

outputformat Python library to decorate and beautify your standard output 💖 Ins

Felipe Delestro Matos 259 Dec 13, 2022
'ToolBurnt' A Set Of Tools In One Place =}

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

MasterBurnt 5 Sep 10, 2022