Development
Learn how to develop, package, and run your book locally.
Have You Completed the Setup?
Ensure youβve followed all the steps to set up your project before proceeding. This includes configuring your environment and installing dependencies.
Project Structure
The project is organized with the following structure:
π sample_book
βββ π src
β βββ π sample_book
β βββ π __init__.py
β βββ π __version__.py
β βββ π book.py
β βββ π data
β βββ πΌοΈ icon.svg
βββ π tests
β βββ π test_book.py
βββ π Dockerfile
βββ π pyproject.toml
βββ π poetry_scripts.py
βββ π poetry.lock
βββ π README.md
βββ π USAGE.mdRoot Directory
The project root directory is named using the Project Slug (default: sample_book).
Source Code Directory
π book.py: Contains the core class where your book is defined and implemented.π data: Holds images likeπΌοΈ icon.svg, the default SVG used as a book's icon.
Test Directory
π test_book.py: Contains unit tests to validate the Book's functionality.
Configuration and Dependency Files
π Dockerfile: Builds the Docker image.π pyproject.toml: Manages dependencies and settings.π poetry_scripts.py: Custom automation script.π poetry.lock: Locks dependency versions.
Documentation
π README.md: Project overview documentation, including setup and usage instructions.π USAGE.md: Reference documentation for your Book. This file is not included by default. For details on how to generate it, see Generating Documentation.
Implementation
Implement your book in book.py.
This class is auto-generated by the Template and serves as the starting point for your Bookβs implementation. Use decorators to configure settings, define procedures, and establish API connections. Refer to the API Reference and example books for details.
Managing Dependencies
Poetry is used for Python dependency management in custom book projects. To add an external Python dependency to your project, refer to the poetry add command, which adds packages to your pyproject.toml and installs them.
Development Commands
This section outlines essential commands for book development and testing.
Formatting
Code formatting automatically adjusts your code's structure, ensuring adherence to coding standards, readability, and maintainability. To apply the formatting, run:
Linting
Pylint is used as the source linter for custom book projects. The linter analyzes and enforce coding standards, checks for errors in Python code, and improves code quality. To run the linter:
Generating Documentation
This command will generate a comprehensive USAGE.md file by extracting and formatting the docstrings from your code. To generate the documentation, run:
Testing
Pytest is used to test and validate your book. To run the test suite:
Packaging with Docker
Build a Docker image to package your book:
Architecture Compatibility
This image pulls the Runtime base image from Docker Hub, which is currently available only for the linux/amd64 architecture. If you're using a machine with a different architecture, you can use the --platform flag to emulate linux/amd64 when building the image:
Running Your Book Locally
To test your Book in Kognitos before deployment, you can run your Docker image locally with ngrok. Ngrok is a tool that creates a secure tunnel to your local machine and provides a public URL to make your local Docker image accessible from the platform.
1. Install ngrok
Follow the installation steps for ngrok based on your system. You will need to sign up for a free account.
2. Obtain your ngrok authtoken
Navigate to Your Authtoken in the ngrok portal and copy your token.
3. Add your authtoken
4. Configure the ngrok api key as an environment variable:
5. Build & run in ngrok mode
This command will invoke a custom script that builds the Docker image and runs it in ngrok mode:
If you are running into issues with `poetry run host`, you can package and run your book manually with the following command:
Make sure to replace auth_token, project_slug, and version with your own values.
6. Copy the URL
You'll see the ngrok address in the following format in the logs. Copy the URL:
7. Add the URL to your automation
Copy the URL and paste it into your automation using this syntax:
If you implemented any custom connections, make sure you also connect to your book after learning.
Last updated
Was this helpful?
