# Env Scanner
🔍 Automatically scan Python projects for environment variables and generate `.env-example` files.
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
## Features
- 🔎 **Automatic Detection**: Scans your Python codebase to find all environment variable usage
- 🌐 **Framework Support**: Works with Django, Flask, FastAPI, Pydantic, and vanilla Python
- 📝 **Smart Generation**: Creates `.env-example` files with intelligent placeholders and comments
- 🎯 **Multiple Detection Methods**: Uses both AST parsing and regex for comprehensive coverage
- 📄 **Config File Scanning**: Also scans YAML, JSON, TOML, and INI files for env vars
- 🗂️ **Smart Grouping**: Organizes variables by common prefixes for better readability
- 💡 **Contextual Comments**: Adds helpful comments based on variable names and usage locations
- ⚡ **CLI Interface**: Easy-to-use command-line tool
- 🐍 **Pure Python**: No external dependencies required
## Installation
### From PyPI (when published)
```bash
pip install env-scanner
```
### From Source
```bash
git clone https://github.com/yourusername/env-scanner.git
cd env-scanner
pip install -e .
```
## Quick Start
### Command Line
The simplest way to use env-scanner:
```bash
# Scan current directory and generate .env-example
env-scanner
# Scan a specific project
env-scanner scan /path/to/your/project
# Just list variables without generating file
env-scanner list
# Preview before saving
env-scanner scan --preview
```
### Python API
```python
from env_scanner import EnvScanner, EnvExampleGenerator
# Create scanner
scanner = EnvScanner(project_path='/path/to/your/project')
# Scan for environment variables
env_vars = scanner.scan_directory()
# Print summary
scanner.print_summary()
# Generate .env-example file
generator = EnvExampleGenerator.from_scanner(scanner)
generator.save()
```
## Supported Frameworks & Patterns
Env Scanner works with **all major Python frameworks** and patterns. Here's what it detects:
### 🐍 Standard Python
```python
import os
from os import environ, getenv
# All these patterns are detected
DATABASE_URL = os.environ.get('DATABASE_URL')
API_KEY = os.environ['API_KEY']
SECRET_KEY = os.getenv('SECRET_KEY')
PORT = environ.get('PORT', '8000')
DEBUG = getenv('DEBUG', 'False')
```
### 🎯 Django
```python
# django-environ
import environ
env = environ.Env()
DATABASE_URL = env('DATABASE_URL')
DEBUG = env.bool('DEBUG', default=False)
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')
SECRET_KEY = env.str('SECRET_KEY')
# python-decouple
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)
```
### 🌶️ Flask
```python
from flask import Flask
app = Flask(__name__)
# Flask config patterns
app.config['DATABASE_URL'] = os.environ.get('DATABASE_URL')
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
# Or from current_app
from flask import current_app
db_url = current_app.config['DATABASE_URL']
```
### ⚡ FastAPI / Pydantic
```python
from pydantic import BaseSettings, Field
from pydantic_settings import BaseSettings # Pydantic v2
class Settings(BaseSettings):
# Auto-detected from field names
database_url: str
api_key: str
# With explicit env names
secret: str = Field(env='SECRET_KEY')
port: int = Field(default=8000, env='PORT')
class Config:
env_file = '.env'
# Usage
settings = Settings()
```
### 📦 python-dotenv
```python
from dotenv import load_dotenv, dotenv_values
# Load variables
load_dotenv()
# Or get specific values
config = dotenv_values(".env")
DATABASE_URL = config.get('DATABASE_URL')
```
### 📄 Configuration Files
Env Scanner also scans configuration files for environment variable references:
**YAML files:**
```yaml
database:
url: ${DATABASE_URL}
password: ${DB_PASSWORD}
# Or Symfony-style
database:
url: '%env(DATABASE_URL)%'
```
**JSON files:**
```json
{
"database": "${DATABASE_URL}",
"api_key": "${API_KEY}"
}
```
**TOML files:**
```toml
database_url = "${DATABASE_URL}"
api_key = "${API_KEY}"
```
### 🔍 Advanced Patterns
```python
# F-strings
message = f"Connecting to {os.environ['DATABASE_URL']}"
# String interpolation
config = f"postgresql://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}"
# Direct from environ
from os import environ
API_KEY = environ['API_KEY']
```
## CLI Usage
### Scan Command
Scan a project and generate `.env-example` file:
```bash
# Basic usage
env-scanner scan
# Specify project path
env-scanner scan /path/to/project
# Custom output location
env-scanner scan --output .env.template
# Exclude specific directories
env-scanner scan --exclude venv,build,dist,node_modules
# Preview before saving
env-scanner scan --preview
# Disable comments
env-scanner scan --no-comments
# Disable grouping by prefix
env-scanner scan --no-grouping
```
### List Command
List all environment variables found without generating a file:
```bash
# Basic list
env-scanner list
# Show file locations
env-scanner list --show-locations
# Specific project
env-scanner list /path/to/project
```
### CLI Options
```
Options:
-h, --help Show help message
-v, --version Show version
--verbose Enable verbose output
Scan/Generate Options:
-o, --output PATH Output path for .env-example file
-e, --exclude DIRS Comma-separated directories to exclude
--no-generate Only scan, don't generate file
--no-comments Don't add descriptive comments
--no-grouping Don't group variables by prefix
--no-header Don't add file header
--preview Preview before saving
--regex-only Use only regex (skip AST parsing)
List Options:
-l, --show-locations Show where variables are used
```
## Python API
### EnvScanner
The `EnvScanner` class scans Python files to detect environment variables:
```python
from env_scanner import EnvScanner
# Initialize scanner
scanner = EnvScanner(
project_path='/path/to/project',
exclude_dirs=['venv', 'build', 'dist'], # Optional
)
# Scan the project
env_vars = scanner.scan_directory()
# Get detailed results
results = scanner.get_results()
print(results['variables']) # List of variable names
print(results['count']) # Number of variables
print(results['locations']) # Dict of variable locations
# Print summary
scanner.print_summary()
```
### EnvExampleGenerator
The `EnvExampleGenerator` class creates `.env-example` files:
```python
from env_scanner import EnvExampleGenerator
# From a set of variable names
generator = EnvExampleGenerator(
env_vars={'DATABASE_URL', 'API_KEY', 'SECRET_KEY'},
output_path='.env-example',
add_comments=True,
group_by_prefix=True,
include_header=True
)
# Generate and save
generator.save()
# Or preview first
generator.preview()
# Create from scanner
from env_scanner import EnvScanner
scanner = EnvScanner('.')
scanner.scan_directory()
generator = EnvExampleGenerator.from_scanner(
scanner,
output_path='.env-example'
)
generator.save()
```
## Example Output
For a project using these environment variables:
```python
DATABASE_URL = os.environ.get('DATABASE_URL')
DATABASE_NAME = os.getenv('DATABASE_NAME')
API_KEY = os.environ['API_KEY']
API_SECRET = os.environ.get('API_SECRET')
DEBUG = os.getenv('DEBUG', 'False')
PORT = os.environ.get('PORT', '8000')
```
Env Scanner generates this `.env-example` file:
```bash
# Environment Variables Configuration
# This file was automatically generated by env-scanner
# Generated on: 2025-10-01 12:00:00
#
# Copy this file to .env and fill in the actual values
# DO NOT commit .env file to version control
# API Configuration
#==================================================
# API key for external service
API_KEY=your_secret_key_here
# API secret for external service
API_SECRET=your_secret_key_here
# DATABASE Configuration
#==================================================
# Database configuration
DATABASE_NAME=your_database_name
# Database configuration
DATABASE_URL=https://example.com
# Other Configuration
#==================================================
# Debug mode (true/false)
DEBUG=false
# Port number
PORT=8000
```
## Configuration
### Excluding Directories
By default, these directories are excluded from scanning:
- `venv`, `env`, `.venv`, `.env`
- `node_modules`
- `__pycache__`, `.git`
- `dist`, `build`, `*.egg-info`
- `.tox`, `.pytest_cache`, `.mypy_cache`
Add custom exclusions:
```python
scanner = EnvScanner(
project_path='.',
exclude_dirs=['custom_dir', 'another_dir']
)
```
Or via CLI:
```bash
env-scanner scan --exclude venv,build,custom_dir
```
## Advanced Usage
### Custom Variable Detection
Add custom regex patterns for variable detection:
```python
scanner = EnvScanner(
project_path='.',
include_patterns=[
r'config\.get\(["\']([A-Z_]+)["\']', # Custom config pattern
]
)
```
### Programmatic Generation
```python
from env_scanner import EnvScanner, EnvExampleGenerator
# Scan project
scanner = EnvScanner('/path/to/project')
variables = scanner.scan_directory()
# Custom generation
generator = EnvExampleGenerator(
env_vars=variables,
output_path='custom-env-template.txt',
add_comments=True,
group_by_prefix=True
)
# Get content without saving
content = generator.generate_content()
print(content)
# Or save to file
generator.save()
```
## Development
### Setup Development Environment
```bash
# Clone the repository
git clone https://github.com/yourusername/env-scanner.git
cd env-scanner
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e ".[dev]"
```
### Run Tests
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=env_scanner --cov-report=html
# Run specific test file
pytest tests/test_scanner.py
```
### Code Quality
```bash
# Format code
black env_scanner tests
# Lint code
flake8 env_scanner tests
# Type checking
mypy env_scanner
```
## How It Works
1. **Scanning**: The scanner walks through your Python project files
2. **Detection**: Uses both AST (Abstract Syntax Tree) parsing and regex to find environment variable access patterns
3. **Analysis**: Identifies variable names and their usage locations
4. **Generation**: Creates a `.env-example` file with:
- Intelligent placeholder values based on variable names
- Descriptive comments for common patterns
- Grouped organization by variable prefixes
- Usage location context
## Use Cases
- 🚀 **Project Setup**: Help new developers understand required environment variables
- 📦 **CI/CD**: Automatically generate environment templates in deployment pipelines
- 📚 **Documentation**: Keep environment variable documentation in sync with code
- 🔒 **Security**: Ensure all required environment variables are documented without exposing secrets
- ♻️ **Refactoring**: Track environment variable usage across large codebases
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
- 📧 Email: your.email@example.com
- 🐛 Issues: [GitHub Issues](https://github.com/yourusername/env-scanner/issues)
- 💬 Discussions: [GitHub Discussions](https://github.com/yourusername/env-scanner/discussions)
## Acknowledgments
- Inspired by the need for better environment variable management in Python projects
- Built with Python's `ast` module for accurate code parsing
- Thanks to all contributors and users!
---
Made with ❤️ by Your Name
# env_scanner
# env_scanner
Raw data
{
"_id": null,
"home_page": "https://github.com/ammarmunir4567/env-scanner",
"name": "env-scanner",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "Ammar Munir <ammarmunir4567@gmail.com>",
"keywords": "python, environment, env, dotenv, configuration, environment-variables, scanner, generator",
"author": "Ammar Munir",
"author_email": "Ammar Munir <ammarmunir4567@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/e1/31/2b09255d3968dd859edd81814ed62bad1cb891b27338527c096170146bf7/env_scanner-2.3.2.tar.gz",
"platform": null,
"description": "# Env Scanner\n\n\ud83d\udd0d Automatically scan Python projects for environment variables and generate `.env-example` files.\n\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\n## Features\n\n- \ud83d\udd0e **Automatic Detection**: Scans your Python codebase to find all environment variable usage\n- \ud83c\udf10 **Framework Support**: Works with Django, Flask, FastAPI, Pydantic, and vanilla Python\n- \ud83d\udcdd **Smart Generation**: Creates `.env-example` files with intelligent placeholders and comments\n- \ud83c\udfaf **Multiple Detection Methods**: Uses both AST parsing and regex for comprehensive coverage\n- \ud83d\udcc4 **Config File Scanning**: Also scans YAML, JSON, TOML, and INI files for env vars\n- \ud83d\uddc2\ufe0f **Smart Grouping**: Organizes variables by common prefixes for better readability\n- \ud83d\udca1 **Contextual Comments**: Adds helpful comments based on variable names and usage locations\n- \u26a1 **CLI Interface**: Easy-to-use command-line tool\n- \ud83d\udc0d **Pure Python**: No external dependencies required\n\n## Installation\n\n### From PyPI (when published)\n\n```bash\npip install env-scanner\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/yourusername/env-scanner.git\ncd env-scanner\npip install -e .\n```\n\n## Quick Start\n\n### Command Line\n\nThe simplest way to use env-scanner:\n\n```bash\n# Scan current directory and generate .env-example\nenv-scanner\n\n# Scan a specific project\nenv-scanner scan /path/to/your/project\n\n# Just list variables without generating file\nenv-scanner list\n\n# Preview before saving\nenv-scanner scan --preview\n```\n\n### Python API\n\n```python\nfrom env_scanner import EnvScanner, EnvExampleGenerator\n\n# Create scanner\nscanner = EnvScanner(project_path='/path/to/your/project')\n\n# Scan for environment variables\nenv_vars = scanner.scan_directory()\n\n# Print summary\nscanner.print_summary()\n\n# Generate .env-example file\ngenerator = EnvExampleGenerator.from_scanner(scanner)\ngenerator.save()\n```\n\n## Supported Frameworks & Patterns\n\nEnv Scanner works with **all major Python frameworks** and patterns. Here's what it detects:\n\n### \ud83d\udc0d Standard Python\n\n```python\nimport os\nfrom os import environ, getenv\n\n# All these patterns are detected\nDATABASE_URL = os.environ.get('DATABASE_URL')\nAPI_KEY = os.environ['API_KEY']\nSECRET_KEY = os.getenv('SECRET_KEY')\nPORT = environ.get('PORT', '8000')\nDEBUG = getenv('DEBUG', 'False')\n```\n\n### \ud83c\udfaf Django\n\n```python\n# django-environ\nimport environ\nenv = environ.Env()\n\nDATABASE_URL = env('DATABASE_URL')\nDEBUG = env.bool('DEBUG', default=False)\nALLOWED_HOSTS = env.list('ALLOWED_HOSTS')\nSECRET_KEY = env.str('SECRET_KEY')\n\n# python-decouple\nfrom decouple import config\nSECRET_KEY = config('SECRET_KEY')\nDEBUG = config('DEBUG', default=False, cast=bool)\n```\n\n### \ud83c\udf36\ufe0f Flask\n\n```python\nfrom flask import Flask\napp = Flask(__name__)\n\n# Flask config patterns\napp.config['DATABASE_URL'] = os.environ.get('DATABASE_URL')\napp.config['SECRET_KEY'] = os.getenv('SECRET_KEY')\n\n# Or from current_app\nfrom flask import current_app\ndb_url = current_app.config['DATABASE_URL']\n```\n\n### \u26a1 FastAPI / Pydantic\n\n```python\nfrom pydantic import BaseSettings, Field\nfrom pydantic_settings import BaseSettings # Pydantic v2\n\nclass Settings(BaseSettings):\n # Auto-detected from field names\n database_url: str\n api_key: str\n \n # With explicit env names\n secret: str = Field(env='SECRET_KEY')\n port: int = Field(default=8000, env='PORT')\n \n class Config:\n env_file = '.env'\n\n# Usage\nsettings = Settings()\n```\n\n### \ud83d\udce6 python-dotenv\n\n```python\nfrom dotenv import load_dotenv, dotenv_values\n\n# Load variables\nload_dotenv()\n\n# Or get specific values\nconfig = dotenv_values(\".env\")\nDATABASE_URL = config.get('DATABASE_URL')\n```\n\n### \ud83d\udcc4 Configuration Files\n\nEnv Scanner also scans configuration files for environment variable references:\n\n**YAML files:**\n```yaml\ndatabase:\n url: ${DATABASE_URL}\n password: ${DB_PASSWORD}\n \n# Or Symfony-style\ndatabase:\n url: '%env(DATABASE_URL)%'\n```\n\n**JSON files:**\n```json\n{\n \"database\": \"${DATABASE_URL}\",\n \"api_key\": \"${API_KEY}\"\n}\n```\n\n**TOML files:**\n```toml\ndatabase_url = \"${DATABASE_URL}\"\napi_key = \"${API_KEY}\"\n```\n\n### \ud83d\udd0d Advanced Patterns\n\n```python\n# F-strings\nmessage = f\"Connecting to {os.environ['DATABASE_URL']}\"\n\n# String interpolation\nconfig = f\"postgresql://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}\"\n\n# Direct from environ\nfrom os import environ\nAPI_KEY = environ['API_KEY']\n```\n\n## CLI Usage\n\n### Scan Command\n\nScan a project and generate `.env-example` file:\n\n```bash\n# Basic usage\nenv-scanner scan\n\n# Specify project path\nenv-scanner scan /path/to/project\n\n# Custom output location\nenv-scanner scan --output .env.template\n\n# Exclude specific directories\nenv-scanner scan --exclude venv,build,dist,node_modules\n\n# Preview before saving\nenv-scanner scan --preview\n\n# Disable comments\nenv-scanner scan --no-comments\n\n# Disable grouping by prefix\nenv-scanner scan --no-grouping\n```\n\n### List Command\n\nList all environment variables found without generating a file:\n\n```bash\n# Basic list\nenv-scanner list\n\n# Show file locations\nenv-scanner list --show-locations\n\n# Specific project\nenv-scanner list /path/to/project\n```\n\n### CLI Options\n\n```\nOptions:\n -h, --help Show help message\n -v, --version Show version\n --verbose Enable verbose output\n \nScan/Generate Options:\n -o, --output PATH Output path for .env-example file\n -e, --exclude DIRS Comma-separated directories to exclude\n --no-generate Only scan, don't generate file\n --no-comments Don't add descriptive comments\n --no-grouping Don't group variables by prefix\n --no-header Don't add file header\n --preview Preview before saving\n --regex-only Use only regex (skip AST parsing)\n \nList Options:\n -l, --show-locations Show where variables are used\n```\n\n## Python API\n\n### EnvScanner\n\nThe `EnvScanner` class scans Python files to detect environment variables:\n\n```python\nfrom env_scanner import EnvScanner\n\n# Initialize scanner\nscanner = EnvScanner(\n project_path='/path/to/project',\n exclude_dirs=['venv', 'build', 'dist'], # Optional\n)\n\n# Scan the project\nenv_vars = scanner.scan_directory()\n\n# Get detailed results\nresults = scanner.get_results()\nprint(results['variables']) # List of variable names\nprint(results['count']) # Number of variables\nprint(results['locations']) # Dict of variable locations\n\n# Print summary\nscanner.print_summary()\n```\n\n### EnvExampleGenerator\n\nThe `EnvExampleGenerator` class creates `.env-example` files:\n\n```python\nfrom env_scanner import EnvExampleGenerator\n\n# From a set of variable names\ngenerator = EnvExampleGenerator(\n env_vars={'DATABASE_URL', 'API_KEY', 'SECRET_KEY'},\n output_path='.env-example',\n add_comments=True,\n group_by_prefix=True,\n include_header=True\n)\n\n# Generate and save\ngenerator.save()\n\n# Or preview first\ngenerator.preview()\n\n# Create from scanner\nfrom env_scanner import EnvScanner\n\nscanner = EnvScanner('.')\nscanner.scan_directory()\n\ngenerator = EnvExampleGenerator.from_scanner(\n scanner,\n output_path='.env-example'\n)\ngenerator.save()\n```\n\n## Example Output\n\nFor a project using these environment variables:\n\n```python\nDATABASE_URL = os.environ.get('DATABASE_URL')\nDATABASE_NAME = os.getenv('DATABASE_NAME')\nAPI_KEY = os.environ['API_KEY']\nAPI_SECRET = os.environ.get('API_SECRET')\nDEBUG = os.getenv('DEBUG', 'False')\nPORT = os.environ.get('PORT', '8000')\n```\n\nEnv Scanner generates this `.env-example` file:\n\n```bash\n# Environment Variables Configuration\n# This file was automatically generated by env-scanner\n# Generated on: 2025-10-01 12:00:00\n#\n# Copy this file to .env and fill in the actual values\n# DO NOT commit .env file to version control\n\n# API Configuration\n#==================================================\n\n# API key for external service\nAPI_KEY=your_secret_key_here\n\n# API secret for external service\nAPI_SECRET=your_secret_key_here\n\n# DATABASE Configuration\n#==================================================\n\n# Database configuration\nDATABASE_NAME=your_database_name\n\n# Database configuration\nDATABASE_URL=https://example.com\n\n# Other Configuration\n#==================================================\n\n# Debug mode (true/false)\nDEBUG=false\n\n# Port number\nPORT=8000\n```\n\n## Configuration\n\n### Excluding Directories\n\nBy default, these directories are excluded from scanning:\n\n- `venv`, `env`, `.venv`, `.env`\n- `node_modules`\n- `__pycache__`, `.git`\n- `dist`, `build`, `*.egg-info`\n- `.tox`, `.pytest_cache`, `.mypy_cache`\n\nAdd custom exclusions:\n\n```python\nscanner = EnvScanner(\n project_path='.',\n exclude_dirs=['custom_dir', 'another_dir']\n)\n```\n\nOr via CLI:\n\n```bash\nenv-scanner scan --exclude venv,build,custom_dir\n```\n\n## Advanced Usage\n\n### Custom Variable Detection\n\nAdd custom regex patterns for variable detection:\n\n```python\nscanner = EnvScanner(\n project_path='.',\n include_patterns=[\n r'config\\.get\\([\"\\']([A-Z_]+)[\"\\']', # Custom config pattern\n ]\n)\n```\n\n### Programmatic Generation\n\n```python\nfrom env_scanner import EnvScanner, EnvExampleGenerator\n\n# Scan project\nscanner = EnvScanner('/path/to/project')\nvariables = scanner.scan_directory()\n\n# Custom generation\ngenerator = EnvExampleGenerator(\n env_vars=variables,\n output_path='custom-env-template.txt',\n add_comments=True,\n group_by_prefix=True\n)\n\n# Get content without saving\ncontent = generator.generate_content()\nprint(content)\n\n# Or save to file\ngenerator.save()\n```\n\n## Development\n\n### Setup Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/env-scanner.git\ncd env-scanner\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\n\n# Install in development mode\npip install -e \".[dev]\"\n```\n\n### Run Tests\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=env_scanner --cov-report=html\n\n# Run specific test file\npytest tests/test_scanner.py\n```\n\n### Code Quality\n\n```bash\n# Format code\nblack env_scanner tests\n\n# Lint code\nflake8 env_scanner tests\n\n# Type checking\nmypy env_scanner\n```\n\n## How It Works\n\n1. **Scanning**: The scanner walks through your Python project files\n2. **Detection**: Uses both AST (Abstract Syntax Tree) parsing and regex to find environment variable access patterns\n3. **Analysis**: Identifies variable names and their usage locations\n4. **Generation**: Creates a `.env-example` file with:\n - Intelligent placeholder values based on variable names\n - Descriptive comments for common patterns\n - Grouped organization by variable prefixes\n - Usage location context\n\n## Use Cases\n\n- \ud83d\ude80 **Project Setup**: Help new developers understand required environment variables\n- \ud83d\udce6 **CI/CD**: Automatically generate environment templates in deployment pipelines\n- \ud83d\udcda **Documentation**: Keep environment variable documentation in sync with code\n- \ud83d\udd12 **Security**: Ensure all required environment variables are documented without exposing secrets\n- \u267b\ufe0f **Refactoring**: Track environment variable usage across large codebases\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- \ud83d\udce7 Email: your.email@example.com\n- \ud83d\udc1b Issues: [GitHub Issues](https://github.com/yourusername/env-scanner/issues)\n- \ud83d\udcac Discussions: [GitHub Discussions](https://github.com/yourusername/env-scanner/discussions)\n\n## Acknowledgments\n\n- Inspired by the need for better environment variable management in Python projects\n- Built with Python's `ast` module for accurate code parsing\n- Thanks to all contributors and users!\n\n---\n\nMade with \u2764\ufe0f by Your Name\n# env_scanner\n# env_scanner\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Automatically scan Python projects for environment variables and generate .env-example files",
"version": "2.3.2",
"project_urls": {
"Bug Tracker": "https://github.com/ammarmunir4567/env_scanner/issues",
"Changelog": "https://github.com/ammarmunir4567/env_scanner/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/ammarmunir4567/env_scanner#readme",
"Homepage": "https://github.com/ammarmunir4567/env_scanner",
"Repository": "https://github.com/ammarmunir4567/env_scanner.git"
},
"split_keywords": [
"python",
" environment",
" env",
" dotenv",
" configuration",
" environment-variables",
" scanner",
" generator"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "93db5ccf62fdf066ca97a183856abf9a567b38dafce6494c15ef9b50d9d15e16",
"md5": "68eb869a9537fcbbb56e1f32844b5194",
"sha256": "467814629911d7a58f5da25c4996d6c17d7c7df2a94c4816114ed7dbb3f95d9a"
},
"downloads": -1,
"filename": "env_scanner-2.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "68eb869a9537fcbbb56e1f32844b5194",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 18332,
"upload_time": "2025-10-08T09:33:18",
"upload_time_iso_8601": "2025-10-08T09:33:18.857469Z",
"url": "https://files.pythonhosted.org/packages/93/db/5ccf62fdf066ca97a183856abf9a567b38dafce6494c15ef9b50d9d15e16/env_scanner-2.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e1312b09255d3968dd859edd81814ed62bad1cb891b27338527c096170146bf7",
"md5": "38f7c0056e1c037f580c816f2cf6fae3",
"sha256": "55e181435f99b18e37b44ba0c0ae5161125ae1caf646eba230ec9138f4b24119"
},
"downloads": -1,
"filename": "env_scanner-2.3.2.tar.gz",
"has_sig": false,
"md5_digest": "38f7c0056e1c037f580c816f2cf6fae3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 40772,
"upload_time": "2025-10-08T09:33:20",
"upload_time_iso_8601": "2025-10-08T09:33:20.580513Z",
"url": "https://files.pythonhosted.org/packages/e1/31/2b09255d3968dd859edd81814ed62bad1cb891b27338527c096170146bf7/env_scanner-2.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-08 09:33:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ammarmunir4567",
"github_project": "env-scanner",
"github_not_found": true,
"lcname": "env-scanner"
}