Home Projects Pyjiit Getting Started Installation

Installation

This page explains how to install pyjiit on your system, including system requirements, installation methods, and dependency management. For information about using pyjiit after installation, see Quick Start Guide. For details about the build system and contributing, see Build System and Dependencies.


System Requirements

Python Version

pyjiit requires Python 3.9 or higher. This requirement is specified in pyproject.toml8 and enforced during installation.

Requirement Version Source
Python ≥ 3.9 pyproject.toml8

Operating System

pyjiit is platform-independent and runs on:

  • Linux (all distributions)
  • macOS (10.9+)
  • Windows (32-bit and 64-bit)

The underlying dependencies (requests, pycryptodome) provide pre-built wheels for all major platforms, as evidenced by the multiple platform-specific builds in poetry.lock1-714

Sources: pyproject.toml8 poetry.lock1-714


Installation via pip

Standard Installation

The recommended installation method for end users is via pip from PyPI:

pip install pyjiit

This installs the latest stable release with all required runtime dependencies. The package is published to PyPI as pyjiit (see pyproject.toml2).

Installing a Specific Version

To install a specific version (e.g., the current version 0.1.0a8):

pip install pyjiit==0.1.0a8

The version identifier is defined in pyproject.toml3

Upgrade Existing Installation

To upgrade to the latest version:

pip install --upgrade pyjiit

Sources: pyproject.toml2-3 README.rst1-5


Installation via Poetry (Development)

Prerequisites

Install Poetry if you haven't already:

pip install poetry

Clone and Install

For development or contributing to pyjiit:

# Clone the repository
git clone https://github.com/codelif/pyjiit
cd pyjiit

# Install dependencies
poetry install

This creates a virtual environment and installs all dependencies locked in poetry.lock1-714

Install with Documentation Dependencies

To build documentation locally, include the docs dependency group:

poetry install --with docs

This installs additional packages like Sphinx and Furo defined in pyproject.toml19-21

Sources: pyproject.toml19-21 poetry.lock1-714


Dependency Overview

Dependency Tree Structure

Architecture Diagram

Sources: pyproject.toml9-12 pyproject.toml19-21 poetry.lock416-435

Runtime Dependencies

These are installed automatically with pyjiit:

Package Version Constraint Purpose
requests ≥2.32.3, <3.0.0 HTTP client for API communication
pycryptodome ≥3.22.0, <4.0.0 AES encryption for payload serialization

The version constraints are specified in pyproject.toml9-12

Why pycryptodome (Not pycrypto)

The dependency explicitly uses pycryptodome rather than the older pycrypto. The pycryptodome package is a maintained fork that provides:

  • Active security updates
  • Python 3.9+ compatibility
  • Pre-built wheels for all platforms

As noted in README.rst34 this is an "explicit" choice "for very interesting reasons" — likely referring to the fact that the original pycrypto is unmaintained and has known security vulnerabilities.

Sources: pyproject.toml9-12 README.rst30-37

Transitive Dependencies

The requests library brings in several transitive dependencies (automatically installed):

Package Version Purpose
certifi ≥2024.8.30 Mozilla CA bundle for SSL/TLS
charset-normalizer ≥3.3.2 Character encoding detection
idna ≥3.10 Internationalized domain names
urllib3 ≥2.2.3 HTTP connection pooling

These are documented in poetry.lock416-435 and poetry.lock54-163

Sources: poetry.lock54-163 poetry.lock416-435

Documentation Dependencies (Optional)

These are only needed for building documentation and are not installed by default:

Package Version Purpose
sphinx ≥7.4.7 Documentation generator
furo ^2024.8.6 Modern Sphinx theme

Defined in the docs dependency group at pyproject.toml19-21

Sources: pyproject.toml19-21 poetry.lock462-496


Dependency Installation Flow

pip Installation Process

Sources: pyproject.toml9-12

Poetry Installation Process

Architecture Diagram

Sources: poetry.lock1-714 pyproject.toml19-21


Platform-Specific Wheels

The pycryptodome and requests dependencies provide pre-compiled wheels for multiple platforms, ensuring fast installation without requiring C compilers:

pycryptodome Platform Coverage

Architecture Diagram

The wheel files are enumerated in poetry.lock362-398 covering all major platforms and architectures.

Sources: poetry.lock362-398


Verifying Installation

Check Installed Version

After installation, verify that pyjiit is correctly installed:


python -c "import pyjiit; print(pyjiit.__version__)"

This should print the installed version (e.g., 0.1.0a8).

Check Dependencies

Verify that required dependencies are available:

python -c "import requests; import Crypto; print('Dependencies OK')"

Note: pycryptodome is imported as Crypto (the namespace it provides).

List All Dependencies

To see all installed packages related to pyjiit:

pip show pyjiit

Or with Poetry:

poetry show --tree

Sources: pyproject.toml2-3


Dependency Locking

Understanding poetry.lock

The poetry.lock1-714 file locks all dependencies to exact versions with SHA256 hashes. This ensures:

  1. Reproducible Builds: Same dependencies across all installations
  2. Security: Hashes verify package integrity
  3. Stability: No unexpected version updates

Example lock entry structure from poetry.lock362-398:

[[package]]
name = "pycryptodome"
version = "3.22.0"
description = "Cryptographic library for Python"
files = [
    {file = "pycryptodome-3.22.0-...", hash = "sha256:..."},
    ...
]

Lock File Maintenance

The lock file is automatically generated by Poetry and should be committed to version control. It is regenerated when:

  • Dependencies are added/removed in pyproject.toml
  • poetry update is run

Sources: poetry.lock1-714 poetry.lock710-713


Build System Configuration

The package uses Poetry as its build backend, configured in pyproject.toml23-25:

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

This configuration:

  • Uses poetry-core (lightweight build backend)
  • Implements PEP 517 build standards
  • Enables pip install from source

When you run pip install pyjiit, pip automatically uses this build backend if installing from source rather than a wheel.

Sources: pyproject.toml23-25


Package Metadata

The package metadata defined in pyproject.toml1-17 includes:

Field Value
Name pyjiit
Version 0.1.0a8
Description Python wrapper for JIIT webportal
License MIT License
Author Harsh Sharma (harsh@codelif.in)
Python Requirement ≥3.9
Homepage https://github.com/codelif/pyjiit
Issues https://github.com/codelif/pyjiit/issues

This metadata is used by:

  • PyPI for package listing
  • pip show pyjiit command
  • Documentation generators

Sources: pyproject.toml1-17


Troubleshooting Installation

Common Issues

Issue: "Could not find a version that satisfies the requirement"

Ensure you're using Python 3.9 or higher:

python --version

Issue: "No module named 'Crypto'"

The pycryptodome package wasn't installed correctly. Reinstall:

pip uninstall pycryptodome pycrypto
pip install pycryptodome

Issue: Poetry installation hangs

Clear Poetry cache and retry:

poetry cache clear pypi --all
poetry install

Platform-Specific Notes

Windows: Some older Python installations may require Visual C++ Build Tools if wheels aren't available. However, pycryptodome provides pre-built wheels for Windows at poetry.lock383-384

macOS: Universal2 wheels (supporting both Intel and Apple Silicon) are available at poetry.lock375-376

Linux (musl): For Alpine Linux and other musl-based distributions, dedicated wheels are available at poetry.lock380-382

Sources: poetry.lock375-398


Next Steps

After successful installation:

  1. Quick Start: See Quick Start Guide for your first API calls
  2. Authentication: Learn about the login flow in Authentication Flow
  3. API Reference: Explore available methods in Webportal Class

For development setup and testing, see Testing and Development Workflow.

Sources: README.rst1-47 pyproject.toml1-28