Skip to content

Contributing

Thank you for your interest in contributing to SmileSherlock!

We welcome bug reports, feature requests, documentation improvements, and code contributions.


Reporting Issues

If you encounter a bug or have a feature request, please open an issue on GitHub and include:

  • SmileSherlock version
  • Python version
  • Operating system
  • Steps to reproduce
  • Error messages (if any)

Development Setup

Clone the repository:

git clone https://github.com/AtharvaTilewale/SmileSherlock.git
cd SmileSherlock

Create a virtual environment:

python -m venv .venv

Activate it:

Windows

.venv\Scripts\activate

Linux/macOS

source .venv/bin/activate

Install in editable mode:

pip install -e ".[dev]"

Project Structure

SmileSherlock/
├── .github/workflows/      # CI/CD workflows
├── smilesherlock/          # Main package
│   ├── __init__.py         # Public API
│   ├── config.py           # Configuration management
│   ├── logging_config.py   # Logging setup
│   ├── cli.py              # CLI entry point
│   ├── cli/
│   │   ├── __init__.py
│   │   └── main.py         # Typer CLI application
│   ├── core/               # Core functionality
│   │   ├── __init__.py
│   │   ├── smiles.py       # SMILES validation
│   │   ├── pubchem.py      # PubChem API
│   │   └── database.py     # SQLite caching
│   └── utils/              # Utilities
│       ├── __init__.py
│       ├── file_io.py      # File parsing
│       ├── export.py       # Export formats
│       └── parsers.py      # Input parsers
├── tests/                  # Test suite
├── docs/                   # Documentation
├── pyproject.toml          # Package metadata & dependencies
├── README.md               # This file
└── LICENSE                 # MIT License

Running Tests

Execute the test suite with:

pytest

Coding Guidelines

  • Follow PEP 8 style guidelines.
  • Add docstrings for public functions.
  • Keep functions modular and well documented.
  • Include tests for new features whenever possible.

Pull Requests

Before submitting a pull request:

  • Create a feature branch.
  • Keep changes focused on a single feature or fix.
  • Update documentation if necessary.
  • Ensure all tests pass.

Example workflow:

git checkout -b feature/my-feature
git commit -m "Add my feature"
git push origin feature/my-feature

Then open a Pull Request on GitHub.


Questions

For questions or discussions, please use the GitHub Discussions page.

Thank you for helping improve SmileSherlock!