Contributing to Lexoid
======================
Thank you for your interest in contributing to Lexoid! We welcome contributions from the community to make our document parsing library even better.
Getting Started
---------------
1. Fork the repository and clone your fork:
.. code-block:: bash
git clone https://github.com/YOUR_USERNAME/lexoid.git
cd lexoid
2. Set up your development environment:
.. code-block:: bash
make dev
3. Activate the virtual environment:
.. code-block:: bash
source .venv/bin/activate
Development Setup
-----------------
Environment Variables
^^^^^^^^^^^^^^^^^^^^^
Create a ``.env`` file in the root directory with the following API keys (as needed):
.. code-block:: bash
GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
HUGGINGFACEHUB_API_TOKEN=your_huggingface_token
TOGETHER_API_KEY=your_together_api_key
Running Tests
^^^^^^^^^^^^^
Run the test suite:
.. code-block:: bash
python3 -m pytest tests/test_parser.py -v
To see test logs:
.. code-block:: bash
python3 -m pytest tests/test_parser.py -v -s
Contributing Guidelines
-----------------------
Code Style
^^^^^^^^^^
* We use Python's `PEP 8 `_ style guide
* If using VS Code, install the `Black Formatter `_ extension
* Use type hints for function parameters and return values
Pull Request Process
^^^^^^^^^^^^^^^^^^^^
1. Create a new branch for your feature or bugfix:
.. code-block:: bash
git checkout -b feature-name
2. Make your changes and commit them with clear, descriptive commit messages
3. Add tests for any new functionality
4. Update documentation as needed
5. Push your changes and create a pull request
Areas for Contribution
^^^^^^^^^^^^^^^^^^^^^^
* When starting out, check out the `Issues `_ page and look for tickets tagged with ``good first issue``
* However, don't let the above restrict you. Feel free to have a go at any ticket or suggest any new features!
Testing Your Changes
^^^^^^^^^^^^^^^^^^^^
1. Add test cases to ``tests/test_parser.py`` along with changes if appropriate
2. Test with different file formats and parsing strategies
Documentation
-------------
When adding new features, please:
1. Update the main ``README.md`` if needed
2. Add docstrings to new functions and classes
3. Include example usage in the documentation
4. Update type hints and function signatures in the docs
Reporting Issues
----------------
When reporting bugs, please include:
* A clear description of the problem
* Steps to reproduce
* Expected vs actual behavior
* Sample files (if possible)
* Environment information (Python version, OS, etc.)
Thank you for helping improve Lexoid!