mex.common.orcid package

Submodules

mex.common.orcid.connector module

class mex.common.orcid.connector.OrcidConnector

Bases: HTTPConnector

Connector class for querying Orcid records.

_check_availability() None

Send a GET request to verify the host is available.

_set_url() None

Set url of the host.

build_query(filters: dict[str, Any]) str

Construct the ORCID API query string.

get_record_by_id(orcid_id: str) OrcidRecord

Get a single orcid record by id.

Parameters:

orcid_id – Unique identifier in ORCID system.

Returns:

Orcid record of the single matching id.

search_records_by_name(given_names: str | None = None, family_name: str | None = None, given_and_family_names: str | None = None, filters: dict[str, Any] | None = None, skip: int = 0, limit: int = 10) OrcidSearchResponse

Search for orcid results for the given filters.

Parameters:
  • given_names – Optional given name of a person.

  • family_name – Optional surname of a person.

  • given_and_family_names – Optional full name of a person.

  • filters – Key-value pairs representing ORCID search filters.

  • skip – How many items to skip for pagination.

  • limit – How many items to return in one page.

Returns:

Paginated list of orcid results.

mex.common.orcid.extract module

mex.common.orcid.extract.get_orcid_record_by_id(orcid_id: str) OrcidRecord

Get a single orcid record by id.

Parameters:

orcid_id – Unique identifier in ORCID system.

Returns:

Orcid record of the single matching id.

mex.common.orcid.extract.get_orcid_record_by_name(given_names: str | None = None, family_name: str | None = None, given_and_family_names: str | None = None, filters: dict[str, Any] | None = None) OrcidRecord

Get OrcidRecord of a single person for the given filters.

Parameters:
  • given_names – Optional given name of a person.

  • family_name – Optional surname of a person.

  • given_and_family_names – Optional full name of a person.

  • filters – Key-value pairs representing ORCID search filters.

Raises:
Returns:

OrcidRecord of the matching person by name.

mex.common.orcid.extract.search_records_by_name(given_names: str | None = None, family_name: str | None = None, given_and_family_names: str | None = None, filters: dict[str, Any] | None = None, skip: int = 0, limit: int = 10) PaginatedItemsContainer[OrcidRecord]

Get all Orcid records for the given filters.

Parameters:
  • given_names – Optional given name of a person.

  • family_name – Optional surname of a person.

  • given_and_family_names – Optional full name of a person.

  • filters – Key-value pairs representing ORCID search filters.

  • skip – How many items to skip for pagination.

  • limit – How many items to return in one page.

Returns:

Paginated container of orcid records.

mex.common.orcid.models module

class mex.common.orcid.models.OrcidEmail(*, email: list[str])

Bases: BaseModel

Model class for Orcid email.

email: list[str]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class mex.common.orcid.models.OrcidEmails(*, email: list[OrcidEmail])

Bases: BaseModel

Model class for Orcid emails.

email: list[OrcidEmail]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class mex.common.orcid.models.OrcidFamilyName(*, value: str)

Bases: BaseModel

Model class for orcid family names.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: str
class mex.common.orcid.models.OrcidGivenNames(*, value: str)

Bases: BaseModel

Model class for Orcid given names.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: str
class mex.common.orcid.models.OrcidIdentifier(*, path: str, uri: str)

Bases: BaseModel

Model class for OrcidID.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

path: str
uri: str
class mex.common.orcid.models.OrcidName(*, family_name: OrcidFamilyName | None, given_names: OrcidGivenNames | None, visibility: str)

Bases: BaseModel

Model class for Orcid name.

family_name: OrcidFamilyName | None
given_names: OrcidGivenNames | None
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

visibility: str
class mex.common.orcid.models.OrcidPerson(*, emails: OrcidEmails, name: OrcidName)

Bases: BaseModel

Model class for Orcid person.

emails: OrcidEmails
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: OrcidName
class mex.common.orcid.models.OrcidRecord(*, orcid_identifier: OrcidIdentifier, person: OrcidPerson)

Bases: BaseModel

Model class for Orcid record.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

orcid_identifier: OrcidIdentifier
person: OrcidPerson
class mex.common.orcid.models.OrcidSearchItem(*, orcid_identifier: OrcidIdentifier)

Bases: BaseModel

Model class for a single search result item.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

orcid_identifier: OrcidIdentifier
class mex.common.orcid.models.OrcidSearchResponse(*, num_found: int, result: list[OrcidSearchItem])

Bases: BaseModel

Model class for a search response.

model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_max_length': 100000, 'str_min_length': 1, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

num_found: int
result: list[OrcidSearchItem]

mex.common.orcid.transform module

mex.common.orcid.transform.transform_orcid_person_to_mex_person(orcid_record: OrcidRecord, primary_source_id: MergedPrimarySourceIdentifier) ExtractedPerson

Transforms a single ORCID person to an ExtractedPerson.

Parameters:
  • orcid_record – OrcidRecord object of a person.

  • primary_source_id – Primary source identifier for Orcid.

Returns:

ExtractedPerson.

Module contents