LogoLogo
HomeGitHub RepoBook Demo
dev
dev
  • About Quilt
  • Architecture
  • Mental Model
  • Metadata Management
  • Metadata Workflows
  • Quilt Platform (Catalog) User
    • About the Catalog
    • Bucket Browsing
    • Document Previews
    • Embeddable iFrames
    • Packaging Engine
    • Query
    • Quilt+ URIs
    • Qurator Omni
    • Search
    • Visualization & Dashboards
    • Advanced
      • Athena
      • Elasticsearch
      • Removing Stacks
  • Quilt Platform Administrator
    • Admin Settings UI
    • Catalog Configuration
    • Cross-Account Access
    • Enterprise Installs
    • quilt3.admin Python API
    • Advanced
      • Package Events
      • Private Endpoints
      • Restrict Access by Bucket Prefix
      • S3 Events via EventBridge
      • SSO Permissions Mapping
      • Tabulator
      • Troubleshooting
        • SSO Redirect Loop
    • Best Practices
      • GxP for Security & Compliance
      • Organizing S3 Buckets
  • Quilt Python SDK
    • Installation
    • Quick Start
    • Editing a Package
    • Uploading a Package
    • Installing a Package
    • Getting Data from a Package
    • Example: Git-like Operations
    • API Reference
      • quilt3
      • quilt3.Package
      • quilt3.Bucket
      • quilt3.hooks
      • Local Catalog
      • CLI, Environment
      • Known Limitations
      • Custom SSL Certificates
    • Advanced
      • Browsing Buckets
      • Filtering a Package
      • .quiltignore
      • Manipulating Manifests
      • Materialization
      • S3 Select
    • More
      • Changelog
      • Contributing
      • Frequently Asked Questions
      • Troubleshooting
  • Quilt Ecosystem Integrations
    • Benchling Packager
    • Event-Driven Packaging
    • Nextflow Plugin
Powered by GitBook
On this page
  • Reporting issues
  • Cloning
  • Local package development
  • Local catalog development
  • Creating a release
  • Updating documentation
  • License

Was this helpful?

  1. Quilt Python SDK
  2. More

Contributing

PreviousChangelogNextFrequently Asked Questions

Last updated 4 months ago

Was this helpful?

Quilt is an open source project, and we welcome contributions from the community.

Contributors must adhere to the .

Reporting issues

Unsure about something? To get support, check out our .

Found a bug? File it in our .

Cloning

To work on quilt you will first need to clone the repository.

git clone https://github.com/quiltdata/quilt

You can then set up your own branch version of the code, and work on your changes for a pull request from there.

cd quilt
git checkout -B new-branch-name

Local package development

Python Environment

Use pip to install quilt locally (including development dependencies):

cd api/python
pip install -e '.[extra]'

Python Testing

All new code contributions are expected to have complete unit test coverage, and to pass all preexisting tests.

Use pytest to test your changes during normal development. To run pytest on the entire codebase:

cd api/python/tests
pytest

Local catalog development

Note that, at the current time, it is only possible to run a local catalog if you already have a catalog deployed to AWS, because the catalog relies on certain services (namely, AWS Lambda and the AWS Elasticsearch Service) which cannot be run locally.

Catalog Environment

Use npm to install the catalog (quilt-navigator) dependencies locally:

cd catalog
npm install

There is one known issue with installation. At time of writing, the quilt-navigator package depends on iltorb@1.3.10, which may lack prebuilt binaries for your platform and may fall back on building from source using node-gyp. node-gyp depends on Python 2; if you only have Python 3 in your install environment it will fail.

To fix this, point npm to a Python 2 path on your machine. For example on macOS:

npm config set python /usr/bin/python
npm install

Next, you need to create a config.json and federation.json file in the catalog/static subdirectory. For federation.json use the following template:

{
   "buckets": [{
         "name":"quilt-example",
         "title":"Title here",
         "icon":"placeholder icon here",
         "description":"placeholder description here",
         "searchEndpoint":"$SEARCH_ENDPOINT",
         "apiGatewayEndpoint": "$PREVIEW_ENDPOINT",
         "region":"us-east-1"
      }
   ]
}

For config.json use the following template:

{
   "federations": [
      "/federation.json"
   ],
   "suggestedBuckets": [
   ],
   "apiGatewayEndpoint": "$PREVIEW_ENDPOINT",
   "sentryDSN": "",
   "alwaysRequiresAuth": false,
   "defaultBucket": "quilt-staging",
   "disableSignUp": true,
   "guestCredentials": {
      "accessKeyId": "$ACCESS_KEY_ID",
      "secretAccessKey": "$SECRET_ACCESS_KEY"
   },
   "intercomAppId": "",
   "mixpanelToken": "",
   "registryUrl": "$REGISTRY_ENDPOINT",
   "signInRedirect": "/",
   "signOutRedirect": "/"
}

Build

To build a static code bundle, as would be necessary in order to serve the catalog:

npm run build

To run the catalog in developer mode:

npm start

This uses webpack under the hood to compile code changes on the fly and provide live reloading, useful when developing.

Catalog Testing

To run the catalog unit tests:

npm run test

Creating a release

  1. Create PR with these changes.

  2. Once PR is merged, create a tag from commit with merge: git tag $VERSION $COMMIT_HASH.

  3. Once you push the tag to GitHub with git push origin $VERSION a new CI build that makes PyPI release is triggered.

Updating documentation

Documentation is served via GitBook, and is based on the docs/ folder in the master branch of the quilt repository.

Documentation changes go live at pull request merge time. There is currently no way to preview documentation updates except locally.

Updating the API Reference

To modify the API Reference, modify the docstring associated with a method of interest.

Then, run the following to install the latest version of our docstring parser:

pip install git+git://github.com/quiltdata/pydoc-markdown.git@quilt

Then navigate to the gendocs directory and execute python build.py.

The resulting files will land in docs/ and will be ready to be checked in.

Updating everything else

All other pages in the documentation are served from corresponding Markdown pages in the docs directory. To edit the page, edit the Markdown file. Then check that file in.

License

This will create an of quilt, allowing you to modify the code and test your changes right away.

Make sure that any images you check into the repository are at check-in time.

Once you are ready to cut a new release, you update the version in file and in .

The API Reference section of the documentation is served by processing the docstrings in the codebase using a script. We use of the pydoc-markdown package to do the necessary work.

Quilt is open source under the .

Code of Conduct
Slack channel
GitHub issues
editable install
optimized
VERSION
CHANGELOG
our own fork
Apache License, Version 2.0