Development¶
This section provides an overview of the development and deployment process for the project.
The application requires a configuration file in INI format. The configuration file format can be found in the config file section.
Build for Production¶
Dockerizing the Application¶
To containerize the application using Docker, use the Dockerfile at the root of the project. You can build the Docker image with the following command:
$ docker build -t getmarcapi .
Run Locally for Development¶
Prerequisites¶
Preinstalled Development dependencies:
uv (manage Python e)
Node.js and npm (for building static assets)
Note
You should be using uv to manage your virtual environments and dependencies. These directions are going to assume that you have uv installed. If you do not have uv installed, you can use pip but uv is HIGHLY RECOMMENDED.
Getting Development Environment Set Up¶
To run the application locally for development purposes, follow these steps:
Clone the repository:
$ git clone https://github.com/UIUCLibrary/getmarcapi.git Cloning into 'getmarcapi'... remote: Enumerating objects: 986, done. remote: Counting objects: 100% (364/364), done. remote: Compressing objects: 100% (157/157), done. remote: Total 986 (delta 271), reused 210 (delta 207), pack-reused 622 (from 2) Receiving objects: 100% (986/986), 441.69 KiB | 7.36 MiB/s, done. Resolving deltas: 100% (468/468), done. $ cd getmarcapi
Create and activate a Python virtual environment using uv with the development dependencies:
On Unix Environments:
$ uv sync --dev Resolved 119 packages in 33ms Audited 106 packages in 46ms $ source .venv/bin/activate
On Windows Environments:
> uv sync --dev Resolved 119 packages in 33ms Audited 106 packages in 46ms > .venv\Scripts\activate
Gather and build the static assets:
There are some nice CSS libraries used in the top-level API documentation page. During development, you will need to install them to getmarcapi/static.
(getmarcapi) $ npm install (getmarcapi) $ npm run env -- webpack --output-path=./getmarcapi/static
Start the Flask development server:
(getmarcapi) $ FLASK_APP=getmarcapi/app.py uv run flask run * Serving Flask app 'getmarcapi/app.py' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit
Important
You need to have the api url and api key.
For development, you can set the ALMA_API_DOMAIN and API_KEY environment variables in your shell.
Running Tests¶
To run tests, you need to have pytest installed. If you are using the development environment, it should already be installed. Tests are run by executing the pytest command.
(getmarcapi) $ pytest
============================== test session starts ==============================
platform darwin -- Python 3.11.10, pytest-8.4.2, pluggy-1.6.0 -- .venv/bin/python
cachedir: .pytest_cache
rootdir: /Users/mydev/pythonprojects/getmarcapi
configfile: pyproject.toml
testpaths: tests
plugins: anyio-4.12.1, typeguard-4.4.4
collected 27 items
tests/test_api.py::test_root PASSED
tests/test_api.py::test_get_record_xml PASSED
tests/test_api.py::test_get_record_missing_param PASSED
tests/test_api.py::test_api_documentation PASSED
...
============================== 27 passed in 0.34s ===============================