Copyright 2020-2022 Regents of the University of Colorado.
This project is licensed under the MIT License. See the text of the MIT License in LICENSE.md.
backscope is Numberscope's back end. It is responsible for getting sequences and other data from the On-Line Encyclopedia of Integer Sequences. It also performs computationally intensive preprocessing on the sequences that have been requested, such as generating the prime factorizations of the entries. Such pre-computations are used in many of the front-end visualizers, but disruptive and wastefully repetitive if performed in each visitor's browser.
(Note there are also much more detailed, step-by-step instructions for installing backscope on Ubuntu, which can perhaps also be tailored to other Linux distributions or other operating systems.)
- Install Git if need be and clone this repo from
github.com/numberscope/backscope
. Switch to the top-level directory of the clone. - Install prerequisites:
- Python 3 (>= version 3.9)
- The Python 3 dev package
- A Python 3 package for creating virtual environments
- A full installation of pari-gp (including all metadata files — you might need to install a package like "libpari-dev" on Ubuntu)
- The GNU multi-precision arithmetic dev package
- A C compiler and C build tools. See also the detailed Ubuntu instructions linked above.
- Create a virtual environment, e.g.,
python -m venv .venv
. - Activate the virtual environment, e.g.,
source .venv/bin/activate
. - Install Python dependencies:
sh tools/install-requirements.sh
. - Install and configure PostgreSQL, create an empty database, and create
a dotenv (
.env
) file with the database credentials.- Some details necessary for this step are found in configuring PostgreSQL.
- Run backscope:
flask run
- See also detailed instructions for running backscope.
If you plan on developing backscope, you might find some of these useful:
- Resetting the database
- Understanding our requirements files
- API endpoints
- Directory descriptions
- Logging events
- Writing and running tests
If you are a maintainer, you might find some of these useful: