Skip to main content

Ceres Build Status Coverage Status PyPI version

Ceres is a library that aims at dealing with data in general, and software development data in particular.

The initial goal of Ceres is to parse information in several ways from the Perceval tool in the GrimoireLab project.

However, the more code is added to this project, the more generic methods are found to be useful in other areas of analysis.

The following are the areas of analysis that Ceres can help at:

Eventize

The 'eventizer' helps to split information coming from Perceval. In short, Perceval produces JSON documents and those can be consumed by Ceres and by the 'eventizing' side of the library.

By 'eventizing', this means the process to parse a full Perceval JSON document and produce a Pandas DataFrame with certain amount of information.

As an example, a commit contains information about the commit itself, and the files that were 'touched' at some point. Depending on the granularity of the analysis Ceres will work in the following way:

  • Granularity = 1: This is the first level and produces 1 to 1 relationship with the main items in the original data source. For example 1 commit would be just 1 row in the resultant dataframe. This would be a similar case for a code review process in Gerrit or in Bugzilla for tickets.
  • Granularity = 2: This is the second level and depends on the data source how in depth this goes. In the specific case of commits, this would return n rows in the dataframe. And there will be as many rows as files where 'touched' in the original data source.

Format

The format part of the library contains some utils that are useful for some basic formatting actions such as having a whole column in the Pandas dataframe with the same string format.

Another example would be the use of the format utils to cast from string to date using datetuils and applying the method to a whole column of a given dataframe.

Filter

The filter utility basically removes rows based on certain values in certain cells of a dataframe.

Data Enrich

This is the utility most context-related together with the eventizing actions. This will add or modify one or more columns in several ways.

There are several examples such as taking care of the surrogates enabling UTF8, adding new columns based on some actions on others, adding the gender of the name provided in another column, and others.

How can you help here?

This project is still quite new, and the development is really slow, so any extra hand would be really awesome, even giving directions, pieces of advice or feature requests :).

And of course, using the software would be great!

Where to start?

The examples folder contains some of the clients I've used for some analysis such as the gender analysis or to produce dataframes that help to understand the areas of the code where developers are working.

Those are probably a good place to have a look at.

Requirements

  • Python >= 3.10

You will also need some other libraries for running the tool, you can find the whole list of dependencies in pyproject.toml file.

Installation

There are several ways to install Cereslib on your system: packages or source code using Poetry or pip.

PyPI

Cereslib can be installed using pip, a tool for installing Python packages. To do it, run the next command:

$ pip install cereslib

Source code

To install from the source code you will need to clone the repository first:

$ git clone https://github.com/chaoss/grimoirelab-cereslib
$ cd grimoirelab-cereslib

Then use pip or Poetry to install the package along with its dependencies.

Pip

To install the package from local directory run the following command:

$ pip install .

In case you are a developer, you should install cereslib in editable mode:

$ pip install -e .

Poetry

We use poetry for dependency management and packaging. You can install it following its documentation. Once you have installed it, you can install cereslib and the dependencies in a project isolated environment using:

$ poetry install

To spaw a new shell within the virtual environment use:

$ poetry shell

License

Licensed under GNU General Public License (GPL), version 3 or later.

Metadata

Release files for cereslib 1.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cereslib 1.1.12
File Size Uploaded Provenance Actions
cereslib-1.1.12.tar.gz 29.4 kB Without provenance Details for cereslib-1.1.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cereslib 1.1.12
File Interpreter ABI Platform Actions
cereslib-1.1.12-py3-none-any.whl Python 3 none any Details for cereslib-1.1.12-py3-none-any.whl

Total release size: 53.3 kB

Release files / cereslib-1.1.12.tar.gz

Download URL cereslib-1.1.12.tar.gz
Size 29.4 kB
Tags Source
SHA-256 checksum
How to use checksums
47cd4d6e7c28f22a3a5a8d8f0e952ade8ec857bcd553140c8fa1f4349fa8bd71
BLAKE2b-256 checksum
How to use checksums
c755714212ba18926f66cb779e4aca7afc64bc0fdfe939ee2799472fbc141bad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.5.1 CPython/3.14.4 Linux/7.0.0-1017-azure

Release files / cereslib-1.1.12-py3-none-any.whl

Download URL cereslib-1.1.12-py3-none-any.whl
Size 23.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
256aacc646ac0589726995d75351bd1186f4088f0fd9dfc6a0cc2cf99a2fabd1
BLAKE2b-256 checksum
How to use checksums
68c509d6ce66d87ec00aed83d47da53781b9749ba0552f70e35e717dea520bf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.5.1 CPython/3.14.4 Linux/7.0.0-1017-azure

Security for cereslib 1.1.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.1.12 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page