LangChain toolkit for Saudi Arabian government and public APIs
Project description
๐ธ๐ฆ langchain-saudi-gov
The first LangChain toolkit for Saudi Arabian government APIs
Give your AI agents native access to 27 Saudi government services across 7 domains
Overview
langchain-saudi-gov is a production-ready LangChain partner package that wraps 27 Saudi Arabian government and public service APIs into LangChain-compatible tools. It enables AI agents to query national addresses, verify commercial registrations, search open data portals, check prayer times, and much more โ all with native Arabic/English bilingual support.
Why this toolkit?
- ๐๏ธ 27 tools across 7 government domains โ the most comprehensive Saudi API toolkit available
- ๐ 16 tools work with zero configuration โ no API keys required for open data portals
- ๐ Bilingual Arabic/English โ auto-detects query language, returns bilingual results
- ๐ค LangChain-native โ every tool is a
BaseToolsubclass, ready for agents and chains - โก Async-first โ all tools support both sync and async execution
- ๐งช Fully tested โ 116 unit tests with mocked HTTP, zero network dependency
๐ฆ Installation
pip install langchain-saudi-gov
Or with development dependencies:
pip install "langchain-saudi-gov[dev]"
๐ Quick Start
Zero-config โ no API keys needed
from langchain_saudi_gov import SaudiGovToolkit
# 16 tools work out of the box with no API keys
toolkit = SaudiGovToolkit()
tools = toolkit.get_tools()
print(f"{len(tools)} tools ready!") # 16 tools ready!
Use with a LangChain agent
from langchain_saudi_gov import SaudiGovToolkit
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
toolkit = SaudiGovToolkit(
national_address_key="your-key", # Free from api.address.gov.sa
wathq_key="your-wathq-key", # From developer.wathq.sa
najiz_key="your-najiz-key", # From developers.najiz.sa
)
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=toolkit.get_tools(), # All 27 tools
)
# Ask in Arabic
result = agent.invoke({
"messages": [{"role": "user", "content": "ุงุจุญุซ ุนู ุนููุงู ู
ุทุงุฑ ุงูู
ูู ุนุจุฏุงูุนุฒูุฒ ูู ุฌุฏุฉ"}]
})
# Ask in English
result = agent.invoke({
"messages": [{"role": "user", "content": "Look up commercial registration 1010123456"}]
})
Use individual tools directly
from langchain_saudi_gov.tools.cultural import PrayerTimesTool, HijriDateTool
from langchain_saudi_gov.tools.statistics import KAPSARCEnergyTool
# Prayer times โ no API key
prayer = PrayerTimesTool()
print(prayer.invoke({"city": "Riyadh"}))
# Prayer times for Riyadh โ 15 Jul 2025 (18 Muharram 1447)
# Fajr: 03:35
# Dhuhr: 12:10
# Asr: 15:33
# Maghrib: 18:54
# Isha: 20:24
# Hijri conversion
hijri = HijriDateTool()
print(hijri.invoke({"date": "01-01-2025", "to_hijri": True}))
# Energy data
energy = KAPSARCEnergyTool()
print(energy.invoke({"query": "Saudi oil production 2024"}))
Domain filtering
# Only load finance and statistics tools
toolkit = SaudiGovToolkit(domains=["finance", "statistics"])
tools = toolkit.get_tools() # 7 tools from those domains only
# Disable cultural tools
toolkit = SaudiGovToolkit(include_cultural=False)
๐ ๏ธ Complete Tool Reference
๐ Location Domain (3 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
NationalAddressSearchTool |
api.address.gov.sa | ๐ Free key | Free-text address search with auto Arabic/English detection |
NationalAddressReverseGeocodeTool |
api.address.gov.sa | ๐ Free key | GPS coordinates โ structured national address |
BaladyMunicipalTool |
data.gov.sa | โ None | Search municipal services & urban planning data |
๐ Location examples
from langchain_saudi_gov.tools.location import (
NationalAddressSearchTool,
NationalAddressReverseGeocodeTool,
BaladyMunicipalTool,
)
# Search by text (Arabic auto-detected)
address = NationalAddressSearchTool(api_key="your-key")
result = address.invoke({"query": "ู
ุทุงุฑ ุงูู
ูู ุนุจุฏุงูุนุฒูุฒ ุฌุฏุฉ"})
# Returns: building number, street, district, city, postcode, GPS
# Reverse geocode
reverse = NationalAddressReverseGeocodeTool(api_key="your-key")
result = reverse.invoke({"lat": 24.7136, "lng": 46.6753})
# Municipal data
balady = BaladyMunicipalTool()
result = balady.invoke({"query": "building permits Riyadh"})
Use cases:
- ๐ข Address validation for e-commerce checkout
- ๐ Fleet management and delivery routing
- ๐๏ธ Urban planning data analysis
- ๐ GPS-to-address conversion for mobile apps
๐ข Business Domain โ Wathq (8 tools)
| Tool | Endpoint | Description |
|---|---|---|
CommercialRegistrationTool |
/v5/commercialregistration/info/{cr} |
CR lookup: trade name, status, capital, owners, activities |
CommercialContractTool |
/v5/commercialregistration/contracts/{cr} |
Verify and retrieve commercial contracts |
RealEstateDeedTool |
/v5/realestate/deed/{deed} |
Real estate deed verification |
TrademarkLookupTool |
/v5/trademark/search |
Search Saudi trademark registry |
CorporateIdentityTool |
/v5/corporate/identity/{cr} |
Verify company corporate identity |
FinancialStatementsTool |
/v5/commercialregistration/financial/{cr} |
Access company financial statements |
EmployeeInfoTool |
/v5/commercialregistration/employees/{cr} |
Employee count and GOSI registration info |
ChamberVerificationTool |
/v5/chamber/verify/{membership} |
Verify Chamber of Commerce membership |
All 8 tools require a Wathq API key from developer.wathq.sa. They share the
WathqBaseToolbase class with unified auth, error handling, and rate-limit management.
๐ข Business examples
from langchain_saudi_gov.tools.business import (
CommercialRegistrationTool,
TrademarkLookupTool,
EmployeeInfoTool,
)
# Look up any Saudi company by CR number
cr = CommercialRegistrationTool(api_key="your-wathq-key")
result = cr.invoke({"cr_number": "1010123456"})
# Returns: Trade name, Status, Capital (SAR), Issue/Expiry dates, City, Activities
# Search trademarks
tm = TrademarkLookupTool(api_key="your-wathq-key")
result = tm.invoke({"query": "ุดุฑูุฉ ุงูุฑุงุฌุญู", "search_type": "name"})
# Check employee info
emp = EmployeeInfoTool(api_key="your-wathq-key")
result = emp.invoke({"cr_number": "1010123456"})
Use cases:
- ๐ Due diligence automation for investment firms
- ๐ KYC/AML compliance checks
- ๐ Competitive intelligence gathering
- ๐ญ Supply chain vendor verification
โ๏ธ Legal Domain (2 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
NajizVerificationTool |
developers.najiz.sa | ๐ API key | Verify deeds, POA, marriage contracts, judicial licenses |
MoJOpenDataTool |
data.gov.sa | โ None | Search Ministry of Justice open datasets |
โ๏ธ Legal examples
from langchain_saudi_gov.tools.legal import NajizVerificationTool, MoJOpenDataTool
# Verify a real estate deed
najiz = NajizVerificationTool(api_key="your-najiz-key")
result = najiz.invoke({
"document_number": "310100012345",
"document_type": "deed",
})
# Verify a power of attorney
result = najiz.invoke({
"document_number": "440100067890",
"document_type": "power_of_attorney",
"identity_number": "1012345678",
})
# Search judicial open data
moj = MoJOpenDataTool()
result = moj.invoke({"query": "court statistics 2024"})
Use cases:
- ๐ Real estate transaction verification
- ๐ Legal document authentication
- โ๏ธ Judicial statistics analysis
- ๐ค Power of attorney validation
๐ฐ Finance Domain (3 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
ZATCAOpenDataTool |
data.zatca.gov.sa | โ None | Tax, customs, and Zakat datasets |
CMAFinancialDataTool |
opendata.cma.org.sa | โ None | Capital Market Authority financial data |
EtimadProcurementTool |
data.gov.sa | โ None | Government procurement and tender data |
๐ฐ Finance examples
from langchain_saudi_gov.tools.finance import (
ZATCAOpenDataTool,
CMAFinancialDataTool,
EtimadProcurementTool,
)
# Search ZATCA tax data
zatca = ZATCAOpenDataTool()
result = zatca.invoke({"query": "VAT collections 2024"})
# Capital markets data
cma = CMAFinancialDataTool()
result = cma.invoke({"query": "Tadawul listed companies"})
# Government procurement
etimad = EtimadProcurementTool()
result = etimad.invoke({"query": "IT infrastructure tenders"})
Use cases:
- ๐ต Tax compliance research
- ๐ Stock market data analysis
- ๐ฆ Government spending analysis
- ๐ Tender monitoring for businesses
๐ Statistics Domain (4 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
GASTATTool |
data.gov.sa | โ None | General Authority for Statistics datasets |
KAPSARCEnergyTool |
datasource.kapsarc.org | โ None | Oil, energy, renewables, OPEC data |
SaudiOpenDataSearchTool |
data.gov.sa | โ None | Search 11,000+ government open datasets |
HRSDLabourTool |
data.gov.sa | โ None | Labour market and social development data |
๐ Statistics examples
from langchain_saudi_gov.tools.statistics import (
GASTATTool,
KAPSARCEnergyTool,
SaudiOpenDataSearchTool,
HRSDLabourTool,
)
# Population and economic statistics
gastat = GASTATTool()
result = gastat.invoke({"query": "population census 2024"})
# Energy and oil data
kapsarc = KAPSARCEnergyTool()
result = kapsarc.invoke({"query": "Saudi oil production OPEC"})
# Search all government datasets
opendata = SaudiOpenDataSearchTool()
result = opendata.invoke({"query": "education enrollment", "organization": "ministry-of-education"})
# Labour market
hrsd = HRSDLabourTool()
result = hrsd.invoke({"query": "Saudization employment rates"})
Use cases:
- ๐ Economic research and analysis
- โฝ Oil & gas market intelligence
- ๐ Academic research on Saudi demographics
- ๐ฅ Labour market insights for HR
๐ญ Sector Domain (5 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
HealthDataTool |
data.gov.sa | โ None | Ministry of Health datasets |
TelecomDataTool |
data.gov.sa | โ None | CITC telecommunications data |
AgricultureDataTool |
data.gov.sa | โ None | Agriculture and water resources data |
IndustrialDataTool |
data.gov.sa | โ None | NIIC industrial development data |
MonshaatSMETool |
data.gov.sa | โ None | SME and entrepreneurship data |
๐ญ Sector examples
from langchain_saudi_gov.tools.sector import (
HealthDataTool,
TelecomDataTool,
AgricultureDataTool,
IndustrialDataTool,
MonshaatSMETool,
)
# Healthcare data
health = HealthDataTool()
result = health.invoke({"query": "hospital bed capacity"})
# Telecommunications
telecom = TelecomDataTool()
result = telecom.invoke({"query": "5G coverage statistics"})
# Agriculture
agri = AgricultureDataTool()
result = agri.invoke({"query": "water consumption agriculture"})
# Industrial data
industrial = IndustrialDataTool()
result = industrial.invoke({"query": "manufacturing output"})
# SME ecosystem
monshaat = MonshaatSMETool()
result = monshaat.invoke({"query": "startup funding statistics"})
Use cases:
- ๐ฅ Healthcare analytics and planning
- ๐ฑ Telecom market research
- ๐พ Agricultural resource planning
- ๐ญ Industrial development tracking
- ๐ Startup ecosystem analysis
๐ Cultural Domain (2 tools)
| Tool | API Source | Auth | Description |
|---|---|---|---|
PrayerTimesTool |
api.aladhan.com | โ None | Prayer times using Umm al-Qura method (official Saudi standard) |
HijriDateTool |
api.aladhan.com | โ None | Gregorian โ Hijri calendar conversion |
๐ Cultural examples
from langchain_saudi_gov.tools.cultural import PrayerTimesTool, HijriDateTool
# Prayer times for any Saudi city
prayer = PrayerTimesTool()
result = prayer.invoke({"city": "Makkah"})
# Prayer times for Makkah โ 15 Jul 2025 (18 Muharram 1447)
# Fajr: 04:28 Dhuhr: 12:27
# Asr: 15:48 Maghrib: 19:15
# Isha: 20:45
# With specific date
result = prayer.invoke({"city": "Medina", "date": "01-01-2025"})
# Gregorian โ Hijri
hijri = HijriDateTool()
result = hijri.invoke({"date": "25-12-2024", "to_hijri": True})
# Hijri โ Gregorian
result = hijri.invoke({"date": "01-07-1446", "to_hijri": False})
Use cases:
- ๐ Prayer time reminders and scheduling
- ๐ Hijri calendar integration for apps
- ๐ข Business scheduling around prayer times
- ๐ฐ Date conversion for document processing
๐๏ธ Architecture
langchain-saudi-gov/
โโโ langchain_saudi_gov/
โ โโโ __init__.py # Exports all 27 tools + SaudiGovToolkit
โ โโโ toolkit.py # Unified toolkit with domain filtering
โ โโโ tools/
โ โ โโโ _base.py # WathqBaseTool & CKANBaseTool base classes
โ โ โโโ location/ # Address search, reverse geocode, Balady
โ โ โโโ business/ # 8 Wathq tools (CR, contracts, deeds, etc.)
โ โ โโโ legal/ # Najiz verification, MoJ open data
โ โ โโโ finance/ # ZATCA, CMA, Etimad
โ โ โโโ statistics/ # GASTAT, KAPSARC, Open Data, HRSD
โ โ โโโ sector/ # Health, Telecom, Agriculture, Industrial, SME
โ โ โโโ cultural/ # Prayer times, Hijri dates
โ โโโ utils/
โ โโโ arabic.py # Arabic text normalization, language detection
โโโ tests/
โ โโโ unit_tests/ # 116 tests, fully mocked (respx)
โ โโโ integration_tests/ # Live API tests
โโโ docs/ # Detailed documentation
โโโ pyproject.toml # Package config
โโโ Makefile # dev commands
โโโ LICENSE # MIT
Base Classes
The toolkit uses two shared base classes to reduce boilerplate:
-
WathqBaseToolโ Shared by all 8 Wathq/Ministry of Commerce tools. Provides unified authentication (apiKeyheader), HTTP client management, and error handling (401, 404, 429 rate-limit). -
CKANBaseToolโ Shared by 10+ open data tools (ZATCA, CMA, GASTAT, Health, etc.). Provides_ckan_search()with CKANpackage_searchAPI, organization filtering viafqparameter, and standardized result formatting.
# How WathqBaseTool simplifies tool creation:
class CommercialRegistrationTool(WathqBaseTool):
name = "saudi_commercial_registration"
# ... just define _run() and _format()
def _run(self, cr_number: str) -> str:
data = self._wathq_get(f"/v5/commercialregistration/info/{cr_number}")
return self._format(data)
๐ API Keys Reference
| Service | Registration URL | Cost | Tools Enabled |
|---|---|---|---|
| National Address | api.address.gov.sa | Free | 2 location tools |
| Wathq | developer.wathq.sa | Varies by plan | 8 business tools |
| Najiz | developers.najiz.sa | Varies | 1 legal tool |
| All CKAN portals | No registration needed | Free | 14 open data tools |
| Aladhan | No registration needed | Free | 2 cultural tools |
Environment variables (recommended)
export NATIONAL_ADDRESS_API_KEY="your-key-here"
export WATHQ_API_KEY="your-wathq-key"
export NAJIZ_API_KEY="your-najiz-key"
import os
from langchain_saudi_gov import SaudiGovToolkit
toolkit = SaudiGovToolkit(
national_address_key=os.getenv("NATIONAL_ADDRESS_API_KEY"),
wathq_key=os.getenv("WATHQ_API_KEY"),
najiz_key=os.getenv("NAJIZ_API_KEY"),
)
๐ Real-World Use Cases
1. ๐ข Business Due Diligence Agent
"""AI agent that performs company due diligence on Saudi companies."""
from langchain_saudi_gov import SaudiGovToolkit
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
toolkit = SaudiGovToolkit(
wathq_key="your-key",
domains=["business"],
)
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=toolkit.get_tools(),
)
result = agent.invoke({
"messages": [{
"role": "user",
"content": (
"Perform due diligence on CR 1010123456. "
"Check the registration status, financial statements, "
"employee count, and verify their chamber membership."
),
}]
})
2. ๐ Saudi Economic Research Assistant
"""Research assistant for Saudi economic data and Vision 2030 metrics."""
toolkit = SaudiGovToolkit(domains=["statistics", "finance"])
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=toolkit.get_tools(),
)
result = agent.invoke({
"messages": [{
"role": "user",
"content": (
"I need data on Saudi Arabia's economic diversification. "
"Find non-oil GDP statistics, labour market Saudization rates, "
"and recent energy production data from KAPSARC."
),
}]
})
3. ๐ Real Estate Verification Bot
"""Verify real estate transactions with address and deed data."""
toolkit = SaudiGovToolkit(
national_address_key="your-key",
najiz_key="your-najiz-key",
domains=["location", "legal"],
)
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=toolkit.get_tools(),
)
result = agent.invoke({
"messages": [{
"role": "user",
"content": (
"Verify the title deed 310100012345 and find the "
"national address at coordinates 24.7136, 46.6753"
),
}]
})
4. ๐ Saudi Lifestyle Assistant
"""Culturally-aware assistant for daily Saudi life."""
toolkit = SaudiGovToolkit(
domains=["cultural", "location"],
national_address_key="your-key",
)
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=toolkit.get_tools(),
)
# Works in Arabic
result = agent.invoke({
"messages": [{
"role": "user",
"content": "ู
ุง ู
ูุงููุช ุงูุตูุงุฉ ุงูููู
ูู ุงูุฑูุงุถุ ูู
ุง ุงูุชุงุฑูุฎ ุงููุฌุฑูุ",
}]
})
๐ Arabic Language Support
All tools support bilingual Arabic and English input and output:
| Feature | Details |
|---|---|
| Auto language detection | NationalAddressSearchTool detects Arabic vs English queries |
| Bilingual responses | APIs return data in both languages when available |
| Arabic normalization | Built-in diacritics removal, Alef normalization, Teh Marbuta handling |
| RTL-ready output | String formatting compatible with RTL display |
from langchain_saudi_gov.utils.arabic import (
normalize_arabic,
remove_diacritics,
detect_language,
is_arabic,
)
normalize_arabic("ุงูุฑููููุงุถ") # โ "ุงูุฑูุงุถ"
remove_diacritics("ุจูุณูู
ู ุงูููููู") # โ "ุจุณู
ุงููู"
detect_language("ู
ุทุงุฑ ุงูู
ูู ุฎุงูุฏ") # โ "A" (Arabic)
detect_language("King Khalid Airport") # โ "E" (English)
is_arabic("ุงูุฑูุงุถ") # โ True
๐งช Development
Setup
git clone https://github.com/fouadmahmoud283-ai/langchain-saudi-gov.git
cd langchain-saudi-gov
pip install -e ".[dev]"
Commands
make test # Run 116 unit tests (mocked, no network)
make integration_tests # Run live API tests (needs keys + network)
make lint # Lint with ruff
make format # Auto-format with ruff
Running tests
# All unit tests
pytest tests/unit_tests -v
# Specific domain
pytest tests/unit_tests/test_business.py -v
pytest tests/unit_tests/test_cultural.py -v
# With coverage
pytest tests/unit_tests --cov=langchain_saudi_gov
Project structure
tests/
โโโ unit_tests/
โ โโโ test_arabic.py # 24 tests โ Arabic text normalization
โ โโโ test_base.py # 7 tests โ WathqBaseTool & CKANBaseTool
โ โโโ test_business.py # 5 tests โ CR, contracts, trademark, chamber
โ โโโ test_cultural.py # 6 tests โ prayer times, Hijri conversion
โ โโโ test_data_tools.py # 10 tests โ ZATCA, CMA, Etimad, GASTAT, KAPSARC
โ โโโ test_imports.py # 30 tests โ all 28 exports importable
โ โโโ test_legal.py # 6 tests โ Najiz verification, MoJ data
โ โโโ test_location.py # 8 tests โ address search, reverse geocode, Balady
โ โโโ test_sector.py # 8 tests โ health, telecom, agriculture, SME
โ โโโ test_toolkit.py # 12 tests โ toolkit config, domains, toggles
โโโ integration_tests/ # Live API tests (optional)
๐ง Configuration Reference
SaudiGovToolkit parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
national_address_key |
str | None |
None |
API key from api.address.gov.sa (free) |
wathq_key |
str | None |
None |
Subscription key from developer.wathq.sa |
najiz_key |
str | None |
None |
Developer API key from developers.najiz.sa |
include_open_data |
bool |
True |
Include the 14 free open data tools |
include_cultural |
bool |
True |
Include prayer times and Hijri tools |
domains |
list[str] | None |
None |
Limit to specific domains (see below) |
Available domains
| Domain | Key Required | Tools |
|---|---|---|
location |
national_address_key for 2, none for 1 |
3 |
business |
wathq_key |
8 |
legal |
najiz_key for 1, none for 1 |
2 |
finance |
None | 3 |
statistics |
None | 4 |
sector |
None | 5 |
cultural |
None | 2 |
๐ API Coverage
| Government Entity | Portal | Tools |
|---|---|---|
| Saudi Post (SPL) | api.address.gov.sa | 2 |
| Ministry of Commerce (Wathq) | developer.wathq.sa | 8 |
| Ministry of Justice (Najiz) | developers.najiz.sa | 1 |
| Ministry of Justice (Open Data) | data.gov.sa | 1 |
| ZATCA (Tax & Customs) | data.zatca.gov.sa | 1 |
| Capital Market Authority | opendata.cma.org.sa | 1 |
| Etimad (Government Procurement) | data.gov.sa | 1 |
| General Authority for Statistics | data.gov.sa | 1 |
| KAPSARC (Energy Research) | datasource.kapsarc.org | 1 |
| Saudi Open Data Portal | data.gov.sa | 1 |
| HRSD (Human Resources) | data.gov.sa | 1 |
| Ministry of Health | data.gov.sa | 1 |
| CITC (Telecom) | data.gov.sa | 1 |
| Ministry of Agriculture | data.gov.sa | 1 |
| NIIC (Industrial) | data.gov.sa | 1 |
| Monshaat (SME Authority) | data.gov.sa | 1 |
| Balady (Municipal) | data.gov.sa | 1 |
| Aladhan (Islamic Services) | api.aladhan.com | 2 |
| Total | 12 portals | 27 tools |
๐ค Contributing
We welcome contributions! Whether it's adding new Saudi API integrations, improving documentation, or fixing bugs:
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-tool) - Write tests for your changes
- Run
make lint && make testto verify - Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
๐ License
MIT โ see LICENSE for details.
๐ Acknowledgments
- LangChain for the tool framework
- Saudi government digital transformation teams for providing public APIs
- Aladhan for the Islamic prayer times API
- KAPSARC for the energy data API
Built with ๐ค by Syntera AI for the Saudi developer community
๐ธ๐ฆ Supporting Saudi Vision 2030 through open-source AI tools
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_saudi_gov-0.1.0.tar.gz.
File metadata
- Download URL: langchain_saudi_gov-0.1.0.tar.gz
- Upload date:
- Size: 37.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd29005b79091c67db45907bd5b6614feaf68371216f72948a21df66acdee1f9
|
|
| MD5 |
47139f7da658aff55cb3b271a65e4e1b
|
|
| BLAKE2b-256 |
82fcda0f0fc907def0c5e110aeb4617deeb300af48b35ec53d2b4e117c3b7620
|
File details
Details for the file langchain_saudi_gov-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langchain_saudi_gov-0.1.0-py3-none-any.whl
- Upload date:
- Size: 49.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e98e4bf8c1e2d43cf80bf2800a1dbd00ad79210a194f77b93c9fdcc527eebd2
|
|
| MD5 |
767d672bc270b8097162e4d6062137e7
|
|
| BLAKE2b-256 |
945d017fe66d2347a149162da2d7e869c27585ec0b07f13277ab3648ea8b8d21
|