Format author lists for academic texts and journal submissions.
Project description
🚢 Authorship 🚢
Format author lists for academic texts and journal submissions.
🕵️ Why does this exist?
Maintaining author lists on collaborative academic work is a bit of a pain. A lot of us have started collecting author information on Google Sheets since it allows people to input their own information, like their ORCID and affiliations. I wanted to automate turning those sheets into some useful forms for copy/pasting into my manuscripts (e.g., in Google Docs or LaTeX) as well submission forms (e.g., bulk author TSV file import on bioRxiv).
💪 Getting Started
This example shows loading a standardized spreadsheet from Google Sheets that is subsequently printed in a nice text format, in a bioRxiv bulk import format, and in LaTeX for a submission to Nature Scientific Data.
from authorship.readers import GoogleSheetReader
from authorship.writers import BiorxivWriter, ScientificDataWriter, TextWriter
# Standard google sheet
reader = GoogleSheetReader("1Fo1YH3ZzOVrQ4wzKnBm6sPha5hZG66-u-uSMDGUvguI")
TextWriter().print(reader)
BiorxivWriter().print(reader)
ScientificDataWriter().print(reader)
The class-resolver
package can be
used as a shortcut to access the writers based on their names. It's smart and
figures out casing/spacing/ punctuation, so you don't have to worry about so
many imports. The following example does the same as the previous example:
from authorship.readers import GoogleSheetReader
reader = GoogleSheetReader("1Fo1YH3ZzOVrQ4wzKnBm6sPha5hZG66-u-uSMDGUvguI")
reader.print("text")
reader.print("biorxiv", file="~/Desktop/bioregistry_authors_biorxiv.tsv")
reader.print("scientific data")
reader.print("citation cff")
The next example shows loading an OBO community-flavored spreadsheet from Google Sheets. This has been used for the SSSOM, ODK, Cell Ontology, and several other papers.
from authorship.readers import OboGoogleSheetReader
# OBO community-flavored google sheet
reader = OboGoogleSheetReader(
"1NfhibWHOKgV2glmgRdKMzHEzTCw2_dUq_t0Zq64cgeQ",
skiprows=1,
)
reader.print("text")
reader.print("biorxiv", file="~/Desktop/sssom_authors_biorxiv.tsv")
reader.print("scientific data")
🐇 Extending
You can implement your own reader subclassing the authorship.readers.Reader
class and implementing the get_authorship()
function.
Similarly, you can implement your own writer by subclassing the
authorship.writers.Writer
class and implementing the iter_lines()
function.
We'd be happy to accept new plugins, especially to help auto-generate LaTeX for various journal-specific LaTeX templates.
🚀 Installation
The most recent release can be installed from PyPI with:
$ pip install authorship
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/cthoyt/authorship.git
👐 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.md for more information on getting involved.
👋 Attribution
⚖️ License
The code in this package is licensed under the MIT License.
🍪 Cookiecutter
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
🛠️ For Developers
See developer instructions
The final section of the README is for if you want to get involved by making a code contribution.
Development Installation
To install in development mode, use the following:
$ git clone git+https://github.com/cthoyt/authorship.git
$ cd authorship
$ pip install -e .
🥼 Testing
After cloning the repository and installing tox
with pip install tox
, the unit tests in the tests/
folder can be
run reproducibly with:
$ tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
📖 Building the Documentation
The documentation can be built locally using the following:
$ git clone git+https://github.com/cthoyt/authorship.git
$ cd authorship
$ tox -e docs
$ open docs/build/html/index.html
The documentation automatically installs the package as well as the docs
extra specified in the setup.cfg
. sphinx
plugins
like texext
can be added there. Additionally, they need to be added to the
extensions
list in docs/source/conf.py
.
📦 Making a Release
After installing the package in development mode and installing
tox
with pip install tox
, the commands for making a new release are contained within the finish
environment
in tox.ini
. Run the following from the shell:
$ tox -e finish
This script does the following:
- Uses Bump2Version to switch the version number in the
setup.cfg
,src/authorship/version.py
, anddocs/source/conf.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel using
build
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion minor
after.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for authorship-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 089ce59db77cda54bdf926745753189c33ead99bdb73fcd533022654ada8ffba |
|
MD5 | 00bc77fdab0bef75c42757f2e4ee3f1c |
|
BLAKE2b-256 | 5bf6f6c7ab413a81d5a54f8f8f36e2522e3e71d42b5ddd7d20619547bef84479 |