Aside from the addition of several new features for the generation and scoring of molecular structures, a significant part of the development was dedicated to creating a flexible and scalable software architecture. We have extensively revised the original Python source code of all published DrugEx models and transformed it into a selfcontained open-source Python package with a clear structure and API. In addition, a simple command line interface (CLI) was also implemented that allows quick invocation of the main DrugEx functions and improves the management of inputs and outputs. The package supports many monitoring utilities that log training progress and result in easy-to-read machine-readable formats such as TSV (Tab Separated Values) and JSON (JavaScript Object Notation) files. When using the CLI, these files are backed up after each (even unsuccessful) run so older results and settings are not lost and can be retrieved at any time. These and other modifications should empower users to quickly explore different scenarios when building their generative models and also ensure reproducible results by keeping track of the set parameters. Both the CLI and Python API are documented and we also created easy-to-follow Jupyter notebooks tutorials to help users get started. Finally, we have performed significant optimisations in multiple parts of the workflow by utilizing multiprocessing where possible. The software package is divided into intuitively organized sub-packages and modules, each handling either preprocessing of the data, model training or generation of new molecules by loading the model for sampling (Figure ). The code is organised with modularity, extensibility, and testability in mind. Each larger subpackage contains a clear definition of its interfaces in the interfaces.py module and also unit tests in tests.py. Interface definitions are most of the time facilitated through abstract classes for which each subpackage provides default implementations that can be automatically tested with the provided unit tests. These classes form the core of the DrugEx Python API that users can exploit to make modifications to their workflows and/or interact with the DrugEx models programmatically.