# BrowseVersa
[](https://badge.fury.io/py/browseversa)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/pandiyarajk/browseversa)
A comprehensive Python package to programmatically detect web browser versions on Windows systems. This tool provides native Windows detection without requiring Selenium or WebDrivers, making it perfect for automation scripts, system administration, and CI/CD pipelines on Windows environments.
## Features
- 🔍 **Multi-Browser Support**: Detect Chrome, Firefox, Edge, and Internet Explorer versions
- 🖥️ **Windows Optimized**: Specifically designed for Windows systems
- 🏢 **Enterprise Ready**: Enhanced support for Windows Server 2019/2022 and enterprise deployments
- 🛠️ **Multiple Detection Methods**: Registry queries, executable commands, and folder-based detection
- 📝 **Robust Error Handling**: Comprehensive fallback mechanisms and logging
- 🚀 **Zero Dependencies**: Uses only Python standard library
- 💻 **CLI Interface**: Command-line tool for automation and scripting
- 📦 **Easy Integration**: Simple API for use in Python applications
## Supported Browsers
| Browser | Windows | Notes |
|---------|---------|-------|
| Google Chrome | ✅ | Includes Chromium |
| Mozilla Firefox | ✅ | Includes Firefox ESR |
| Microsoft Edge | ✅ | Includes Beta/Dev/Enterprise |
| Internet Explorer | ✅ | Windows only, deprecated |
## Supported Platforms
- **Windows**: 7, 8, 10, 11, Server 2019/2022
**Note**: This package is designed specifically for Windows systems and will not work on macOS or Linux.
## Installation
### From PyPI (Recommended)
```bash
pip install browseversa
```
### From Source
```bash
git clone https://github.com/pandiyarajk/browseversa.git
cd browseversa
pip install -e .
```
## Quick Start
### Command Line Usage
```bash
# Detect all browsers
browseversa
# Detect specific browser
browseversa --browser chrome
# Get version only (for scripting)
browseversa --browser firefox --version-only
# Check script version
browseversa --script-version
# Enable verbose logging
browseversa --browser all --verbose
```
### Python API Usage
```python
from browseversa import BrowserVersionDetector
# Create detector instance
detector = BrowserVersionDetector()
# Detect specific browser
chrome_version = detector.detect_chrome_version()
print(f"Chrome version: {chrome_version}")
# Detect all browsers
all_browsers = detector.detect_all_browsers()
for browser, info in all_browsers.items():
if browser != 'platform':
status = info['version'] if info['detected'] else 'Not found'
print(f"{browser}: {status}")
```
### Convenience Functions
```python
from browseversa import (
get_chrome_version,
get_firefox_version,
get_edge_version,
get_ie_version,
get_all_browser_versions
)
# Quick version checks
chrome_ver = get_chrome_version()
firefox_ver = get_firefox_version()
edge_ver = get_edge_version()
ie_ver = get_ie_version()
# Get all versions at once
all_versions = get_all_browser_versions()
```
## Output Examples
### Standard Output
```
Browser Version Detection Results:
========================================
✓ Chrome: 120.0.6099.109
✓ Firefox: 120.0
✗ Edge: Not found
✗ Ie: Not found
Platform: win32
```
### Version-Only Output (for scripting)
```
chrome: 120.0.6099.109
firefox: 120.0
edge: Not found
ie: Not found
```
## API Reference
### BrowserVersionDetector Class
The main class for browser version detection.
#### Methods
- `detect_chrome_version()` → `Optional[str]`
- `detect_firefox_version()` → `Optional[str]`
- `detect_edge_version()` → `Optional[str]`
- `detect_ie_version()` → `Optional[str]`
- `detect_all_browsers()` → `Dict[str, Any]`
#### Example
```python
detector = BrowserVersionDetector()
# Individual browser detection
chrome_ver = detector.detect_chrome_version()
if chrome_ver:
print(f"Chrome {chrome_ver} detected")
else:
print("Chrome not found")
# All browsers detection
results = detector.detect_all_browsers()
print(f"Platform: {results['platform']}")
for browser, info in results.items():
if browser != 'platform':
print(f"{browser}: {info['version'] if info['detected'] else 'Not found'}")
```
### Convenience Functions
- `get_chrome_version()` → `Optional[str]`
- `get_firefox_version()` → `Optional[str]`
- `get_edge_version()` → `Optional[str]`
- `get_ie_version()` → `Optional[str]`
- `get_all_browser_versions()` → `Dict[str, Any]`
## Use Cases
### System Administration
```python
# Check browser versions across multiple systems
from browseversa import get_all_browser_versions
def check_system_browsers():
browsers = get_all_browser_versions()
detected = [b for b, info in browsers.items()
if b != 'platform' and info['detected']]
return detected
```
### CI/CD Pipelines
```bash
# Check if required browser is available
if browseversa --browser chrome --version-only | grep -q "Not found"; then
echo "Chrome not found, installing..."
# Install Chrome
fi
```
### Automation Scripts
```python
# Ensure compatible browser versions
from browseversa import get_chrome_version
def check_chrome_compatibility():
version = get_chrome_version()
if not version:
raise RuntimeError("Chrome not installed")
major_version = int(version.split('.')[0])
if major_version < 90:
raise RuntimeError(f"Chrome version {version} is too old. Need 90+")
return version
```
## Development
### Setup Development Environment
```bash
git clone https://github.com/pandiyarajk/browseversa.git
cd browseversa
pip install -e ".[dev]"
```
### Running Tests
```bash
pytest
```
### Code Formatting
```bash
black browseversa.py
flake8 browseversa.py
mypy browseversa.py
```
### Building Package
```bash
python -m build
```
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Author
**Pandiyaraj Karuppasamy** - [pandiyarajk@live.com](mailto:pandiyarajk@live.com)
## Acknowledgments
- Thanks to the Python community for excellent tooling
- Inspired by the need for reliable browser version detection in automation workflows
- Built with enterprise environments in mind
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes.
## Support
- 📧 Email: [pandiyarajk@live.com](mailto:pandiyarajk@live.com)
- 🐛 Issues: [GitHub Issues](https://github.com/pandiyarajk/browseversa/issues)
- 📖 Documentation: [GitHub README](https://github.com/pandiyarajk/browseversa#readme)
---
**Note**: Internet Explorer has been deprecated by Microsoft and may not be available on newer Windows versions. This tool includes IE detection for legacy system support.
Raw data
{
"_id": null,
"home_page": null,
"name": "browseversa",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "Pandiyaraj Karuppasamy <pandiyarajk@live.com>",
"keywords": "browser, version, detection, chrome, firefox, edge, internet-explorer, windows, automation",
"author": null,
"author_email": "Pandiyaraj Karuppasamy <pandiyarajk@live.com>",
"download_url": "https://files.pythonhosted.org/packages/2b/ef/27930fde0d28e21227027c1bb790b5c7c156e9baee3782abcff456276917/browseversa-1.0.0.tar.gz",
"platform": null,
"description": "# BrowseVersa\r\n\r\n[](https://badge.fury.io/py/browseversa)\r\n[](https://www.python.org/downloads/)\r\n[](https://opensource.org/licenses/MIT)\r\n[](https://github.com/pandiyarajk/browseversa)\r\n\r\nA comprehensive Python package to programmatically detect web browser versions on Windows systems. This tool provides native Windows detection without requiring Selenium or WebDrivers, making it perfect for automation scripts, system administration, and CI/CD pipelines on Windows environments.\r\n\r\n## Features\r\n\r\n- \ud83d\udd0d **Multi-Browser Support**: Detect Chrome, Firefox, Edge, and Internet Explorer versions\r\n- \ud83d\udda5\ufe0f **Windows Optimized**: Specifically designed for Windows systems\r\n- \ud83c\udfe2 **Enterprise Ready**: Enhanced support for Windows Server 2019/2022 and enterprise deployments\r\n- \ud83d\udee0\ufe0f **Multiple Detection Methods**: Registry queries, executable commands, and folder-based detection\r\n- \ud83d\udcdd **Robust Error Handling**: Comprehensive fallback mechanisms and logging\r\n- \ud83d\ude80 **Zero Dependencies**: Uses only Python standard library\r\n- \ud83d\udcbb **CLI Interface**: Command-line tool for automation and scripting\r\n- \ud83d\udce6 **Easy Integration**: Simple API for use in Python applications\r\n\r\n## Supported Browsers\r\n\r\n| Browser | Windows | Notes |\r\n|---------|---------|-------|\r\n| Google Chrome | \u2705 | Includes Chromium |\r\n| Mozilla Firefox | \u2705 | Includes Firefox ESR |\r\n| Microsoft Edge | \u2705 | Includes Beta/Dev/Enterprise |\r\n| Internet Explorer | \u2705 | Windows only, deprecated |\r\n\r\n## Supported Platforms\r\n\r\n- **Windows**: 7, 8, 10, 11, Server 2019/2022\r\n\r\n**Note**: This package is designed specifically for Windows systems and will not work on macOS or Linux.\r\n\r\n## Installation\r\n\r\n### From PyPI (Recommended)\r\n\r\n```bash\r\npip install browseversa\r\n```\r\n\r\n### From Source\r\n\r\n```bash\r\ngit clone https://github.com/pandiyarajk/browseversa.git\r\ncd browseversa\r\npip install -e .\r\n```\r\n\r\n## Quick Start\r\n\r\n### Command Line Usage\r\n\r\n```bash\r\n# Detect all browsers\r\nbrowseversa\r\n\r\n# Detect specific browser\r\nbrowseversa --browser chrome\r\n\r\n# Get version only (for scripting)\r\nbrowseversa --browser firefox --version-only\r\n\r\n# Check script version\r\nbrowseversa --script-version\r\n\r\n# Enable verbose logging\r\nbrowseversa --browser all --verbose\r\n```\r\n\r\n### Python API Usage\r\n\r\n```python\r\nfrom browseversa import BrowserVersionDetector\r\n\r\n# Create detector instance\r\ndetector = BrowserVersionDetector()\r\n\r\n# Detect specific browser\r\nchrome_version = detector.detect_chrome_version()\r\nprint(f\"Chrome version: {chrome_version}\")\r\n\r\n# Detect all browsers\r\nall_browsers = detector.detect_all_browsers()\r\nfor browser, info in all_browsers.items():\r\n if browser != 'platform':\r\n status = info['version'] if info['detected'] else 'Not found'\r\n print(f\"{browser}: {status}\")\r\n```\r\n\r\n### Convenience Functions\r\n\r\n```python\r\nfrom browseversa import (\r\n get_chrome_version,\r\n get_firefox_version,\r\n get_edge_version,\r\n get_ie_version,\r\n get_all_browser_versions\r\n)\r\n\r\n# Quick version checks\r\nchrome_ver = get_chrome_version()\r\nfirefox_ver = get_firefox_version()\r\nedge_ver = get_edge_version()\r\nie_ver = get_ie_version()\r\n\r\n# Get all versions at once\r\nall_versions = get_all_browser_versions()\r\n```\r\n\r\n## Output Examples\r\n\r\n### Standard Output\r\n```\r\nBrowser Version Detection Results:\r\n========================================\r\n\u2713 Chrome: 120.0.6099.109\r\n\u2713 Firefox: 120.0\r\n\u2717 Edge: Not found\r\n\u2717 Ie: Not found\r\n\r\nPlatform: win32\r\n```\r\n\r\n### Version-Only Output (for scripting)\r\n```\r\nchrome: 120.0.6099.109\r\nfirefox: 120.0\r\nedge: Not found\r\nie: Not found\r\n```\r\n\r\n## API Reference\r\n\r\n### BrowserVersionDetector Class\r\n\r\nThe main class for browser version detection.\r\n\r\n#### Methods\r\n\r\n- `detect_chrome_version()` \u2192 `Optional[str]`\r\n- `detect_firefox_version()` \u2192 `Optional[str]`\r\n- `detect_edge_version()` \u2192 `Optional[str]`\r\n- `detect_ie_version()` \u2192 `Optional[str]`\r\n- `detect_all_browsers()` \u2192 `Dict[str, Any]`\r\n\r\n#### Example\r\n\r\n```python\r\ndetector = BrowserVersionDetector()\r\n\r\n# Individual browser detection\r\nchrome_ver = detector.detect_chrome_version()\r\nif chrome_ver:\r\n print(f\"Chrome {chrome_ver} detected\")\r\nelse:\r\n print(\"Chrome not found\")\r\n\r\n# All browsers detection\r\nresults = detector.detect_all_browsers()\r\nprint(f\"Platform: {results['platform']}\")\r\nfor browser, info in results.items():\r\n if browser != 'platform':\r\n print(f\"{browser}: {info['version'] if info['detected'] else 'Not found'}\")\r\n```\r\n\r\n### Convenience Functions\r\n\r\n- `get_chrome_version()` \u2192 `Optional[str]`\r\n- `get_firefox_version()` \u2192 `Optional[str]`\r\n- `get_edge_version()` \u2192 `Optional[str]`\r\n- `get_ie_version()` \u2192 `Optional[str]`\r\n- `get_all_browser_versions()` \u2192 `Dict[str, Any]`\r\n\r\n## Use Cases\r\n\r\n### System Administration\r\n```python\r\n# Check browser versions across multiple systems\r\nfrom browseversa import get_all_browser_versions\r\n\r\ndef check_system_browsers():\r\n browsers = get_all_browser_versions()\r\n detected = [b for b, info in browsers.items() \r\n if b != 'platform' and info['detected']]\r\n return detected\r\n```\r\n\r\n### CI/CD Pipelines\r\n```bash\r\n# Check if required browser is available\r\nif browseversa --browser chrome --version-only | grep -q \"Not found\"; then\r\n echo \"Chrome not found, installing...\"\r\n # Install Chrome\r\nfi\r\n```\r\n\r\n### Automation Scripts\r\n```python\r\n# Ensure compatible browser versions\r\nfrom browseversa import get_chrome_version\r\n\r\ndef check_chrome_compatibility():\r\n version = get_chrome_version()\r\n if not version:\r\n raise RuntimeError(\"Chrome not installed\")\r\n \r\n major_version = int(version.split('.')[0])\r\n if major_version < 90:\r\n raise RuntimeError(f\"Chrome version {version} is too old. Need 90+\")\r\n \r\n return version\r\n```\r\n\r\n## Development\r\n\r\n### Setup Development Environment\r\n\r\n```bash\r\ngit clone https://github.com/pandiyarajk/browseversa.git\r\ncd browseversa\r\npip install -e \".[dev]\"\r\n```\r\n\r\n### Running Tests\r\n\r\n```bash\r\npytest\r\n```\r\n\r\n### Code Formatting\r\n\r\n```bash\r\nblack browseversa.py\r\nflake8 browseversa.py\r\nmypy browseversa.py\r\n```\r\n\r\n### Building Package\r\n\r\n```bash\r\npython -m build\r\n```\r\n\r\n## Contributing\r\n\r\n1. Fork the repository\r\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\r\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\r\n4. Push to the branch (`git push origin feature/amazing-feature`)\r\n5. Open a Pull Request\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Author\r\n\r\n**Pandiyaraj Karuppasamy** - [pandiyarajk@live.com](mailto:pandiyarajk@live.com)\r\n\r\n## Acknowledgments\r\n\r\n- Thanks to the Python community for excellent tooling\r\n- Inspired by the need for reliable browser version detection in automation workflows\r\n- Built with enterprise environments in mind\r\n\r\n## Changelog\r\n\r\nSee [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes.\r\n\r\n## Support\r\n\r\n- \ud83d\udce7 Email: [pandiyarajk@live.com](mailto:pandiyarajk@live.com)\r\n- \ud83d\udc1b Issues: [GitHub Issues](https://github.com/pandiyarajk/browseversa/issues)\r\n- \ud83d\udcd6 Documentation: [GitHub README](https://github.com/pandiyarajk/browseversa#readme)\r\n\r\n---\r\n\r\n**Note**: Internet Explorer has been deprecated by Microsoft and may not be available on newer Windows versions. This tool includes IE detection for legacy system support.\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A comprehensive tool to detect web browser versions on Windows systems",
"version": "1.0.0",
"project_urls": {
"Bug Tracker": "https://github.com/pandiyarajk/browseversa/issues",
"Documentation": "https://github.com/pandiyarajk/browseversa#readme",
"Homepage": "https://github.com/pandiyarajk/browseversa",
"Repository": "https://github.com/pandiyarajk/browseversa"
},
"split_keywords": [
"browser",
" version",
" detection",
" chrome",
" firefox",
" edge",
" internet-explorer",
" windows",
" automation"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ea021c26b944e20672668c2bfafa15799fe43ae023c7be61a048de8d08aa93cd",
"md5": "e1706618cbf263613211e33dd0dd2312",
"sha256": "9ef8b16b65c17ed2577981202932bb20aa454701658880d627247bd85019f801"
},
"downloads": -1,
"filename": "browseversa-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e1706618cbf263613211e33dd0dd2312",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 14525,
"upload_time": "2025-08-17T19:16:53",
"upload_time_iso_8601": "2025-08-17T19:16:53.204871Z",
"url": "https://files.pythonhosted.org/packages/ea/02/1c26b944e20672668c2bfafa15799fe43ae023c7be61a048de8d08aa93cd/browseversa-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2bef27930fde0d28e21227027c1bb790b5c7c156e9baee3782abcff456276917",
"md5": "93087a88046f063140ee5d28b158b8c3",
"sha256": "efae476a76be4717076024c678bf156c06f4daba8eb8445055b74220cad7e439"
},
"downloads": -1,
"filename": "browseversa-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "93087a88046f063140ee5d28b158b8c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 17516,
"upload_time": "2025-08-17T19:16:55",
"upload_time_iso_8601": "2025-08-17T19:16:55.559888Z",
"url": "https://files.pythonhosted.org/packages/2b/ef/27930fde0d28e21227027c1bb790b5c7c156e9baee3782abcff456276917/browseversa-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-17 19:16:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pandiyarajk",
"github_project": "browseversa",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "browseversa"
}