Notolog - Python Markdown Editor
Project description
Notolog
Notolog is an open-source Markdown Editor licensed under the MIT License, combining simplicity with a wide range of tools and an integrated AI assistant. Developed entirely in Python using PySide6, it helps you tackle everyday programming challenges while offering an opportunity to deepen your Markdown skills.
Instant Setup
Using pip:
pip install notolog
Via conda:
conda install notolog -c conda-forge
To start 🚀 the app, simply run:
notolog
Features
- Markdown Support:
- Text editor equipped with exclusive Markdown syntax highlighting and extended syntax support.
- Line numbers adapt to each line's height, enhancing readability.
- Viewer for precise text rendering, utilizing the integrated Python Markdown library.
- Processes both multi-line and single-line code blocks, along with custom parsing for
details
andsummary
blocks.
- AI Assistant: Provides a chat-style dialogue, supporting both the OpenAI API and on-device local LLM options.
- Accessibility: Features adjustable font sizes and descriptive elements to enhance usability.
- Auto-Save: Automatically saves changes to prevent data loss.
- Enhanced Search:
- Offers in-file content search with optional case sensitivity.
- Quick file search within the file tree to efficiently filter results.
- Encryption: Provides secure AES-128 encryption with Fernet for files (optional).
- Meta-Headers: Securely stores essential file information within HTML-comment-formatted meta-headers.
- Multi-Language: Supports multiple languages out of the box.
- Customizable UI: Includes a variety of color themes to keep the UI fancy.
- TODO Highlighting: Marks @todo statements for efficient task management.
Translations
Notolog supports multiple languages out of the box, enhancing its accessibility globally. In addition to English, here are the currently supported languages:
- 简体中文 (Chinese Simplified)
- Nederlands (Dutch)
- Suomi (Finnish)
- Français (French)
- ქართული (Georgian)
- Deutsch (German)
- Ελληνικά (Greek)
- हिन्दी (Hindi)
- Italiano (Italian)
- 日本語 (Japanese)
- 한국어 (Korean)
- Latina (Latin)
- Português (Portuguese)
- Русский (Russian)
- Español (Spanish)
- Svenska (Swedish)
- Türkçe (Turkish)
Themes
Notolog offers several themes to customize the UI:
- Default: Every app should have a default theme.
- Calligraphy: Inspired by the art of calligraphy, this theme resembles a rice paper sheet marked with black ink.
- Nocturne: A dark-themed UI that plays a jazz nocturne at night.
- Noir Dark: This theme's name says it all - mystery and style in every pixel.
- Spooky: Embrace the spooky season with vivid Halloween-themed colors.
- Strawberry: The most playful theme, reminiscent of strawberry jam.
Below is a glimpse of the UI, featuring the Strawberry theme:
Installation
Ensure Python 3.9 or higher is installed. For more details, visit python.org.
Using a virtual environment is recommended to avoid version conflicts. From Python 3.6, venv is the recommended method to create virtual environments. For more information check Creation of virtual environments. Alternatively, you can execute the Notolog source code and set up virtual environment with your favorite Python code editor.
Install with pip
Create and activate a virtual environment:
python3 -m venv notolog_env
source notolog_env/bin/activate # macOS and Linux systems
notolog_env\Scripts\activate # Windows
Install Notolog using pip:
pip install notolog
Starting the app is as simple as running:
notolog
The app includes a 'Check for Updates' option accessible through the main menu under 'Help'. Where applicable, run the following command to update Notolog to the latest version: pip install notolog --upgrade
How to install venv on Linux systems 🔧
While Python itself usually comes pre-installed on many Linux distributions, including Ubuntu, some distributions may not include the venv module by default. Therefore, you need to install it separately using the package manager before you can use it to create virtual environments.
Ubuntu/Debian
sudo apt-get update
sudo apt-get install python3-venv
Fedora
sudo dnf install python3-venv
CentOS/RHEL
sudo yum install python3-venv
Install via conda-forge
Create and activate a new environment:
conda create -n notolog_env python=3.11
conda activate notolog_env
Then, execute the installation command:
conda install notolog -c conda-forge
This will fetch and install the latest version of Notolog compatible with Python 3.9 or newer from the conda-forge packages.
Run Notolog:
notolog
Just activate the environment and run the app next time.
Install from Source
- Clone the GitHub repository:
git clone https://github.com/notolog/notolog-editor.git
- Navigate to the project directory:
cd notolog-editor
- Create and activate a virtual environment:
python3 -m venv notolog_env
source notolog_env/bin/activate # macOS and Linux systems
notolog_env\Scripts\activate # Windows
- Install dependencies:
pip install .
- Start Notolog using:
python -m notolog.app
Tests and Test Coverage
To minimize installation overhead and streamline dependency management, dependencies required solely for testing are isolated in test-specific requirements.
To install these dependencies, run: python dev_install.py test
. The tomli
package is required to execute this script; you can install it using pip install tomli
.
This approach helps manage test dependencies independently from the main application dependencies, ensuring a cleaner and more manageable setup.
Run Tests
To execute all available tests:
pytest
To run tests from a specific file:
pytest tests/test_pkg_integration.py
Run Tests with Coverage Reports
To run all tests with a coverage report:
pytest tests/ --cov=notolog --cov-report=term
Alternatively, to exclude UI tests from execution:
pytest tests/ --cov=notolog --cov-report=term --ignore=tests/ui_tests/
Dev Tools
To maintain high standards of code quality and ensure comprehensive test coverage, we utilize several development tools. Flake8, which combines PyFlakes, pycodestyle, and McCabe's complexity checker, is employed to enforce code quality, manage code complexity, and ensure adherence to PEP 8 style conventions.
To install these dependencies, run: python dev_install.py dev
. The tomli
package is required to execute this script; you can install it using pip install tomli
.
Build Tools
Make sure poetry-core
and build
are installed:
pip install poetry-core build
The following command generates distribution packages. Specifically, it creates both a source distribution and a wheel distribution:
python -m build
Contributing
If you encounter any issues or would like to contribute to the project, please don't hesitate to open an issue or submit a pull request on the project's GitHub page.
License
Notolog is open-source software licensed under the MIT License, which provides flexibility and freedom to use, modify, and distribute the software. To comply with the license when redistributing this software or derivative works, you must include a copy of the original MIT License, found in the LICENSE file.
Third-Party Acknowledgements
This project uses third-party libraries and components, each subject to its own license. Additional dependencies may be installed as necessary. For details on licensing, see ThirdPartyNotices.md.
AI Integration Disclaimers
OpenAI API
Disclaimer: This project integrates the OpenAI API 'as is' and is independent, not affiliated with OpenAI. The creators disclaim any liability for misuse or resulting consequences.
Usage: Users are required to supply their own API keys and adhere to the OpenAI API reference guidelines.
Security: Proper management of API keys is essential for maintaining the security of your data. Ensure that API keys are stored and handled securely to prevent unauthorized access.
ONNX Runtime GenAI
Disclaimer: The 'On Device LLM' module uses ONNX Runtime to enable generative AI features and is not associated with Microsoft or ONNX Runtime.
Security Disclaimer
File Encryption
- Details: Notolog uses PBKDF2HMAC for key derivation and Fernet (AES-128 CBC mode) for encryption. Future updates may enhance encryption strength.
File Meta-Headers
- Privacy by Design: Essential information is stored in HTML-comment-formatted meta-headers to preserve essential data.
Data Integrity and Security
- Auto-Save Feature: Automatically saves changes to minimize data loss.
- Password Protection: Strong password practices are recommended to protect access to encrypted files.
Legal and Compliance
- Open Source Compliance: Licensed under the MIT License. Users are responsible for ensuring that their use of the software complies with applicable local laws and regulations.
- Liability: Developers disclaim liability for misuse or non-compliance with legal and regulatory standards.
Trademark Disclaimer
All trademarks, registered trademarks, product names, and company names or logos mentioned herein are the property of their respective owners. References to these trademarks in any documentation, code, or API communications are for identification purposes only and do not imply endorsement or affiliation.
Support Us
If you find Notolog useful, please consider giving us a star 🌟 on our GitHub page. This helps more people discover our project and contributes to its growth. Thank you for your support!
This README.md file has been carefully crafted and edited using the Notolog editor itself.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file notolog-1.0.6.tar.gz
.
File metadata
- Download URL: notolog-1.0.6.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
89122fc84ea07eb92c5d0eca366968ede2ed5bd77f3bf304bde054c9995b54f9
|
|
MD5 |
96f926f70de7695286927b9f4ea8e7e1
|
|
BLAKE2b-256 |
c349711ad1e2580f0b104cadba1d5bc617223f49d54b0633e0b5a15a07994c17
|
File details
Details for the file notolog-1.0.6-py3-none-any.whl
.
File metadata
- Download URL: notolog-1.0.6-py3-none-any.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
cf91922f6d19434dee0ab60030d1ec109bb77dfe229cf64ce990f1559d1f7520
|
|
MD5 |
9753f33cb1d5f906372a683dc1c54564
|
|
BLAKE2b-256 |
33b00961499fb40774fc0fe2bfece467edb9ca8ab3d204e5c8adde488af53f28
|