{"id":19448469,"url":"https://github.com/neurodata/primitives-interfaces","last_synced_at":"2026-04-02T02:46:05.123Z","repository":{"id":44865152,"uuid":"104094733","full_name":"neurodata/primitives-interfaces","owner":"neurodata","description":"A mirror of D3M's primitives-interfaces","archived":false,"fork":false,"pushed_at":"2022-12-08T04:59:59.000Z","size":21520,"stargazers_count":1,"open_issues_count":22,"forks_count":4,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-12T09:16:07.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neurodata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-19T15:43:21.000Z","updated_at":"2024-05-19T14:24:12.000Z","dependencies_parsed_at":"2023-01-24T22:31:11.851Z","dependency_job_id":null,"html_url":"https://github.com/neurodata/primitives-interfaces","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprimitives-interfaces","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprimitives-interfaces/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprimitives-interfaces/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodata%2Fprimitives-interfaces/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neurodata","download_url":"https://codeload.github.com/neurodata/primitives-interfaces/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223978494,"owners_count":17235187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T16:26:54.418Z","updated_at":"2026-04-02T02:46:05.093Z","avatar_url":"https://github.com/neurodata.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python interfaces for TA1 primitives\n\nA collection of Python interfaces for TA1 primitives. They all extend the unified base class\nexposing a common set of methods. The purposes of non-base interfaces are:\n\n* they can declare stricter or specialized input and output types\n* they can signal to TA2 systems which primitives are doing what on a different level\n  than just through input and output types\n* other primitives can declare that they are accepting as an argument just a subset\n  of primitives using that interface class as a type of the argument\n* specialized interfaces can declare additional methods on those primitives (discouraged\n  because it can introduce special casing in TA2 systems, but until typing system is\n  well developed this can help address some limitations)\n* can be used a workaround where a input and output types are not enough\n\nEvery working group is invited to create merge requests with interface\nfor their sets of primitives. The idea is that we have a common interfaces in\nPython so that it is easier to understand how interfaces should work because\ncurrently each interface is described in a different way.\n\n[Primitives Annotation Schema](https://datadrivendiscovery.org/wiki/display/gov/Primitives+Annotation+Schema)\ndefines `interface_type` field. The idea is that each of those values `\u003cinterface\u003e` map to\na `primitive_interfaces.\u003cinterface\u003e` Python module, which exposes one abstract class, the interface for that\ninterface.\n\nSee [supervised_learning.py](https://gitlab.datadrivendiscovery.org/berkeley/primitives-interfaces/blob/unified_interface/primitive_interfaces/supervised_learning.py)\nfor an example of an interface.\n\n## Installation\n\nYou can run\n```\npip install .\n```\nin the root directory of this repository to install the `primitive_interfaces` package.\n\nYou can also install from git directly\n```\npip install git+ssh://git@gitlab.datadrivendiscovery.org/d3m/primitive-interfaces.git@unified_interface\n```\n\nAlternatively, you can run\n```\npip install -e .\n```\nto install the package in [editable mode](https://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode), which means that you can keep editing\nyour local copy of the source code without the need to reinstall after each edit.\n\n## Examples\n\nExamples of primitives using the unified interface can be found\n[in this repository](https://gitlab.datadrivendiscovery.org/d3m/primitive-examples).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodata%2Fprimitives-interfaces","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneurodata%2Fprimitives-interfaces","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodata%2Fprimitives-interfaces/lists"}