Metadata-Version: 2.1
Name: dsp-tools
Version: 1.1.0
Summary: A Python library and tools for the DaSCH Service Platform
Home-page: https://github.com/dasch-swiss/dsp-tools
Author: Lukas Rosenthaler
Author-email: lukas.rosenthaler@dasch.swiss
License: GPLv3
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9.0
Description-Content-Type: text/markdown
Requires-Dist: argparse
Requires-Dist: rdflib
Requires-Dist: lxml
Requires-Dist: validators
Requires-Dist: requests
Requires-Dist: jsonschema
Requires-Dist: click
Requires-Dist: rfc3987
Requires-Dist: pystrict
Requires-Dist: openpyxl

[![PyPI version](https://badge.fury.io/py/dsp-tools.svg)](https://badge.fury.io/py/dsp-tools)

# DSP-TOOLS - The DaSCH Service Platform Tools Repository
dsp-tools is a python package containing a command line tool for data model (ontology) creation, a library allowing
creation of single resources and mass upload using the bulk import of data into the Knora framework.

The package consists of:
- `dsplib` Python modules for accessing Knora using the API (ontology creation, data import/export etc.)
- `dsp-tools` A command line program to perfrom several operations on a DSP server:
    - create an ontology out of a simple JSON description
    - dump an existing ontology from a DSP server to a JSON file
    - Bulk-upload of data from a XML data file

Go to [Full Documentation](https://dasch-swiss.github.io/dsp-tools/)

## Install

_Please note that dsp-tools require Python 3.9 for working properly!_

To install the latest published version from PyPI, run:
```
$ pip3 install dsp-tools
```

To upgrade to the latest published version, run:
```
$ pip3 install --upgrade dsp-tools
```

## Local Development Environment

- Python3
- [Bazel](https://bazel.build)

Please consult the [https://docs.dasch.swiss/developers](https://docs.dasch.swiss/developers)
documentation on how to install these prerequisites.

## Makefile for repository management tasks

The project contains a Makefile defining management tasks. Please use
`make help` to see what is available.

To install from source, i.e., this repository, run:
```
$ make install
```

## Testing

```bash
$ make test
```

## Publishing

Publishing is automated with github actions and should _not_ be done manually.

Ensure to have only one Pull Request per feature, and follow the [conventions for commit messages and PR title](https://docs.dasch.swiss/developers/dsp/contribution/#pull-request-guidelines).

If this is done correctly, when merging a PR into `main`, the `release-please` action will create or update a release-PR.  
This PR will follow semantic versioning and update the change log.  
Once all desired features are merged, the release can be executed by merging the release-PR into `main`.  
This will trigger actions that create a release on Github, on PyPI and the docs.

### Publishing to PyPi

Generate distribution package. Make sure you have the latest versions of `setuptools` and `wheel` installed.
Remove the `dist`and `buil`-directories: `rm -rf bild dist`


```bash
$ make upgrade-dist-tools
$ make dist
```

You can install the package locally from the dist:

```bash
$ python3 -m pip install ./dist/some_name.whl
```

Upload package with `twine`,

first create `~/.pypirc` in your home folder:

```bash
[distutils] 
index-servers=pypi
[pypi] 
repository = https://upload.pypi.org/legacy/ 
username =your_username_on_pypi
```

then upload:

```bash
$ make upload
```

For local development:

```bash
$ python3 setup.py --editable .
```

## Requirements

To install the requirements:

```bash
$ pip3 install -r requirements.txt
```

To generate a "requirements" file (usually requirements.txt), that you commit with your project, do:

```bash
$ pip3 freeze > requirements.txt
```

### Running tests with Bazel

Run all tests:
```bash
$ bazel test //...
```

Run single test:
```bash
$ bazel test //test:test_user
```



