============
Installation
============
Overview
========
The Factly project provides command-line utility ``factly`` that provides direct access to the package's functionality without writing Python code.
Requirements
============
Before installing ``factly``, ensure you have the following prerequisites:
* Python 3.12 or higher
* `pip `_ (for PyPI installation)
Python Version Compatibility
----------------------------
``factly`` requires Python 3.12 or higher. This requirement ensures access to the latest language features and optimizations. The project is tested with Python 3.12, and 3.13.
If you're using an older version of Python, you'll need to upgrade before installing ``factly``:
.. code-block:: bash
# Check your current Python version
python --version
.. warning::
**Python Command Differences Across Operating Systems**
The ``python`` and ``pip`` commands may behave differently across operating systems:
* **macOS**: By default, ``python`` often points to Python 2.x. You should use ``python3`` and ``pip3`` commands instead.
* **Linux**: Many distributions now default ``python`` to Python 3.x, but some still maintain ``python`` as Python 2.x. Use ``python3`` and ``pip3`` to ensure you're using the correct version.
* **Windows**: Recent installations typically have ``python`` pointing to Python 3.x, but it's best to verify with ``python --version``.
To ensure you're using the correct Python version, always check:
.. code-block:: bash
# Check Python version
python --version # or python3 --version
# Check pip version
pip --version # or pip3 --version
If ``python`` points to Python 2.x on your system, replace all ``python`` commands in this guide with ``python3`` and all ``pip`` commands with ``pip3``.
**Finding Your Python Installations**
To check where Python is installed and how many Python versions you have on your system:
**On Unix-based systems (Linux, macOS):**
.. code-block:: bash
# Find the location of the python/python3 executable
which python
which python3
# Alternative command to find executable location
command -v python
command -v python3
# List all instances of python in your PATH
type -a python
type -a python3
# Check if you have multiple Python installations
ls -l /usr/bin/python*
ls -l /usr/local/bin/python*
**On Windows:**
.. code-block:: bash
# Find the location of Python executable
where python
where python3
# Check Python version and installation path
py -0
Installation Methods
====================
There are several ways to install ``factly`` depending on your needs:
Installing from PyPI (Recommended)
----------------------------------
``factly`` is a Python package `hosted on PyPI `_.
The recommended installation method is using `pip `_ to install into a virtual environment:
.. code-block:: bash
# Create and activate a virtual environment (recommended)
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install factly-eval
python -m pip install factly-eval
# Alternative commands if python points to Python 2.x on your system
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
python3 -m pip install factly-eval
# or
pip3 install factly-eval
After installation, the ``factly`` command will be available from the command line:
.. code-block:: bash
# Verify installation
factly --version
More information about ``pip`` and PyPI can be found here:
* `Install pip `_
* `Python Packaging User Guide `_
Installing from GitHub Releases
-------------------------------
Another way to install package is to download it from GitHub Releases page:
1. Visit the `GitHub Releases page `_
2. Download the desired release artifacts (both ``.whl`` and/or ``.tar.gz`` files)
3. Download the corresponding checksum files (``SHA256SUMS``, ``SHA512SUMS``, or ``MD5SUMS``)
4. Verify the integrity of the downloaded files:
.. code-block:: bash
# Verify with SHA256 (recommended)
sha256sum -c SHA256SUMS
5. Install the verified package:
.. code-block:: bash
# Create a directory for the download
mkdir factly-download && cd factly-download
# Download the latest release artifacts and checksums (replace X.Y.Z with the actual version)
# You can use wget or curl
wget https://github.com/sergeyklay/factly/releases/download/X.Y.Z/factly-eval-X.Y.Z-py3-none-any.whl
wget https://github.com/sergeyklay/factly/releases/download/X.Y.Z/factly-eval-X.Y.Z.tar.gz
wget https://github.com/sergeyklay/factly/releases/download/X.Y.Z/SHA256SUMS
# Verify the integrity of the downloaded files
sha256sum -c SHA256SUMS
# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install the verified package (choose one)
pip install factly-eval-X.Y.Z-py3-none-any.whl # Wheel file (recommended)
# OR
pip install factly-eval-X.Y.Z.tar.gz # Source distribution
# If python points to Python 2.x on your system
pip3 install factly-eval-X.Y.Z-py3-none-any.whl
# Or
pip3 install factly-eval-X.Y.Z.tar.gz
# Verify the installation
factly --version
Installing the Development Version
----------------------------------
If you need the latest unreleased features, you can install directly from the GitHub repository:
.. code-block:: bash
# Install the latest development version
python -m pip install -e git+https://github.com/sergeyklay/factly.git#egg=factly-eval
# If python points to Python 2.x on your system
python3 -m pip install -e git+https://github.com/sergeyklay/factly.git#egg=factly-eval
.. note::
The ``main`` branch will always contain the latest unstable version, so the experience
might not be as smooth. If you wish to use a stable version, consider installing from PyPI
or switching to a specific `tag `_.
Installing for Development
--------------------------
If you plan to contribute to the project or need to modify the code, follow these steps:
1. Clone the repository:
.. code-block:: bash
git clone https://github.com/sergeyklay/factly.git
cd factly
2. Create and activate a virtual environment:
.. code-block:: bash
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# If python points to Python 2.x on your system
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
3. Install with uv:
.. code-block:: bash
# Set up environment configuration
cp .env.example .env
# Edit .env with your API keys and configuration
# Install uv if you haven't already
# See https://github.com/astral-sh/uv
# Install dependencies
uv sync --locked
4. Verifying Installation:
.. code-block:: bash
factly --version
# Or using the Python module:
python -m factly --version
# If python points to Python 2.x on your system
python3 -m factly --version
You should see the version information and a brief copyright notice.
Dependencies
============
Core Dependencies
-----------------
These dependencies are installed by default and are required for the basic functionality:
* ``click``: Command-line interface framework
* ``datasets``: Dataset loading and manipulation (from Hugging Face)
* ``deepeval``: Framework for evaluating LLM factuality
* ``matplotlib``: Data visualization and plotting library
* ``pandas``: Data manipulation and analysis
* ``psutil``: Process and system utilities for resource monitoring
* ``python-dotenv``: Environment variable management
* ``pyyaml``: YAML file parsing and generation
* ``transformers``: Hugging Face's transformers library for NLP models
Optional Dependency Groups
--------------------------
Factly organizes dependencies into groups that can be installed separately:
Development Dependencies
^^^^^^^^^^^^^^^^^^^^^^^^
Tools for development and code quality:
* ``ruff``: Fast Python linter and code formatter
Testing Dependencies
^^^^^^^^^^^^^^^^^^^^
Tools for testing the codebase:
* ``coverage``: Code coverage tool and reporting
* ``pytest``: Testing framework
* ``pytest-mock``: Mocking support for pytest
* ``pytest-asyncio``: Async testing support for pytest
Documentation Dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^^
Tools for building documentation:
* ``sphinx``: Documentation generator
* ``sphinx-rtd-theme``: Read the Docs theme for Sphinx
Installing Specific Dependency Groups
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can install specific dependency groups:
.. code-block:: bash
# Install only development tools
uv sync --locked --no-default-groups --group dev
# Install only testing tools
uv sync --locked --no-default-groups --group testing
# Install only documentation tools
uv sync --locked --no-default-groups --group docs
# Install development and testing but not documentation
uv sync --locked --no-default-groups --group dev --group testing
Adding Dependencies
-------------------
To add a new dependency:
.. code-block:: bash
# Add a core dependency
uv add
# Add a development dependency
uv add --group dev
# Add a testing dependency
uv add --group testing
# Add a documentation dependency
uv add --group docs
Troubleshooting
===============
Common Issues
-------------
If you encounter any issues during installation:
1. Ensure you have the correct Python version (3.12+)
2. Make sure you're using the latest version of uv
3. Check for any error messages during the installation process