Skip to content

Development Setup

Krishanth edited this page Oct 15, 2026 · 1 revision

Development Setup

EveryO — Official Developer Environment & Contributor Onboarding Guide

Clone · Configure · Build · Test · Contribute

Python EveryO Tests License

A comprehensive guide to setting up, understanding, testing, debugging, and contributing to the EveryO development environment.

Home · Getting Started · Framework Architecture · Testing and Quality Assurance


Maintained By & Owner: EveryO Contributors & @krishanth7

Important

Development Philosophy

EveryO is designed to be a readable, reproducible neural computing framework. The core must remain usable without requiring a GPU, TensorFlow, network access during execution, or API credentials.

Contributors should prioritize mathematical correctness, clear implementation, appropriate tests, and honest documentation of limitations.


Table of Contents

  1. Overview
  2. System Requirements
  3. Required Development Tools
  4. Clone the Repository
  5. Configure Python Environment
  6. Install Development Dependencies
  7. Verify Installation
  8. Repository Architecture
  9. Development Workflow
  10. Running Tests
  11. Linting and Formatting
  12. Debugging EveryO
  13. Developing Tensor Operations
  14. Developing Neural Network Layers
  15. Optional Backends
  16. CUDA Development
  17. Documentation Development
  18. Git Branching Workflow
  19. Commit Guidelines
  20. Pull Request Preparation
  21. Continuous Integration
  22. Environment Troubleshooting
  23. Development Best Practices
  24. Contributor Readiness Checklist
  25. Developer References
  26. Next Steps

1. Overview

The EveryO development environment enables contributors to inspect, modify, test, and extend the framework.

It supports development across:

  • Tensor computation.
  • Automatic differentiation.
  • Neural network architectures.
  • Loss functions.
  • Optimization algorithms.
  • Dataset processing.
  • Model training.
  • Serialization.
  • Backend integration.
  • Performance profiling.
  • Documentation.

1.1 Contributor Objectives

A correctly configured environment should allow developers to:

  1. Import EveryO.
  2. Execute tensor operations.
  3. Run automatic differentiation.
  4. Run unit and integration tests.
  5. Apply code formatting.
  6. Debug framework components.
  7. Create a development branch.
  8. Submit a pull request.

2. System Requirements

2.1 Supported Python Versions

EveryO declares Python 3.9 or newer in its package metadata.

The inspected project documentation and CI matrix explicitly cover:

Python Version CI Coverage
Python 3.9 Ubuntu
Python 3.10 Ubuntu
Python 3.11 Ubuntu
Python 3.12 Ubuntu, Windows, macOS

Newer Python versions are not included in the inspected CI matrix and should be validated separately.

2.2 Operating Systems

  • Linux.
  • Windows.
  • macOS.

2.3 Minimum Core Dependencies

Package Declared Requirement
NumPy >=1.22
Matplotlib >=3.5

2.4 Development Dependencies

Package Purpose
pytest Automated testing
pytest-cov Coverage reporting
Ruff Linting and formatting
PyYAML YAML support

3. Required Development Tools

3.1 Git

Check Git installation:

git --version

3.2 Python

python --version

On systems using python3:

python3 --version

3.3 pip

python -m pip --version

3.4 Recommended Editor

Visual Studio Code is a suitable development environment.

Recommended editor capabilities include:

  • Python syntax support.
  • Code completion.
  • Integrated terminal.
  • Git integration.
  • Test discovery.
  • Debugging.
  • Ruff integration.

An editor is a developer preference, not an EveryO runtime requirement.


4. Clone the Repository

4.1 Clone

git clone https://github.com/krishanth7/EveryO.git

4.2 Enter Project Directory

cd EveryO

4.3 Inspect Repository

git status

4.4 Check Current Branch

git branch --show-current

4.5 Verify Remote

git remote -v

Expected repository origin:

https://github.com/krishanth7/EveryO.git

The displayed URL format may differ when SSH authentication is used.


5. Configure Python Environment

Use a dedicated virtual environment to isolate development dependencies.

5.1 Create Environment

python -m venv .venv

5.2 Linux and macOS

source .venv/bin/activate

5.3 Windows PowerShell

.venv\Scripts\Activate.ps1

5.4 Windows Command Prompt

.venv\Scripts\activate.bat

5.5 Verify Environment

python -c "import sys; print(sys.executable)"

The executable should point to the virtual environment.

5.6 Upgrade pip

python -m pip install --upgrade pip

6. Install Development Dependencies

6.1 Editable Installation

python -m pip install -e ".[dev]"

Editable installation allows source changes to be reflected without reinstalling the package after each modification.

6.2 Development Script

EveryO's contributing guide also documents:

./scripts/setup.sh

This is intended for a compatible shell environment.

Windows contributors can use the manual Python commands instead.

6.3 Optional Extras

TensorFlow

python -m pip install -e ".[dev,tensorflow]"

ONNX

python -m pip install -e ".[dev,onnx]"

CUDA Build Dependencies

python -m pip install -e ".[dev,cuda]"

YAML

python -m pip install -e ".[dev,yaml]"

Note

Installing the CUDA extra provides declared Python build dependencies. It does not automatically guarantee that the native CUDA extension is built or usable.


7. Verify Installation

7.1 Check Package Import

python -c "import everyo; print('EveryO import successful')"

7.2 Framework Information

python -m everyo info

7.3 Environment Diagnostics

python -m everyo doctor

7.4 Verify Automatic Differentiation

import everyo as eo

x = eo.tensor(
    [2.0],
    requires_grad=True
)

y = x * x

y.backward()

print(x.grad)

Expected numerical gradient:

[4.]

7.5 Verification Criteria

  • Package imports successfully.
  • CLI diagnostics complete.
  • Tensor operations execute.
  • Backpropagation produces the expected gradient.

8. Repository Architecture

8.1 Main Components

EveryO/
│
├── everyo/
│   ├── core/
│   ├── nn/
│   ├── optim/
│   ├── data/
│   ├── training/
│   ├── serialization/
│   ├── cuda/
│   └── ...
│
├── cuda/
│
├── tests/
│
├── examples/
│
├── docs/
│
├── scripts/
│
├── .github/
│   └── workflows/
│
├── pyproject.toml
├── README.md
├── CONTRIBUTING.md
├── CHANGELOG.md
└── LICENSE

This is a simplified architectural view rather than an exhaustive file tree.

8.2 Component Responsibilities

Component Responsibility
core Tensors, operations, autograd
nn Neural network modules
optim Optimization algorithms
data Datasets and loading
training Training engine and callbacks
serialization Model persistence and ONNX
cuda Optional CUDA interfaces
tests Automated validation
examples Executable demonstrations
docs Project documentation
scripts Development automation

8.3 Architectural Principle

The core numerical implementation should remain independent of heavyweight optional backends.

Contributors should avoid introducing unnecessary dependencies into the core layer.


9. Development Workflow

9.1 Standard Workflow

Identify Issue
      |
      v
Read Existing Implementation
      |
      v
Create Development Branch
      |
      v
Implement Change
      |
      v
Add or Update Tests
      |
      v
Run Quality Checks
      |
      v
Update Documentation
      |
      v
Open Pull Request
      |
      v
Review and Revision
      |
      v
Merge After Approval

9.2 Development Principles

  • Keep changes focused.
  • Prefer understandable implementations.
  • Add regression tests for bug fixes.
  • Preserve public API compatibility where practical.
  • Explain behavior changes.
  • Avoid unrelated refactoring.

10. Running Tests

EveryO uses pytest.

10.1 Full Suite

python -m pytest -q

10.2 Specific Module

python -m pytest tests/test_autograd.py -v

10.3 Filter Tests

python -m pytest -k gradient

10.4 Exclude Slow Tests

python -m pytest -m "not slow"

10.5 Coverage

python -m pytest \
  --cov=everyo \
  --cov-report=term-missing

10.6 Project Test Scripts

The contributing guide documents:

./scripts/test.sh

Fast mode:

./scripts/test.sh --fast

Coverage mode:

./scripts/test.sh --coverage

11. Linting and Formatting

EveryO uses Ruff.

11.1 Check Code Quality

ruff check .

11.2 Verify Formatting

ruff format --check .

11.3 Apply Formatting

ruff format .

11.4 Project Script

./scripts/lint.sh

Automatic fixes:

./scripts/lint.sh --fix

11.5 Repository Conventions

The inspected configuration specifies:

[tool.ruff]
line-length = 100
target-version = "py39"

The development dependencies pin Ruff to version 0.17.0.

Use the repository-defined version to avoid formatter differences between local development and CI.


12. Debugging EveryO

Debugging is essential for numerical frameworks.

12.1 Common Debugging Targets

  • Tensor shapes.
  • Gradient values.
  • Computation graph behavior.
  • Parameter updates.
  • Numerical instability.
  • Backend selection.

12.2 Python Debugger

breakpoint()

12.3 Example

import everyo as eo

x = eo.tensor(
    [2.0],
    requires_grad=True
)

y = x * x

breakpoint()

y.backward()

Inspect the tensor, output, and gradient behavior.

12.4 Recommended Debugging Process

  1. Reproduce the problem.
  2. Reduce it to the smallest failing case.
  3. Inspect intermediate values.
  4. Compare against NumPy.
  5. Verify gradient calculations.
  6. Add a regression test.
  7. Confirm the fix.

13. Developing Tensor Operations

New differentiable operations require both forward and backward implementations.

13.1 Implementation Location

everyo/core/operations.py

13.2 Development Requirements

  1. Implement forward computation.
  2. Implement the backward function.
  3. Handle shape and broadcasting behavior.
  4. Add numerical gradient tests.
  5. Export the public operation.
  6. Update documentation.

13.3 Gradient Verification

For a scalar function:

[ f(x) ]

use the central-difference approximation:

[ f'(x)\approx \frac{f(x+\epsilon)-f(x-\epsilon)} {2\epsilon} ]

13.4 Quality Expectations

  • Correct forward values.
  • Correct gradient values.
  • Appropriate dtype behavior.
  • Predictable shape handling.
  • Meaningful exceptions.
  • Tests for boundary cases.

14. Developing Neural Network Layers

New layers should integrate with EveryO's module system.

14.1 Base Class

from everyo.nn import Module

14.2 Registration

from everyo.nn.module import register_module

14.3 Required Considerations

  • Forward computation.
  • Parameters.
  • Gradient propagation.
  • Training and evaluation behavior.
  • Configuration serialization.
  • Public exports.
  • Unit tests.

14.4 Serialization

For layers with constructor arguments, implement sufficient configuration support for reconstruction.

14.5 Testing

Include:

  • Forward shape tests.
  • Parameter tests.
  • Gradient tests.
  • Serialization round-trip tests.
  • Invalid-input tests.

15. Optional Backends

EveryO's core runs on NumPy.

Additional functionality may depend on optional packages or native extensions.

15.1 Backend Categories

Backend Role
NumPy Core numerical computation
TensorFlow Optional interoperability and validation
CUDA Optional acceleration
ONNX Model export and interoperability

15.2 Backend Design Principles

  • Preserve CPU functionality.
  • Handle missing optional dependencies.
  • Provide informative errors.
  • Avoid unnecessary runtime requirements.
  • Verify numerical compatibility.

15.3 Backend Testing

Backend-specific tests should skip appropriately when prerequisites are unavailable.


16. CUDA Development

CUDA contributions require additional tooling and hardware validation.

16.1 Source Locations

The contributing guide identifies:

cuda/src/
cuda/include/everyo_cuda.h
cuda/bindings/bindings.cpp
everyo/cuda/interface.py

16.2 Kernel Requirements

  • Check memory bounds.
  • Validate CUDA calls.
  • Check kernel launches.
  • Manage device memory safely.
  • Provide appropriate CPU fallback behavior.
  • Test numerical correctness.

16.3 Error-Checking Macros

The project documents:

EVERYO_CUDA_CHECK(...)

and:

EVERYO_CUDA_CHECK_KERNEL()

16.4 Build Script

./scripts/build_cuda.sh

16.5 CUDA Testing

python -m pytest tests/test_devices.py -v

16.6 Contributor Disclosure

CUDA pull requests should specify:

  • GPU model.
  • CUDA toolkit version.
  • Driver environment.
  • Tests executed.
  • Known limitations.

Do not claim GPU validation when only CPU fallback tests were performed.


17. Documentation Development

Documentation must remain aligned with implemented functionality.

17.1 Documentation Locations

README.md
CONTRIBUTING.md
CHANGELOG.md
docs/
GitHub Wiki

17.2 Documentation Requirements

  • Correct API names.
  • Valid code examples.
  • Accurate expected outputs.
  • Clear prerequisites.
  • Supported version information.
  • Explicit limitations.

17.3 Documentation Changes

When modifying public behavior:

  1. Update relevant documentation.
  2. Add or revise examples.
  3. Update tests.
  4. Record the change in CHANGELOG.md.
  5. Confirm links remain valid.

17.4 Documentation Integrity

Do not present planned functionality as implemented.

Distinguish:

  • Available.
  • Experimental.
  • Planned.

18. Git Branching Workflow

Contributors should develop changes on dedicated branches.

18.1 Fork the Repository

Create a fork using GitHub's Fork action.

18.2 Clone Your Fork

git clone https://github.com/YOUR_USERNAME/EveryO.git

18.3 Add Upstream

git remote add upstream \
  https://github.com/krishanth7/EveryO.git

18.4 Synchronize Main

git fetch upstream

git switch main

git merge --ff-only upstream/main

18.5 Create Feature Branch

git switch -c feature/new-operation

18.6 Branch Naming Examples

feature/new-operation
fix/gradient-broadcasting
docs/development-guide
test/serialization-regression
refactor/tensor-validation

These are recommended conventions, not strictly enforced branch names.


19. Commit Guidelines

Commits should communicate changes clearly.

19.1 Recommended Structure

type(scope): concise description

19.2 Examples

feat(core): add tensor operation
fix(autograd): correct broadcast gradient
test(nn): cover layer serialization
docs(wiki): add development setup guide
refactor(data): simplify batching logic

19.3 Recommended Commit Types

Type Purpose
feat New functionality
fix Bug correction
docs Documentation
test Tests
refactor Internal restructuring
perf Performance improvement
chore Maintenance

These are proposed commit conventions, not a claim that the repository enforces Conventional Commits.


20. Pull Request Preparation

20.1 Before Opening a PR

Run:

python -m pytest -q
ruff check .
ruff format --check .

20.2 PR Description

A professional PR should include:

  • Problem statement.
  • Proposed solution.
  • Implementation details.
  • Testing performed.
  • Compatibility considerations.
  • Documentation changes.
  • Related issues.

20.3 Suggested PR Template

## Summary

Describe the change.

## Motivation

Explain the problem being solved.

## Implementation

Describe the technical approach.

## Testing

- [ ] Unit tests
- [ ] Integration tests
- [ ] Numerical validation
- [ ] Lint and formatting

## Compatibility

Describe any API or behavioral changes.

## Related Issues

Closes #ISSUE_NUMBER

21. Continuous Integration

EveryO uses GitHub Actions.

21.1 Existing Workflows

.github/workflows/tests.yml
.github/workflows/cuda-build.yml

21.2 Main CI Jobs

Job Purpose
Tests Python test matrix
Lint Ruff validation
TensorFlow Optional backend tests
Examples Executable examples
ONNX Export and runtime validation
Build Distribution validation

21.3 CI Execution

The inspected test workflow runs on:

  • Push.
  • Pull request.
  • Manual dispatch.

21.4 CI Requirements

Contributors should review failed checks and fix problems before requesting merge.

A successful local run does not guarantee that all platform-specific CI jobs will pass.

21.5 Workflow Status

View EveryO GitHub Actions


22. Environment Troubleshooting

Python command not found

Verify Python installation and PATH configuration.

Try python3 or the Windows Python launcher where appropriate.

Virtual environment activation fails

Confirm the environment exists and use the activation command appropriate to your operating system and shell.

On Windows, PowerShell execution policies may affect script activation.

ModuleNotFoundError: everyo

Confirm the correct virtual environment is active.

Run:

python -m pip install -e ".[dev]"
pytest command unavailable

Use:

python -m pytest

Confirm development dependencies were installed.

Ruff formatting differs from CI

Reinstall the repository's development dependencies and verify the Ruff version.

CUDA extension unavailable

Verify the CUDA toolkit, compiler, hardware, extension build, and supported environment.

CPU functionality should remain available without CUDA.

Git push permission denied

Verify GitHub authentication and repository permissions.

For external contributions, push to your fork and open a pull request against the upstream repository.


23. Development Best Practices

23.1 Code Quality

  • Keep functions focused.
  • Prefer explicit behavior.
  • Use meaningful names.
  • Add type hints to public interfaces.
  • Write clear docstrings.
  • Use project-specific exceptions.

23.2 Mathematical Correctness

  • Validate operations against reference calculations.
  • Use finite-difference gradient tests.
  • Test broadcasting.
  • Check numerical stability.
  • Document precision limitations.

23.3 Maintainability

  • Avoid unnecessary dependencies.
  • Preserve architectural boundaries.
  • Keep changes reviewable.
  • Add regression tests.
  • Update relevant documentation.

23.4 Security

  • Never commit credentials.
  • Avoid unsafe deserialization.
  • Validate external inputs.
  • Keep dependencies updated.
  • Report vulnerabilities responsibly.

24. Contributor Readiness Checklist

Environment

  • Git installed.
  • Compatible Python installed.
  • Repository cloned.
  • Virtual environment created.
  • Development dependencies installed.

Verification

  • EveryO imports successfully.
  • CLI diagnostics run.
  • Tensor operations execute.
  • Automatic differentiation works.
  • Relevant tests pass.

Development

  • Repository architecture understood.
  • Feature branch created.
  • Code conventions reviewed.
  • Test requirements understood.
  • Documentation guidelines reviewed.

Contribution

  • Change implemented.
  • Tests added or updated.
  • Lint checks pass.
  • Formatting checks pass.
  • Documentation updated.
  • Pull request prepared.

25. Developer References

Resource Link
EveryO Repository GitHub
README README.md
Contribution Guide CONTRIBUTING.md
Project Configuration pyproject.toml
Source Code everyo/
Test Suite tests/
Examples examples/
Development Scripts scripts/
CI Workflow tests.yml
Changelog CHANGELOG.md
Issues GitHub Issues
Pull Requests GitHub Pull Requests

26. Next Steps

Continue with the EveryO contributor documentation.

Page Focus
Contributing Contribution workflow and community participation
Coding Standards Source conventions and maintainability
Pull Request Guidelines Review and submission standards
Testing and Quality Assurance Test strategy and CI
Release Process Versioning, packaging, and releases

Wiki links become active after their corresponding pages are created.


Development Setup — Documentation Prepared

Next Recommended Page: Contributing →

Home · Getting Started · Framework Architecture · Testing and Quality Assurance


EveryO — Open Machine Learning. Built for Developers.

Maintained By & Owner:
EveryO Contributors & @krishanth7

Open Source · MIT Licensed · Community Driven

© 2026 EveryO Contributors

Clone this wiki locally