Skip to main content

Python client for GNparser

Project description

pyGNparser

https://img.shields.io/pypi/v/pygnparser.svg https://github.com/gnames/pygnparser/workflows/Python/badge.svg

This is a Python wrapper on the GNparser API. Code follow the spirit/approach of the pygbif package, and indeed much of the wrapping utility is copied 1:1 from that repo, thanks @sckott and other contributors.

Installation

Add this line to your application's requirements.txt:

pygnparser

And then execute:

$ pip install -r requirements.txt

Or install it yourself as:

$ pip install pygnparser

Usage

Import the library:

from pygnparser import gnparser

If you have a local installation of gnparser, set the GNPARSER_BASE_URL to the host and port that the service is running on, for example if running locally on port 8787:

GNPARSER_BASE_URL = "http://localhost:8787/"

Without the GNPARSER_BASE_URL environment variable set, the wrapper will default to using the remote API which will perform slower: https://parser.globalnames.org/


Parse a scientific name

Parse a scientific name:

>>> result = gnparser('Ursus arctos Linnaeus, 1758') #  => Dictionary

Check if parsed:

>>> result.parsed() #  => Boolean
True

Get parsed quality:

>>> result.quality() #  => Integer
1

Get the genus name:

>>> result.genus() #  => String
'Ursus'

Get the species name:

>>> result.species() #  => String
'arctos'

Get the year:

>>> result.year() #  => String
'1758'

Get the authorship:

>>> result.authorship() #  => String
'(Linnaeus, 1758)'

Get the scientific name without the Latin gender stem:

>>> result.canonical_stemmed() #  => String
'Ursus arct'

Get the parsed name components for a hybrid formula:

>>> result = gnparser('Isoetes lacustris × stricta Gay') #  => Dictionary
>>> result.is_hybrid() #  => Boolean
True
>>> result.hybrid() #  => String
'HYBRID_FORMULA'
>>> result.normalized() #  => String
'Isoetes lacustris × Isoetes stricta Gay'
>>> result.hybrid_formula_ranks() #  => Array
['species', 'species']
>>> res.hybrid_formula_genera() #  => Array
['Isoetes', 'Isoetes']
>>> res.hybrid_formula_species() #  => Array
['lacustris', 'stricta']
>>> res.hybrid_formula_authorship() #  => Array
['', 'Gay']

Parse multiple scientific names

Parse multiple scientific names by separating them with \r\n:

results = gnparser('Ursus arctos Linnaeus, 1758\r\nAlces alces (Linnaeus, 1758)\r\nRangifer tarandus (Linnaeus, 1758)\r\nUrsus maritimus (Phipps, 1774') #  => Array

Get the genus of the 1st parsed name in the list:

results[0].genus() #  => String
'Ursus'

Deviations

Some extra helpers are included that extend the functionality of GNparser.

  1. The page() method gets the page number out of the unparsed tail:
>>> result = gnparser('Ursus arctos Linnaeus, 1758: 81')
result.page()  # => String
'81'
  1. The authorship() method returns a formatted authorship string depending on the number of authors. If it is one author with a year, it will return as Smith, 1970. For two authors and a year it will return as Smith & Johnson, 1970. For three authors it will return as Smith, Johnson & Jones, 1970. Any additional authors beyond 3 will be comma separated with the last author included with an ampersand.
>>> result = gnparser('Aus bus cus Smith, Johnson, & Jones, 1970')
result.authorship()  # => String
'Smith, Johnson & Jones, 1970'
  1. The infraspecies() method will return the infraspecies name. Currently there is no special methods for ranks lower than trinomials but you can access them with the infraspecies_details() method. Please open an issue if you need it added.
>>> result = gnparser('Aus bus cus')
result.infraspecies()  # => String
'cus'

Other GNparser Libraries


Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/gnames/pygnparser. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.


Development

After checking out the repo, change into the package directory cd pygnparser, run pip install . to install the package, and pip install -r requirements.txt to install the dependencies. Then, run pytest to run the tests. You can also run bin/console for an interactive Python prompt that will allow you to experiment with the above example commands.


License

The package is available as open source under the terms of the MIT license. You can learn more about the MIT license on Wikipedia and compare it with other open source licenses at the Open Source Initiative.


Code of Conduct

Everyone interacting in the pyGNparser project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

[Unreleased]

[0.0.3] - 2024-10-14

  • Added uninomial method

[0.0.2] - 2024-10-10

  • Added named hybrid and hybrid formula handling
  • Added original authorship and combination authorship handling
  • Added et_al_cutoff parameter to authorship formatting

[0.0.1] - 2024-03-27

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygnparser-0.0.3.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

pyGNparser-0.0.3-py2.py3-none-any.whl (11.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pygnparser-0.0.3.tar.gz.

File metadata

  • Download URL: pygnparser-0.0.3.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pygnparser-0.0.3.tar.gz
Algorithm Hash digest
SHA256 39ba2a49c488d5885e77bbefcb96faab7fcbe2a4e5ad2291cfd29806556b72c4
MD5 b66df64cb708c3236850cf75b4022ad3
BLAKE2b-256 016b34e69d074ec8de4f13e3fd8503dd46de80542bce2db68d8b36d2f7490431

See more details on using hashes here.

File details

Details for the file pyGNparser-0.0.3-py2.py3-none-any.whl.

File metadata

  • Download URL: pyGNparser-0.0.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyGNparser-0.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c85228b5d7f85b38bb916f4c2fdb179bc3470433675092564f5fb2a451a7d0ea
MD5 3d45e2d9793096b22725214817adadc0
BLAKE2b-256 c3fbef2673e93c01e82cee092f1635d5f93d82e2a5c030bb2e51a97909336f42

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page