Skip to main content

Project specification

Project description

projspec

A common interface to code projects.

What is a project?

From the point of view of this library, any directory of stuff with metadata describing what that stuff is (contents), what to do with it (artifacts) is a project. This includes things that might be called in other contexts an "application" or "work-space."

This is implemented first in the context of the python-data ecosystem, so we will be concerned with project types that are common in this field, but in principle a wide range of things.

Niche

There are a large number of project-oriented tools already in existence, describing a similarly large number of things about those projects. The tools have a lot of overlap with one-another but also unique use cases.

The following diagram shows an aspirational set of things we wish to consider initially:

project diagram

Where we define:

  • project spec: a way to define a project type, often tied to a particular tool.
  • contents: the things that exist within the project, either as concrete files, as specs (in YAML, toml or other metadata) or links to other projects.
  • artifacts: the things a project makes, outputs or tasks that the project can execute.

Why

The following are the principal features we aim to provide, with the simplest first:

Unified interface

You can interact with all project types the same way. If you only ever use one project management tool, this is not so exciting. However, if you have multiple project types, switching between them can be annoying, especially for rarely used ones (helm is a good example of this in my personal experience).

This should integrate nicely with any project browsing IDE, where you don't necessarily even know what project type a given directory is: no need any more to trawl through README files to figure out how to execute a project.

Programmatic introspection

Unlike most, or maybe all, of the tools references by this library, we will provide not just a CLI, but a python API. You can find all the information about a project, make logical decisions and call the third-party tools automatically.

Also, where a project is principally executed using a particular tool, it might still wish to describe contents/artifacts that are not dealt with by that tool. For instance, you might create environments using uv, but also want to declare data dependencies using intake. The code within the project can then find these assets by introspection.

Index & search

If you have a lot of projects or interact with a project storage service, it can be a task just to figure out which is the right one to solve the task of the day. If we can index them (even remotely, without downloading), you can rapidly query for particular project contents or outputs.

Naturally, this becomes more powerful as more project types and artifacts become indexable, and more projects are stored/shared with you.

Support

Work on this repository is supported in part by:

"Anaconda, Inc. - Advancing AI through open source."

anaconda logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

projspec-0.0.3.tar.gz (425.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

projspec-0.0.3-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file projspec-0.0.3.tar.gz.

File metadata

  • Download URL: projspec-0.0.3.tar.gz
  • Upload date:
  • Size: 425.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for projspec-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a57167fcf9826d625234724ada079505c050aacb49f1c5c74fe28e1dec79dba6
MD5 41b5a24d832c9b726d7834f21449e90d
BLAKE2b-256 2ebf21fadee0d9af81879ead25563151f90a1d0a5249765ee98cdc82a2efe64d

See more details on using hashes here.

File details

Details for the file projspec-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: projspec-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for projspec-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8963e0401b13ab3d47a61d11e596fdea18976c9f0f94f03fe1a76182b9ed7e49
MD5 746bf8bbdaa092f32238daaafccd7c96
BLAKE2b-256 5a94d26ca576fcf5cde13021fea0099517765e87f51bd3f103b8f6ad6d8d06a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page