From 9ec4699d7903679189ae798f0835aaab2496911a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 16:07:16 +0000 Subject: [PATCH] fix: Add numpy dependency and environment validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add numpy>=1.24.0 to requirements.txt - Create setup.py with core dependencies - Add environment validation in init_devika - Update installation documentation - Add tests for numpy validation Fixes #372 Co-Authored-By: Erkin Alp Güney --- docs/Installation/INSTALLATION.md | 32 +++++++++++++++++++++++++++++++ pyproject.toml | 8 ++++++++ requirements.txt | 1 + setup.py | 13 +++++++++++++ src/init.py | 14 +++++++++++++- tests/test_init.py | 25 ++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 docs/Installation/INSTALLATION.md create mode 100644 pyproject.toml create mode 100644 setup.py create mode 100644 tests/test_init.py diff --git a/docs/Installation/INSTALLATION.md b/docs/Installation/INSTALLATION.md new file mode 100644 index 00000000..22139435 --- /dev/null +++ b/docs/Installation/INSTALLATION.md @@ -0,0 +1,32 @@ +# Installation Guide + +## Prerequisites +- Python 3.8 or higher +- pip (Python package installer) + +## Installation Steps + +1. Clone the repository: +```bash +git clone https://github.com/stitionai/devika.git +cd devika +``` + +2. Install dependencies: +```bash +pip install -r requirements.txt +``` + +## Common Issues + +### Missing numpy dependency +If you encounter an error about numpy not being available, install it explicitly: +```bash +pip install numpy>=1.24.0 +``` + +## Troubleshooting +If you encounter any installation issues: +1. Ensure you have Python 3.8 or higher installed +2. Try upgrading pip: `pip install --upgrade pip` +3. Install numpy explicitly if needed: `pip install numpy>=1.24.0` diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..bd883f4e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,8 @@ +[build-system] +requires = ["setuptools>=42.0.0", "wheel"] +build-backend = "setuptools.build_meta" + +[tool.pytest.ini_options] +testpaths = ["tests"] +python_files = ["test_*.py"] +addopts = "-v" diff --git a/requirements.txt b/requirements.txt index 91666960..83a8cae2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +numpy>=1.24.0 flask flask-cors toml diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..513f4a7c --- /dev/null +++ b/setup.py @@ -0,0 +1,13 @@ +from setuptools import setup, find_packages + +setup( + name="devika", + version="0.1.0", + packages=find_packages(), + install_requires=[ + "numpy>=1.24.0", + "requests>=2.25.1", + "pytest>=6.0.0", + ], + python_requires=">=3.8", +) diff --git a/src/init.py b/src/init.py index abb8b95b..16a3ffcc 100644 --- a/src/init.py +++ b/src/init.py @@ -1,4 +1,16 @@ import os +import importlib.util + +# Validate numpy dependency first +try: + import numpy + print(f"numpy version {numpy.__version__} found") +except ImportError: + raise ImportError( + "numpy is required but not installed. Please install it using:\n" + "pip install numpy>=1.24.0" + ) + from src.config import Config from src.logger import Logger @@ -8,7 +20,7 @@ def init_devika(): logger.info("Initializing Devika...") logger.info("checking configurations...") - + config = Config() sqlite_db = config.get_sqlite_db() diff --git a/tests/test_init.py b/tests/test_init.py new file mode 100644 index 00000000..153955c8 --- /dev/null +++ b/tests/test_init.py @@ -0,0 +1,25 @@ +import pytest +from unittest.mock import patch +import numpy + +def test_numpy_import(): + """Test that numpy can be imported and has correct version.""" + assert numpy.__version__ >= "1.24.0" + +def test_init_devika_numpy_validation(): + """Test that init_devika validates numpy dependency.""" + from src.init import init_devika + + # Should not raise any ImportError + init_devika() + +@patch("importlib.import_module") +def test_init_devika_numpy_missing(mock_import): + """Test that init_devika handles missing numpy correctly.""" + mock_import.side_effect = ImportError("No module named numpy") + + with pytest.raises(ImportError) as exc_info: + from src.init import init_devika + init_devika() + + assert "numpy is required but not installed" in str(exc_info.value)