Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

Β 

History

History
366 lines (238 loc) Β· 8.88 KB

File metadata and controls

366 lines (238 loc) Β· 8.88 KB

Contributing to Semantica

Thank you for your interest in contributing! Every contribution, no matter how small, is valuable. πŸŽ‰

⭐ Give us a Star β€’ 🍴 Fork Semantica β€’ πŸ’¬ Join our Discord

New to contributing? Start with a good first issue or join our Discord community.


πŸš€ Quick Start

  1. Find a good first issue
  2. Fork Semantica & clone the repository
  3. Make your changes
  4. Submit a pull request!

Need help? Join Discord or GitHub Discussions


🎯 Ways to Contribute

πŸ’» Code

What you can do:

  • Fix bugs
  • Add new features
  • Improve code quality (add type hints, docstrings, improve error messages)
  • Optimize performance

Where: semantica/ directory

Good first issues: Add docstrings, type hints, or improve error messages


πŸ“ Documentation

What you can do:

  • Fix typos and grammar errors
  • Improve clarity and readability
  • Add code examples and tutorials
  • Create new cookbook notebooks
  • Improve API documentation (docstrings)
  • Create troubleshooting guides
  • Update installation instructions
  • Add missing documentation

Where: README.md, docs/, cookbook/, docstrings in code

Good first issues: Fix typos, add examples, create cookbook tutorials, improve docstrings

Documentation formatting:

  • Use clear, concise language
  • Include code examples where helpful
  • Follow markdown best practices
  • Use proper headings hierarchy
  • Add links to related sections
  • Include screenshots for UI-related docs

πŸ§ͺ Testing

What you can do:

  • Add unit tests
  • Improve test coverage
  • Add integration tests

Where: tests/ directory

Good first issues: Add tests for specific functions or classes


πŸ› Bug Reports

What: Report bugs you find

How: Use the bug report template

Include: Description, steps to reproduce, expected vs actual behavior, environment details


πŸ’‘ Feature Requests

What: Suggest new features or improvements

How: Use the feature request template

Include: Problem statement, proposed solution, use cases


🎨 Cookbook & Examples

What: Create tutorials and examples

Where: cookbook/ directory

Examples: Create new notebooks, add examples, improve existing tutorials


πŸ’¬ Community Support

What: Help others in the community

Where: Discord, GitHub Discussions

Examples: Answer questions, review PRs, share your projects


πŸŽ“ Educational Content

What: Create educational materials

Examples: Blog posts, video tutorials, talks, workshops, case studies


πŸ”§ Other Contributions

  • Design & Graphics: Logos, diagrams, visualizations
  • Tools & Integrations: CLI tools, integrations with other frameworks
  • Infrastructure: CI/CD improvements, Docker optimization
  • Security: Report security vulnerabilities (privately)

πŸ“‹ Getting Started

1. Fork & Clone

First, fork Semantica on GitHub, then:

git clone https://github.com/your-username/semantica.git
cd semantica
git remote add upstream https://github.com/Hawksight-AI/semantica.git

2. Set Up Environment

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Install dev dependencies
pip install -e ".[dev]"

# Install pre-commit hooks (optional)
pre-commit install

3. Create Branch

git checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-description

4. Make Changes

  • Follow code style (see below)
  • Add tests for new features
  • Update documentation

5. Run Checks

pytest                          # Run tests
black semantica/ tests/        # Format code
isort semantica/ tests/         # Sort imports
flake8 semantica/ tests/        # Lint

Or use pre-commit hooks: pre-commit run --all-files

6. Commit & Push

git commit -m "feat(module): add new feature"
git push origin feature/your-feature-name

Then create a pull request on GitHub!


πŸ“ Code Style

We use automated tools:

Tool Purpose Command
Black Code formatting black semantica/ tests/
isort Import sorting isort semantica/ tests/
flake8 Style enforcement flake8 semantica/ tests/
mypy Type checking mypy semantica/

Run all: black semantica/ tests/ && isort semantica/ tests/ && flake8 semantica/ tests/ && mypy semantica/


πŸ§ͺ Testing

pytest                          # Run all tests
pytest --cov=semantica         # With coverage
pytest tests/test_file.py      # Specific file

Coverage goal: 80% minimum, 90%+ for critical modules


πŸ“ Commit Messages

Use Conventional Commits:

feat(kg): add temporal graph support
fix(parse): handle empty PDF files
docs(readme): add installation guide
test(extract): add unit tests

Types: feat, fix, docs, test, refactor, perf, style, chore


βœ… PR Checklist

Before submitting:

  • Code follows style guidelines
  • Tests pass locally
  • New tests added (if applicable)
  • Documentation updated
  • Commit messages follow conventions
  • No merge conflicts

πŸ“– Documentation Standards

Code Documentation (Docstrings)

Format: Use Google-style docstrings

def extract_entities(text: str, model: str = "transformer") -> List[Entity]:
    """Extract named entities from text.
    
    Args:
        text: Input text to process
        model: NER model to use (default: "transformer")
    
    Returns:
        List of extracted Entity objects
    
    Raises:
        ValueError: If text is empty or model is invalid
    
    Example:
        >>> from semantica.semantic_extract import NERExtractor
        >>> ner = NERExtractor(method="ml", model="en_core_web_sm")
        >>> entities = ner.extract("Apple Inc. was founded in 1976.")
        >>> len(entities)
        2
    """

Markdown Documentation Formatting

General Guidelines:

  • Use clear headings (H1 for title, H2 for main sections, H3 for subsections)
  • Keep paragraphs short and focused
  • Use bullet points for lists
  • Add code blocks with syntax highlighting
  • Include links to related documentation

Code Blocks:

  • Use triple backticks with language identifier: ```python, ```bash
  • Include comments in code examples
  • Show expected output when helpful

Examples:

## Section Title

Brief introduction paragraph.

### Subsection

- Bullet point 1
- Bullet point 2

**Code example:**

```python
from semantica import SomeClass

instance = SomeClass()
result = instance.method()

Note: Additional context or warnings.


**Best Practices:**
- Start with an overview/introduction
- Use consistent terminology
- Include "See also" links
- Add examples for complex concepts
- Keep formatting consistent across docs

---

## πŸ†˜ Getting Help

- πŸ’¬ [Discord](https://discord.gg/sV34vps5hH) - Real-time chat
- πŸ’­ [GitHub Discussions](https://github.com/Hawksight-AI/semantica/discussions) - Q&A
- πŸ› [GitHub Issues](https://github.com/Hawksight-AI/semantica/issues) - Bug reports

**Before asking:** Check existing documentation, search issues/discussions, review cookbook examples

---

## πŸ† Recognition

All contributors are recognized in:
- [CONTRIBUTORS.md](CONTRIBUTORS.md)
- GitHub contributors page
- Release notes

We follow the [all-contributors](https://allcontributors.org) specification!

---

## πŸ“œ Code of Conduct

This project follows a [Code of Conduct](CODE_OF_CONDUCT.md). Be respectful and inclusive.

---

## πŸ“š Resources

- [README.md](README.md) - Project overview
- [Cookbook](cookbook/) - Tutorials and examples
- [Documentation](docs/) - Comprehensive guides

---

**Thank you for contributing!** πŸš€

Every contribution matters - whether it's a single line of code, a typo fix, a helpful answer, or a bug report. We appreciate you! πŸ™

⭐ **Give us a Star** β€’ 🍴 **[Fork Semantica](https://github.com/Hawksight-AI/semantica/fork)** β€’ πŸ’¬ **Join our [Discord](https://discord.gg/sV34vps5hH)**