Skip to main content

AI- and NLP-enabled Python framework for programmatic access, analysis, and research on the Constitution of India.

Project description

IndianConstitution (v.1.0.1)

Advanced Python library for accessing and analyzing the Constitution of India with DataFrame support, fuzzy search, export capabilities, and more.

PyPI - Python Version PyPI - License Maintenance PyPI PyPI - Status PyPI - Downloads Total Downloads SemVer Wheel Docs

🚀 Installation

Basic Installation

Using pip (PyPI)

pip install indianconstitution

With Advanced Features

# For DataFrame and visualization support
pip install indianconstitution[advanced]

# For fuzzy search capabilities
pip install indianconstitution[fuzzy]

# For all advanced features
pip install indianconstitution[all]

Note: Optional dependencies can also be installed separately:

# After conda install, add optional features
conda install pandas matplotlib
pip install fuzzywuzzy python-Levenshtein

✨ Features

Core Features

  • ✅ Full access to the Constitution of India data
  • ✅ Retrieval of individual articles and summaries
  • ✅ Keyword-based search for articles
  • ✅ Count of total articles and search by title functionality

Advanced Features

  • 🐼 DataFrame Support: Convert to pandas DataFrame for advanced data manipulation
  • 🔍 Advanced Search: Regex and fuzzy search capabilities
  • 📊 Statistical Analysis: Get insights about the Constitution
  • 📤 Export Functionality: Export to JSON, CSV, Markdown formats
  • 🔗 Relationship Mapping: Find articles that reference each other
  • 📈 Visualization: Word frequency charts and data visualization
  • 🔄 Method Chaining: Fluent API design for complex operations
  • 💻 CLI Tool: Command-line interface for quick access
  • Performance: Caching and optimized data structures
  • 🎯 Dictionary-like Access: Access articles like constitution[14]

📖 Usage

Basic Usage

from indianconstitution import IndianConstitution

# Initialize
india = IndianConstitution()

# Access the Preamble
print(india.preamble())

# Get a specific article
print(india.get_article(14))

# Search for articles
print(india.search_keyword('equality'))

# Count articles
print(f"Total articles: {india.count_articles()}")

Advanced Usage

DataFrame Support (pandas-like interface)

import pandas as pd
from indianconstitution import IndianConstitution

india = IndianConstitution()

# Convert to DataFrame
df = india.to_dataframe()

# Use pandas operations
print(df.head())
print(df.describe())

# Filter articles
fundamental_rights = df[df['title'].str.contains('Fundamental', case=False)]
print(fundamental_rights[['article', 'title', 'word_count']])

# Sort by word count
longest_articles = df.nlargest(10, 'word_count')
print(longest_articles[['article', 'title', 'word_count']])

Advanced Search

# Regex search
results = india.search_regex(r'\b(equality|liberty|fraternity)\b', case_sensitive=False)
for article in results:
    print(f"Article {article['article']}: {article['title']}")

# Fuzzy search (handles typos and partial matches)
results = india.fuzzy_search('fundamental rights', threshold=70, limit=10)
for article in results:
    print(f"Article {article['article']}: {article['title']}")

Export Functionality

# Export to JSON
india.export_json('constitution.json')

# Export to CSV (requires pandas)
india.export_csv('constitution.csv')

# Export to Markdown
india.export_markdown('constitution.md')

Statistical Analysis

# Get comprehensive statistics
stats = india.get_statistics()
print(f"Total Articles: {stats['total_articles']}")
print(f"Total Words: {stats['total_words']:,}")
print(f"Average Words per Article: {stats['average_words_per_article']}")
print(f"Longest Article: {stats['longest_article']['title']}")

💻 Command-Line Interface (CLI)

The library includes a CLI tool for quick access:

# Get a specific article
indianconstitution get 14

# Search for articles
indianconstitution search equality

# Fuzzy search
indianconstitution search --fuzzy "fundamental rights"

# Export to JSON
indianconstitution export json constitution.json

# Show statistics
indianconstitution stats

# Display the Preamble
indianconstitution preamble

🔧 Requirements

Core Requirements

  • Python 3.7+

Optional Dependencies

  • pandas>=1.3.0 - For DataFrame support and CSV export
  • matplotlib>=3.3.0 - For visualization features
  • fuzzywuzzy>=0.18.0 - For fuzzy search
  • python-Levenshtein>=0.12.0 - For faster fuzzy search

Install all optional dependencies:

pip install indianconstitution[all]

📄 License

This project is licensed under the Apache License 2.0. See the LICENSE file for more details.


📧 Contact

Author: Vikhram S
Email: vikhrams@saveetha.ac.in
GitHub: https://github.com/Vikhram-S/IndianConstitution


🙏 Acknowledgments

The Constitution data is compiled from publicly available resources, ensuring authenticity and accuracy.


Copyright

© 2026 Vikhram S. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

indianconstitution-1.0.1.tar.gz (224.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

indianconstitution-1.0.1-py3-none-any.whl (225.8 kB view details)

Uploaded Python 3

File details

Details for the file indianconstitution-1.0.1.tar.gz.

File metadata

  • Download URL: indianconstitution-1.0.1.tar.gz
  • Upload date:
  • Size: 224.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for indianconstitution-1.0.1.tar.gz
Algorithm Hash digest
SHA256 bd6315913844c34b0c37f3e7fba70751d7629aa109e3f938739c35d7a669e49c
MD5 535c2448a0ef51722e08c5d039102762
BLAKE2b-256 e935a674f53e20029040b57d4137562dafc73a781f6dca76f9b1e868db520b4f

See more details on using hashes here.

File details

Details for the file indianconstitution-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for indianconstitution-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9f40219cf034677c2a544ae80f6c5fdf26815f4aab3cc77d5060b1bce663edbc
MD5 cef88ddac355757c33ed0a06b1f57b48
BLAKE2b-256 fbc9170219241a07dedfdbac101fc459721810268f67151caf3a06348203ad9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page