# Development Environment Setup

## Learning Objectives

By the end of this section, you will be able to:

- Install and configure pixi for Python package management
- Set up GitHub Copilot for AI-assisted development
- Configure VS Code or your preferred IDE for Python development
- Verify your development environment is working correctly

## Installing Pixi

Pixi is a modern, cross-platform package manager that simplifies Python project management and dependency handling.

### Installation

```bash
# Install pixi (works on Linux, macOS, and Windows)
curl -fsSL https://pixi.sh/install.sh | bash

# Verify installation
pixi --version
```

### Why Pixi?

- **Fast**: Uses conda packages with parallel downloads
- **Reproducible**: Lock files ensure consistent environments
- **Cross-platform**: Works identically on all operating systems
- **Modern**: Built with Rust for performance and reliability

## Setting Up GitHub Copilot

GitHub Copilot is an AI pair programmer that helps you write code faster and with fewer errors.

### Prerequisites

- GitHub account with Copilot subscription (free for students and open-source maintainers)
- VS Code or compatible IDE

### Installation Steps

1. **Install VS Code** (if not already installed)
   - Download from [code.visualstudio.com](https://code.visualstudio.com/)

2. **Install GitHub Copilot Extension**
   - Open VS Code
   - Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
   - Search for "GitHub Copilot"
   - Click Install

3. **Sign In**
   - Click "Sign in to GitHub" when prompted
   - Authorize VS Code to access your GitHub account
   - Complete the authentication flow

4. **Verify Setup**
   - Create a new Python file
   - Start typing a function definition
   - You should see gray suggestions from Copilot

### Copilot Best Practices

- **Write clear comments**: Copilot uses comments to understand your intent
- **Use descriptive names**: Function and variable names guide suggestions
- **Review suggestions**: Always review and understand generated code
- **Iterate**: If the first suggestion isn't right, try rephrasing your comment

## Installing Git

Git is essential for version control and collaboration.

```bash
# Linux (Debian/Ubuntu)
sudo apt install git

# macOS (with Homebrew)
brew install git

# Windows
# Download from git-scm.com
```

Verify installation:

```bash
git --version
```

## IDE Configuration

### VS Code Extensions

Install these recommended extensions:

- **Python** (Microsoft) - Python language support
- **GitHub Copilot** - AI pair programmer
- **Pylance** - Fast Python language server
- **Ruff** - Fast Python linter
- **GitLens** - Enhanced Git capabilities

### VS Code Settings

Create or update `.vscode/settings.json` in your project:

```json
{
  "python.linting.enabled": true,
  "python.linting.ruffEnabled": true,
  "python.formatting.provider": "black",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.organizeImports": true
  },
  "github.copilot.enable": {
    "*": true,
    "python": true
  }
}
```

## Verification

Let's verify everything is working:

```bash
# Check pixi
pixi --version

# Check Git
git --version

# Check Python (via pixi)
pixi run python --version
```

## Creating Your First Pixi Project

```bash
# Create a new directory
mkdir my-first-cli
cd my-first-cli

# Initialize pixi project
pixi init

# Add Python
pixi add python

# Create a simple script
mkdir src
echo 'print("Hello from Kashi Coding Handbook!")' > src/hello.py

# Run it
pixi run python src/hello.py
```

You should see: `Hello from Kashi Coding Handbook!`

## Troubleshooting

### Pixi not found after installation

- **Linux/macOS**: Add pixi to your PATH by restarting your terminal or running:
  ```bash
  source ~/.bashrc  # or ~/.zshrc
  ```

- **Windows**: Restart your terminal or add pixi to your system PATH

### Copilot not showing suggestions

- Verify you're signed in to GitHub in VS Code
- Check that Copilot is enabled in VS Code settings
- Try reloading VS Code (Ctrl+Shift+P → "Reload Window")

### Permission errors with pixi

- Don't use `sudo` with pixi
- Ensure you have write permissions in your home directory

## Next Steps

Now that your development environment is set up, proceed to the next section to learn about modern Python project structure.

## Resources

- [Pixi Documentation](https://pixi.sh/latest/)
- [GitHub Copilot Docs](https://docs.github.com/en/copilot)
- [VS Code Python Tutorial](https://code.visualstudio.com/docs/python/python-tutorial)
