Notolog - Python Markdown Editor
Project description
Notolog
Python Markdown Editor
Notolog is an open-source Python Markdown editor that blends simplicity with functionality. Designed using PySide6, it not only helps tackle daily programming challenges but also enhances proficiency in both Markdown and Python for those interested in diving deeper into the code.
Features
- Open-source and Transparent: Licensed under MIT, promoting transparency and collaboration.
- Markdown Support:
- Editor mode with smooth highlighting, line numbers, and extended syntax.
- View mode, which uses the Python Markdown library for accurate rendering to HTML.
- Improves readability and structure through custom parsing of disclosure widgets, including nested hierarchies.
- Supports multi-line block open-close tokens.
- AI Assistant: Incorporate module extensions able to work either with AI APIs or with on-device large language models (LLMs).
- Accessibility Features:
- Descriptive elements for enhanced usability.
- Adjustable font sizes for improved readability.
- Auto-Save: Changes are saved automatically, ensuring that data is not lost unexpectedly.
- Enhanced Search Functionality:
- In-file content search.
- Quick file name search within the file tree.
- File Encryption:
- Securely encrypts files using Fernet, which employs AES-128 in CBC mode, providing strong encryption.
- File Meta-Headers:
- Stores essential file information securely in meta-headers formatted as HTML comments, thus enhancing privacy and security.
- Multi-language Support: Available in several languages, with easy addition of new languages.
- Customizable UI:
- Multiple color themes for personalization.
- Supports hotkeys like Ctrl+S (save) and Ctrl+F (search).
- Right-click context menus for file management in the file tree.
- TODOs Highlighting: Notolog includes specialized highlighting for TODOs. By typing '@todo something,' users can mark tasks, thus enhancing the ability to track and manage future plans efficiently.
- Unit Testing Suite: Ensures reliability and maintainability of the code.
Remember: Strong password enforcement is recommended to protect access to encrypted files.
Translations
Notolog supports multiple languages out of the box, enhancing its accessibility globally. Here are the languages currently supported:
- Chinese (Simplified), Dutch, Finnish, French, Georgian, German, Greek, Hindi, Italian, Japanese, Korean, Latin, Portuguese, Russian, Spanish, Swedish, Turkish
Here's a glimpse of the UI in Japanese, featuring the Strawberry theme:
Prerequisites
Ensure Python 3.9 or higher is installed on your system. For installation details, visit python.org.
Check the installed Python version:
python3 -V
Verify pip availability:
pip --version
Virtual Environment
Using a virtual environment is highly recommended as it helps avoid version conflicts and interference from other packages.
Installation
Using pip (Recommended)
Set up a virtual environment (highly recommended):
python3 -m venv notolog
# On Unix-like systems (macOS and Linux):
source notolog/bin/activate
# On Windows:
notolog\Scripts\activate
Install Notolog quickly using pip:
pip install notolog
That's it! Starting the app is as simple as running notolog
.
To update Notolog to the latest version:
pip install --upgrade notolog
From Source
To install from source for more control over the installation process:
- Clone the GitHub repository:
git clone https://github.com/notolog/notolog-editor.git
- Navigate to the project directory:
cd notolog-editor
- Set up a virtual environment (highly recommended):
python3 -m venv notolog
# On Unix-like systems:
source notolog/bin/activate
# On Windows:
notolog\Scripts\activate
- 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
Virtual Environments
The instructions below contain steps of how to set up venv virtual environment to run a Python app safely. Starting from Python 3.6 venv is a recommended way to create virtual environments. For more information check Creation of virtual environments. Alternatively, you can execute the Notolog code and set up virtual environment with your favorite Python code editor.
Linux and macOS
Set Up Virtual Environment
- Open Terminal.
- Navigate to your project directory using the cd command.
- Create a virtual environment by running
python3 -m venv notolog
. Replace notolog with the desired name for your virtual environment.
Activate Virtual Environment:
To activate the virtual environment, run:
source notolog/bin/activate
To deactivate environment just run this command:
deactivate
Install venv on Linux systems
While Python itself 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
Windows
Set Up Virtual Environment
- Open Command Prompt or PowerShell.
- Navigate to your project directory using the
cd
command. - Create a virtual environment by running
python -m venv notolog
. Replace notolog with the name you want to give to your virtual environment.
Activate Virtual Environment
To activate the virtual environment, run:
notolog\Scripts\activate
Mind the environment name (notolog or any other selected before).
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
The Notolog project is licensed under the MIT License - see the LICENSE file for details.
Third-Party Acknowledgements
This project incorporates various third-party libraries and components, each subject to their own licenses. These packages may also install additional dependencies necessary for their functionality. For detailed information about these components and their licenses, please see the ThirdPartyNotices.md file.
Users and contributors are encouraged to consult this document to fully understand the licensing obligations and acknowledgements related to these third-party components.
AI Integration Disclaimers
OpenAI API
Disclaimer: This project is independent and not affiliated with, endorsed by, or sponsored by OpenAI. The OpenAI API is integrated 'as is'. The creators disclaim liability for misuse or any consequences arising from this integration.
Usage: This project uses the OpenAI API to access AI assistant capabilities, and enhance natural language processing. Users must provide their own OpenAI API keys and should refer to the OpenAI API reference for detailed usage guidelines.
Responsibility: Users are responsible for obtaining and managing their OpenAI API keys in compliance with OpenAI's terms of service.
Security: Users are expected to handle their API keys securely to avoid unauthorized access.
This section was generated with the assistance of AI to ensure accurate and concise information regarding the use of the OpenAI API.
ONNX Runtime GenAI
Disclaimer: The 'On Device LLM' module, part of this application, utilizes the ONNX Runtime functionality to provide specialized capabilities for generative AI features. The application is an independent project and is not officially associated with ONNX Runtime, maintained by Microsoft, or with any other third-party entities.
Security Disclaimer
File Encryption
- Encryption Details: Notolog uses PBKDF2HMAC for key derivation and Fernet for encryption, which employs AES-128 in CBC mode. Although 256-bit key material is generated, only the first 128 bits are utilized for encryption. Future updates aim to enhance security by employing the full 256 bits.
File Meta-Headers
- Privacy by Design: Essential file information is stored securely in meta-headers formatted as HTML comments, enhancing privacy and security.
Data Integrity and Security
- Auto-Save Feature: Changes are automatically saved, minimizing the risk of data loss.
- Password Protection: Strong password practices are recommended to safeguard access to encrypted files.
General Information
- Open Source: This application is open-source, licensed under the MIT License. Users must comply with applicable laws and regulations when using this software.
- Liability: The developers disclaim any liability for misuse or legal non-compliance related to the use of this software.
Trademark Disclaimer
All company names, product names, logos, and brands mentioned in this document, code, or comments are the property of their respective owners. All company, product, and service names used in this document, code, or comments are for identification purposes only. Use of these names, logos, and brands does not imply endorsement or affiliation. Mention of third-party names, logos, and brands is solely for identification and does not constitute an endorsement or affiliation with any trademark holder.
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.