Metadata-Version: 2.4
Name: seshat
Version: 26.4+rc1
Summary: A data and software repository system
Author-email: Roel Janssen <rrejanssen@gmail.com>
License: AGPL-3.0-or-later
Project-URL: Homepage, https://demo.seshat.software//
Project-URL: Source Code, https://codeberg.org/seshat/seshat
Project-URL: Bug Tracker, https://codeberg.org/seshat/seshat/issues
Classifier: Programming Language :: Python :: 3
Classifier: Environment :: Web Environment
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Jinja2>=3.0.3
Requires-Dist: pygit2>=1.6.1
Requires-Dist: rdflib>=6.0.0
Requires-Dist: requests>=2.26.0
Requires-Dist: Werkzeug>=2.0.2
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: pillow>=9.4.0
Dynamic: license-file

seshat
=========

This software provides a general data and software repository system that
attempts to promote active re-use of data and software by providing a
rock-solid foundation of implementations of protocols and standards related
to its aims.

## Reporting (potential) security issues

For security-related matters, please e-mail
[security@djehuty.roelj.com](mailto:security@djehuty.roelj.com).  If you are
(going to be) running an instance of this project and would like to be part of
the security mailing list, then please write the mailing list.

## Creating a development environment

This project uses the GNU autotools build system.

### GNU/Linux

For development on GNU/Linux we recommend installing `git`, `autoconf`,
`automake`, `make` and `typst` through your system's package manager, followed
by creating a Python virtual environment for `seshat`:

```bash
git clone https://codeberg.org/roelj/djehuty.git && cd seshat/
autoreconf -if && ./configure
python -m venv ../seshat-env
. ../seshat-env/bin/activate
pip install --upgrade pip
pip install --editable .
```

#### Keeping your development environment up-to-date

Because the virtual environment isn't updated by your system's package
manager, you can use the following snippet to update packages inside your
virtual environment:
```bash
pip freeze | grep -v "seshat.git" | cut -d= -f1 | xargs -n1 pip install -U
```

### macOS X

For development on Apple's macOS X, we recommend installing `python3`, `git`,
`autoconf`, `automake`, and `make` through [homebrew](https://brew.sh/),
followed by creating a Python virtual environment for `seshat`:

```bash
brew install python3 git autoconf automake make typst
git clone https://codeberg.org/roelj/djehuty.git && cd seshat/
autoreconf -if && ./configure
python3 -m venv ../seshat-env
. ../seshat-env/bin/activate
pip install --upgrade pip
pip install --editable .
```

#### Keeping your development environment up-to-date

Because the virtual environment isn't updated by homebrew, you can use the
following snippet to update packages inside your virtual environment:
```bash
pip freeze | grep -v "seshat.git" | cut -d= -f1 | xargs -n1 pip install -U
```

### Microsoft Windows

For development on Windows we recommend [MSYS2](https://www.msys2.org/)
and the following approach to installing packages:
```bash
PREFIX="mingw-w64-x86_64-" # See https://www.msys2.org/docs/package-naming
pacman -Suy git autoconf automake make ${PREFIX}python \
            ${PREFIX}python-pygit2 ${PREFIX}python-rdflib \
            ${PREFIX}python-jinja ${PREFIX}python-requests \
            ${PREFIX}python-werkzeug ${PREFIX}python-defusedxml \
            ${PREFIX}python-pillow ${PREFIX}python-build \
            ${PREFIX}python-setuptools ${PREFIX}typst
git clone https://codeberg.org/roelj/djehuty.git && cd seshat/
# If you chose a different PREFIX above, change /mingw64 accordingly below.
# See: https://www.msys2.org/docs/environments
/mingw64/bin/python -m venv --system-site-packages ../seshat-env
. ../seshat-env/bin/activate
autoreconf -if && ./configure
pip install --editable .
```

#### Keeping your development environment up-to-date

The dependencies for `seshat` are installed via `pacman`, so to update those
packages use the following snippet:
```bash
pacman -Suy
```

See [Updating MSYS2](https://www.msys2.org/docs/updating/) for more details.

### Verify that the installation works
Upon completing the installation, you should be able to run:
```bash
seshat --help
```

## Setting up the database

Seshat needs a SPARQL 1.1 endpoint such as
[Virtuoso OSE](https://github.com/openlink/virtuoso-opensource) or
[Jena Fuseki](https://jena.apache.org/documentation/fuseki2/) to
store its state.

## Run the web service

To start the web service, we recommend copying the
[example configuration](./etc/seshat/seshat-example-config.xml)
and go from there:

```python
cp etc/seshat/seshat-example-config.xml seshat.xml
```

### First run

Upon first run, `seshat` needs to initialize the database with categories,
licences and accounts.  To do so, pass the `--initialize` option to the
`seshat web` command:

```bash
seshat web --initialize --config-file seshat.xml
```

### Subsequent runs

After the database has been initialized, you can remove the `--initialize`
option:
```bash
seshat web --config-file=seshat.xml
```
