Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cirron.com/llms.txt

Use this file to discover all available pages before exploring further.

cirron lint

Comprehensive project validation and code quality checking for ML projects. The lint command analyzes your project structure, configuration, dependencies, and code to ensure best practices and identify potential issues.

Usage

cirron lint [options]

Options

OptionDescriptionDefault
--configLint project configuration (cirron.yaml)false
--structureCheck project structure and filesfalse
--dependenciesValidate dependencies (requirements.txt)false
--codeRun code quality checksfalse
--allRun all linting checkstrue
--fixAutomatically fix fixable issuesfalse
--verboseShow detailed suggestionsfalse
--jsonOutput results in JSON formatfalse
--strictTreat warnings as errorsfalse

Linting Categories

Configuration Linting

# Lint project configuration
cirron lint --config
Validates cirron.yaml:
  • Required Fields: name, version, template
  • Framework Configuration: Framework-specific requirements
  • Environment Setup: Deployment environment configurations
  • Version Format: Semantic versioning compliance
  • JSON Syntax: Valid JSON structure

Required Configuration Fields

{
  "name": "my-model",
  "version": "1.0.0",
  "template": "pytorch",
  "framework": "pytorch",
  "pythonVersion": "3.9"
}

Framework-Specific Validation

  • PyTorch: Python version specification
  • TensorFlow: GPU requirements consideration
  • Scikit-learn: Basic configuration validation

Project Structure Linting

# Check project structure
cirron lint --structure
Validates project organization:

Required Files

  • src/model.py - Model definition
  • requirements.txt - Python dependencies
  • Dockerfile - Container configuration

Optional Files

  • src/inference.py - Inference pipeline
  • src/data_loader.py - Data loading utilities
  • tests/ - Test directory

ML-Specific Directories

  • models/ - Model artifacts
  • data/ - Dataset storage
  • checkpoints/ - Training checkpoints
  • logs/ - Training logs

Configuration Files

  • .cirronignore - File exclusion patterns

Dependency Linting

# Validate dependencies
cirron lint --dependencies
Analyzes requirements.txt:
  • File Existence: requirements.txt presence
  • ML Dependencies: Common ML library detection
  • Version Pinning: Dependency version constraints
  • Dependency Count: Total dependency tracking

Common ML Dependencies

# Core ML libraries
torch>=1.9.0
tensorflow>=2.8.0
scikit-learn>=1.0.0

# Data processing
numpy>=1.21.0
pandas>=1.3.0

# Visualization
matplotlib>=3.4.0
seaborn>=0.11.0

Version Pinning Best Practices

# Good - Pinned versions
torch==1.9.0
numpy==1.21.0

# Warning - Unpinned versions
torch
numpy

# Good - Version ranges
torch>=1.9.0,<2.0.0
numpy~=1.21.0

Code Quality Linting

# Run code quality checks
cirron lint --code
Performs comprehensive code analysis:

TypeScript/JavaScript

  • ESLint Integration: Runs npm run lint
  • Syntax Validation: TypeScript compilation checks
  • Style Guidelines: Code formatting standards
  • Best Practices: Common patterns and anti-patterns

Python Code

  • Syntax Validation: Python compilation checks
  • Import Analysis: Module import validation
  • Code Structure: Function and class organization
  • ML-Specific Patterns: Model definition validation

Automatic Fixes

Fixable Issues

# Apply automatic fixes
cirron lint --fix
Automatically resolves:
  • Missing Directories: Creates ML-specific directories
  • Configuration Files: Generates .cirronignore
  • Code Formatting: ESLint auto-fix for TypeScript
  • Structure Issues: Directory creation and organization

Generated Files

.cirronignore Template

# Cirron ignore file
# Version control
.git/
.svn/

# Large data files
data/raw/
*.csv
!data/sample/*.csv

# Model artifacts
*.pth
*.pkl
!model_config.*

# Development
.vscode/
.idea/
__pycache__/
*.pyc
*.log
*.tmp
temp_*

# Build artifacts
build/
dist/
node_modules/

Examples

Basic Linting

# Run all linting checks
cirron lint

# Run specific category
cirron lint --config

Verbose Output

# Show detailed suggestions
cirron lint --verbose
Example output:
Cirron Lint Results
==================================================

CONFIG:
  ℹ Project configuration is valid (cirron.yaml)

STRUCTURE:
  ⚠ ML directory not found: models/ (models/)
    → Create models/ directory for ML artifacts
  ⚠ No .cirronignore file found (.cirronignore)
    → Create .cirronignore to exclude unnecessary files from builds

DEPENDENCIES:
  ⚠ 3 dependencies without version constraints (requirements.txt)
    → Pin dependency versions for reproducible builds
  ℹ Found 8 dependencies (requirements.txt)

CODE:
  ℹ TypeScript code passes ESLint checks
  ℹ Python syntax is valid (src/model.py)

==================================================
0 errors, 2 warnings, 4 infos

✓ Linting passed

ℹ 2 issues can be automatically fixed with --fix

JSON Output

# Get structured output
cirron lint --json
{
  "errors": 0,
  "warnings": 2,
  "infos": 4,
  "results": [
    {
      "category": "structure",
      "severity": "warning",
      "message": "ML directory not found: models/",
      "file": "models/",
      "fixable": true,
      "suggestion": "Create models/ directory for ML artifacts"
    }
  ]
}

Fixing Issues

# Apply automatic fixes
cirron lint --fix

# Apply fixes automatically
cirron lint --fix

Error Severity Levels

Error (Critical)

  • Missing required files (src/model.py, requirements.txt)
  • Invalid JSON in configuration files
  • Python syntax errors
  • Missing required configuration fields

Warning (Important)

  • Missing optional directories (models/, data/)
  • Unpinned dependency versions
  • Missing .cirronignore file
  • Framework-specific configuration issues

Info (Informational)

  • Valid configuration files
  • Successful code quality checks
  • Dependency count information
  • Optional file presence

Integration

CI/CD Pipeline

# GitHub Actions example
- name: Lint Project
  run: |
    cirron lint --all --strict
    cirron lint --fix

Pre-commit Hook

#!/bin/bash
# .git/hooks/pre-commit
cirron lint --all
if [ $? -ne 0 ]; then
  echo "Linting failed. Please fix issues before committing."
  exit 1
fi

Development Workflow

# Quick check during development
cirron lint --code

# Full validation before deployment
cirron lint --all --strict

# Fix issues automatically
cirron lint --fix

Configuration

ESLint Integration

// .eslintrc.json
{
  "extends": ["@typescript-eslint/recommended"],
  "rules": {
    "no-unused-vars": "error",
    "prefer-const": "error"
  }
}

Python Linting

# setup.cfg
[flake8]
max-line-length = 88
ignore = E203, W503
exclude = .git,__pycache__,build,dist

Troubleshooting

Common Issues

Missing ESLint Configuration

Error: npm run lint failed
Solution: Ensure ESLint is configured in your project
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

Python Syntax Errors

Error: Python syntax error in src/model.py
Solution: Check Python syntax and imports
python -m py_compile src/model.py

Missing Dependencies

Error: Missing requirements.txt file
Solution: Create requirements.txt with project dependencies
pip freeze > requirements.txt

Performance Optimization

Selective Linting

# Only check what you need
cirron lint --config --structure  # Skip code checks
cirron lint --code               # Only code quality

Ignore Patterns

# .cirronignore
# Exclude large files from linting
data/raw/
*.csv
models/*.pth

Best Practices

Project Structure

my-model/
├── src/
│   ├── model.py          # Required
│   ├── inference.py      # Optional
│   └── data_loader.py    # Optional
├── tests/                # Optional
├── models/               # ML artifacts
├── data/                 # Datasets
├── requirements.txt      # Required
├── Dockerfile           # Required
├── cirron.yaml          # Required
└── .cirronignore        # Recommended

Configuration Management

  • Use semantic versioning for project versions
  • Specify Python version for framework compatibility
  • Configure environments for different deployment stages
  • Pin dependency versions for reproducible builds

Code Quality

  • Follow framework-specific best practices
  • Use type hints in Python code
  • Implement proper error handling
  • Write comprehensive tests
  • Document complex model logic