Skip to main content

projspec

A common interface to code projects.

Please see the documentation for full details.

Installation

$ pip install projspec

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.

Introduction to projspec presented at PyData Global 2025: video slides

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

Metadata

Release files for projspec 0.5.0

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

Source distribution (sdist)

Source distribution for projspec 0.5.0
File Size Uploaded
projspec-0.5.0.tar.gz 1.0 MB Details

Built distribution (wheel)

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

Total release size: 1.7 MB

Release files / projspec-0.5.0.tar.gz

Download URL projspec-0.5.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
85c1ff7f06668a811b91a6b587603c778250c764abd3694f2e15bab59da9cd23
BLAKE2b-256 checksum
How to use checksums
2c28632562387441baa20b0af04ee5d0d6ba98468b81fb776b0c00293935f037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release files / projspec-0.5.0-py3-none-any.whl

Download URL projspec-0.5.0-py3-none-any.whl
Size 667.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb3bd03019718d79b1351af99187a4e2533493bbb4a37307180af9fc5932e0bc
BLAKE2b-256 checksum
How to use checksums
2d03f2c07bdc8102dc494605e30b9fe307c4bddffbcd5914e0201f383ebd6d9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

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