Skip to main content

Dynamic Profile Processing Platform (DP³)

DP3

PyPI version

DP³ is a platform helps to keep a database of information (attributes) about individual entities (designed for IP addresses and other network identifiers, but may be anything), when the data constantly changes in time.

You can read more about how it works in the documentation.

This is a basis of CESNET's "Asset Discovery Classification and Tagging" (ADiCT) project, focused on discovery and classification of network devices, but the platform itself is general and should be usable for any kind of data.

DP³ doesn't do much by itself, it must be supplemented by application-specific modules providing and processing data.

Repository structure

  • dp3 - Python package containing code of the processing core and the API
  • config - default/example configuration
  • install - deployment configuration

See the documentation for more details.

Installation

See the docs for more details.

Installing for application development

Pre-requisites: Python 3.9 or higher, pip (with virtualenv installed), git, Docker and Docker Compose.

Create a virtualenv and install the DP³ platform using:

python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install git+https://github.com/CESNET/dp3.git#egg=dp-cubed

Creating a DP³ application

DP³ comes with a dp3 utility, which is used to create a new DP³ application and run it. To create a new DP³ application we use the setup command. Run:

dp3 setup <application_directory> <your_application_name> 

So for example, to create an application called my_app in the current directory, run:

dp3 setup . my_app

Which produces a template DP3 application directory structure.

Running the Application

To run the application, we first need to setup the other services the platform depends on, such as the MongoDB database, the RabbitMQ message distribution and the Redis database. This can be done using the supplied docker-compose.yml file. Simply run:

docker compose up -d --build

There are two main ways to run the application itself. First is a little more hand-on, and allows easier debugging. There are two main kinds of processes in the application: the API and the worker processes.

To run the API, simply run:

APP_NAME=my_app CONF_DIR=config dp3 api

The starting configuration sets only a single worker process, which you can run using:

dp3 worker my_app config 0     

The second way is to use the docker-compose.app.yml file, which runs the API and the worker processes in separate containers. To run the API, simply run:

docker compose -f docker-compose.app.yml up -d --build

Either way, to test that everything is running properly, you can run:

curl -X 'GET' 'http://localhost:5000/' \
     -H 'Accept: application/json' 

Which should return a JSON response with the following content:

{
   "detail": "It works!"
}

Final note, to simplify the experience of adjusting the app configuration, especially that of the DB entities, we provide the dp3 check command. The command simply loads the configuration and checks that it is valid, but if not, it tries really hard to pinpoint where exactly you went wrong. This can be used as follows:

dp3 check <config_directory>

You are now ready to start developing your application!

Installing for platform development

Pre-requisites: Python 3.9 or higher, pip (with virtualenv installed), git, Docker and Docker Compose.

Pull the repository and install using:

git clone --branch master git@github.com:CESNET/dp3.git dp3 
cd dp3
python3 -m venv venv
source venv/bin/activate  
python -m pip install --upgrade pip  
pip install --editable ".[dev]" 
pre-commit install

Running the dependencies and the platform

The DP³ platform is now installed and ready for development. To run it, we first need to setup the other services the platform depends on, such as the MongoDB database, the RabbitMQ message distribution and the Redis database. This can be done using the supplied docker-compose.yml file. Simply run:

docker compose up -d --build

After the first compose up command, the images for RabbitMQ, MongoDB and Redis will be downloaded, their images will be built according to the configuration and all three services will be started. On subsequent runs, Docker will use the cache, so if the configuration does not change, the download and build steps will not be repeated.

The configuration is taken implicitly from the docker-compose.yml file in the current directory. The docker-compose.yml configuration contains the configuration for the services, as well as a testing setup of the DP³ platform itself. The full configuration is in tests/test_config. The setup includes one worker process and one API process to handle requests. The API process is exposed on port 5000, so you can send requests to it using curl or from your browser:

curl -X 'GET' 'http://localhost:5000/' \
     -H 'Accept: application/json' 
curl -X 'POST' 'http://localhost:5000/datapoints' \
     -H 'Content-Type: application/json' \
     --data '[{"type": "test_entity_type", "id": "abc", "attr": "test_attr_int", "v": 123, "t1": "2023-07-01T12:00:00", "t2": "2023-07-01T13:00:00"}]'

Testing

With the testing platform setup running, we can now run tests. Tests are run using the unittest framework and can be run using:

python -m unittest discover \
       -s tests/test_common \
       -v
CONF_DIR=tests/test_config \
python -m unittest discover \
       -s tests/test_api \
       -v

Metadata

Release files for dp-cubed 0.10.0

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

Source distribution (sdist)

Source distribution for dp-cubed 0.10.0
File Size Uploaded
dp_cubed-0.10.0.tar.gz 411.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dp-cubed 0.10.0
File Interpreter ABI Platform
dp_cubed-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 576.1 kB

Release files / dp_cubed-0.10.0.tar.gz

Download URL dp_cubed-0.10.0.tar.gz
Size 411.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b34524c1aa95271f73119e0b41c3747bcb432a8ce60ea7124e1d4a90734542aa
BLAKE2b-256 checksum
How to use checksums
00c20dac7b2a10ed247a593fea3f74daef06a35e2dffff45b7cf182b57b99145
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 14, 2026.

Transparency log

Release files / dp_cubed-0.10.0-py3-none-any.whl

Download URL dp_cubed-0.10.0-py3-none-any.whl
Size 164.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f8cbef155595c414be131ddc11f4f8a7a2a02c05bfca2a7906b00c91ed5517eb
BLAKE2b-256 checksum
How to use checksums
a590c6e0be8eb84d92872ac5bb5ee9d569e0595ea753dbd404a375001d66ebe7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

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