hermes.commands.harvest.git

Attributes

Classes

NodeRegister

Helper class to unify Git commit authors and committers.

ContributorData

Stores contributor data information from Git history.

GitHarvestSettings

!!! abstract "Usage Documentation"

GitHarvestPlugin

Base plugin that does harvesting.

Module Contents

class hermes.commands.harvest.git.NodeRegister(cls, *order, **mapping)

Helper class to unify Git commit authors and committers.

This class keeps track of all registered instances and merges two ContributorData instances if some attributes match.

add(node: Any)

Add (or merge) a new node to the register. :param node: The node that should be added.

update(**kwargs)

Add (or merge) a new item to the register with the given attribute values.

Fixme:

This is not a good implementation strategy at all.

Parameters:

kwargs – The attribute values to be stored.

class hermes.commands.harvest.git.ContributorData(name: str | List[str], email: str | List[str], timestamp: str | List[str], role: str | List[str])

Stores contributor data information from Git history.

__str__()
_update_attr(target, value, unique=True)
update(name=None, email=None, timestamp=None, role=None)

Update the current contributor with the given data.

Parameters:
  • name – New name to assign (addtionally).

  • email – New email to assign (additionally).

  • timestamp – New timestamp to adapt time range.

merge(other: ContributorData)

Merge another ContributorData instance into this one.

All attributes will be merged yet kept unique if required.

Parameters:

other – The other instance that should contribute to this.

to_codemeta() dict

Return the current dataset as CodeMeta.

Returns:

The CodeMeta representation of this dataset.

hermes.commands.harvest.git.SHELL_ENCODING = 'utf-8'
hermes.commands.harvest.git._GIT_SEP = '|'
hermes.commands.harvest.git._GIT_FORMAT = ['%aN', '%aE', '%aI', '%cN', '%cE', '%cI']
hermes.commands.harvest.git._GIT_ARGS = []
class hermes.commands.harvest.git.GitHarvestSettings(/, **data: Any)

Bases: pydantic.BaseModel

!!! abstract “Usage Documentation”

[Models](../concepts/models.md)

A base class for creating Pydantic models.

__class_vars__

The names of the class variables defined on the model.

__private_attributes__

Metadata about the private attributes of the model.

__signature__

The synthesized __init__ [Signature][inspect.Signature] of the model.

__pydantic_complete__

Whether model building is completed, or if there are still undefined fields.

__pydantic_core_schema__

The core schema of the model.

__pydantic_custom_init__

Whether the model has a custom __init__ function.

__pydantic_decorators__

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_generic_metadata__

A dictionary containing metadata about generic Pydantic models. The origin and args items map to the [__origin__][genericalias.__origin__] and [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias], and the parameter item maps to the __parameter__ attribute of generic classes.

__pydantic_parent_namespace__

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__

The name of the post-init method for the model, if defined.

__pydantic_root_model__

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_validator__

The pydantic-core SchemaValidator used to validate instances of the model.

__pydantic_fields__

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

__pydantic_computed_fields__

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_extra__

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to ‘allow’.

__pydantic_fields_set__

The names of fields explicitly set during instantiation.

__pydantic_private__

Values of private attributes set on the model instance.

class hermes.commands.harvest.git.GitHarvestPlugin

Bases: hermes.commands.harvest.base.HermesHarvestPlugin

Base plugin that does harvesting.

operations

The information recorded on the load operations executed by the plugin.

Type:

list[tuple[dict[str, str], dict[str, str], dict[str, str]]]

TODO: describe the harvesting process and how this is mapped to this plugin.

_run_git(subcommand: str, *args: str) TextIO
__call__(command: hermes.commands.harvest.base.HermesHarvestCommand) hermes.model.api.SoftwareMetadata

Implementation of a harvester that provides author, branch & remote data from Git.

_audit_contributors(contributors, audit_log: logging.Logger)
_merge_contributors(git_authors: NodeRegister, git_committers: NodeRegister) NodeRegister

Merge the git authors and git committers NodeRegister and assign the respective roles for each node.