Skip to main content

mps_mongo_prototype

Prototype for mongo instance to be used for IIIF job tracking

Testing

To run the tests:

  1. Copy the env-example.txt to .env and fill in the proper values
  2. Spin up the local docker containers by calling docker-compose -f docker-compose-local.yml up --build --force-recreate
  3. Exec into the mps-job-tracker container: docker exec -it mps-job-tracker bash
  4. Inside the container, run the test: pytest mpsjobtracker/tests/test_job_tracker.py

Development Operations

Docker Compose

Configuration

This package reads configuration values from environment variables.

Installation

$ pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ lts-mpsmqutils
$ python
>>> from mpsmqutils import mqlistener, mqutils
>>> mqutils.__create_message('0922a78fd89f_2a5ff037-462a-4642-8bd0-7546d7580e1a', 1, 'success')

Local Development Environment Setup Instructions

1: Clone the repository to a local directory

git clone git@github.huit.harvard.edu:LTS/mps-jobtracker.git

2: Create app config

Create config file for environment variables
  • Make a copy of the config example file ./env-example.txt
  • Rename the file to .env
  • Replace placeholder values as necessary

Note: The config file .env is specifically excluded in .gitignore and .dockerignore, since it contains credentials it should NOT ever be committed to any repository.

3: Start

START

To build the image without the cache, run the build command with the --no-cache option. The no cache option is required when updating any dependencies.

docker-compose -f docker-compose-local.yml build --no-cache && docker-compose -f docker-compose-local.yml up -d --force-recreate

4: Open a shell in the container

Run docker exec to execute a shell in the container by name

Open a shell using the exec command to access the mps-jobtracker container.

docker exec -it mps-jobtracker bash

5: Install dependencies

This step is only required if additional python dependencies must be installed. Update the requirements.txt inside the container to install new python packages in the project. If the dependencies are required for the package to run, they also must be included in the install_requires section of setup.py.

Install a new pip package

Once inside the mps-jobtracker container, run the pip install command to install a new package and update the requirements text file.

pip install packagename && pip freeze > requirements.txt
Add dependencies to setup

Add the names of the dependencies to the install_requires section of setup.py. Read more about adding dependencies in this article Specifying dependencies.

6: Build and publish the package

Step 6A: Prepare the distribution

  • Update the version number in setup.py
  • To publish a pre-release version, add a letter and a number after the version number e.g. 0.0.1a1
  • Remove the old dist/ directory from the previous build if necessary

Step 6B: Build the distribution

Once inside the container, build the distribution.

python3 setup.py sdist bdist_wheel

A new directory dist will be created in the container.

Step 6C: Register for an account

Register for an account on the test python package repository. Enable two-factor authentication for logins. Create a token.

Step 6D: Upload package to the test repository

Publish the package to the test repository testpypi before publishing it to the production repository.

python3 -m twine upload --repository testpypi dist/*

Step 6E: Test the package

Open the package in the repository and view the version history.

https://test.pypi.org/project/lts-mpsmqutils/0.0.1/

Read Installation in this document for instructions on how to install and test the package in another project or environment.

7: Stop

STOP AND REMOVE

This command stops and removes all containers specified in the docker-compose-local.yml configuration. This command can be used in place of the 'stop' and 'rm' commands.

docker-compose -f docker-compose-local.yml down

More information

Read the documenation for more information on building and publishing the distribution.

Metadata

Release files for lts-mpsjobtracker-mongo 1.0.3

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

Source distribution (sdist)

Source distribution for lts-mpsjobtracker-mongo 1.0.3
File Size Uploaded Provenance
lts_mpsjobtracker_mongo-1.0.3.tar.gz 16.2 kB Without provenance Details

Release files / lts_mpsjobtracker_mongo-1.0.3.tar.gz

Download URL lts_mpsjobtracker_mongo-1.0.3.tar.gz
Size 16.2 kB
Tags Source
SHA-256 checksum
How to use checksums
67556a376570adbfeff5717381cd8f5a8d8d689160d54350f795bb60a4bc1323
BLAKE2b-256 checksum
How to use checksums
7a4c79f412c962a5a79bf780214c917406b77a3f900fdef48d8ee50277a1c455
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for lts-mpsjobtracker-mongo 1.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.3 This release

1 release file No provenance

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