Librairie outils IA Lexia par Lexfluent
Project description
Libraire python Lexfluent RevolutionAI
Auteur Jacques MASSA Créé le 2 décembre 2024
Présentation
Cette librairie permet:
- la classification de documents selon le modèle jupiterB1
- l'extraction de données contenu dans des documents de classes connues(Offre de prêts, IBAN, CNI, etc ...).
Installations Prérequises
pip install setuptools wheel
pip install pdfplumber
pip install spacy[cuda12x]
pip install tqdm
pip install opencv-python
pip install pytesseract
pip install pdf2image
pip install pillow==10.0.1
pip install pandas
pip install scikit-learn
pip install matplotlib
pip install tensorflow
pip install tf-keras
pip install tensorflow_hub
pip install tensorrt
pip install langchain-community
pip install ocrmypdf
pip install nvidia-cudnn-cu12
Téléchargement modèles
SPACY
python -m spacy download fr_core_news_lg
Update et installations requises
apt-get update
apt-get upgrade
apt install software-properties-common -y
apt-get install poppler-utils -y
add-apt-repository ppa:alex-p/tesseract-ocr5
apt-get install libc6 -y
apt-get install poppler-utils -y
apt-get install tesseract-ocr -y
apt-get install tesseract-ocr-fra -y
apt-get install tesseract-ocr-eng -y
apt-get install tesseract-ocr-ita -y
apt-get install tesseract-ocr-spa -y
apt-get install tesseract-ocr-deu -y
apt-get install tesseract-ocr-cos -y
apt-get install tesseract-ocr-lat -y
apt-get install automake libtool -y
apt-get install libleptonica-dev -y
apt-get install ffmpeg libsm6 libxext6 -y
apt-get install ocrmypdf -y
GPU issue
Si problème : Successful NUMA node read from SysFS had negative value (-1)
for a in /sys/bus/pci/devices/*; do echo 0 | tee -a $a/numa_node; done
Exemples d'utilisation
Classification
Code
import logging
import sys
from lxf.services.measure_time import measure_time_async
from lxf.services.try_safe import try_safe_execute_asyncio
from lxf.ai.classification.classifier import get_classification
from lxf.domain.predictions import Predictions
import lxf.settings as settings
from lxf.settings import set_looging_level, get_logging_level
set_logging_level(logging.DEBUG)
###################################################################
logger = logging.getLogger('test classifier')
fh = logging.FileHandler('./logs/test_classifier.log')
fh.setLevel(get_logging_level())
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.setLevel(get_logging_level())
logger.addHandler(fh)
#################################################################
@measure_time_async
async def do_test(file_name) -> Predictions :
"""
"""
return await get_classification(file_name=file_name,max_pages=10)
if __name__ == "__main__":
sys.stdout.reconfigure(line_buffering=True)
pdf_path = "data/ODP.pdf"
iban_pdf="data/RIBB.pdf"
result = try_safe_execute_asyncio(logger=logger,func=do_test,file_name=iban_pdf) #asyncio.run(do_test(iban_pdf))
print(result)
result = try_safe_execute_asyncio(logger=logger,func=do_test,file_name=pdf_path) #asyncio.run(do_test(pdf_path))
print(result)
Sortie
Spacy will use GPU
Chargement du modèle SPACY : fr_core_news_lg
2024-12-16 15:52:56.758585: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-12-16 15:52:56.767893: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-12-16 15:52:56.771255: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-12-16 15:52:56.780546: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-12-16 15:52:57.500470: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
Chargement inital de l'embedding universal-sentence-encoder-large/5 ...
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1734360781.333330 987068 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
I0000 00:00:1734360781.333600 987068 cuda_executor.cc:1015] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero. See more at https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355
2024-12-16 15:53:01.334132: W tensorflow/core/common_runtime/gpu/gpu_device.cc:2343] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
Chargement inital de universal-sentence-encoder-large/5 terminé
DEBUG:Measures:get_text_and_tables_from_pdf executed in 0.0391 seconds
DEBUG:Keys words and phrases:Start measuring get_keys_words
DEBUG:Measures:sanitize_text executed in 0.0004 seconds
DEBUG:Keys words and phrases:NLP document loaded in 1.0116 secondes
DEBUG:Keys words and phrases:Freq_mots step 1 completed at 1.0123
DEBUG:Keys words and phrases:Freq_mots completed at 1.0123
DEBUG:Keys words and phrases:Threshold : 0.1
DEBUG:Keys words and phrases:freq_mot threshold completed at 1.0124
DEBUG:Keys words and phrases:freq_mot sorted at 1.0124
DEBUG:Measures:get_key_words executed in 1.0125 seconds
DEBUG:MulticlassClassificationJupiterModel:No GPU found
2024-12-16 15:53:14.363141: W tensorflow/core/framework/dataset.cc:993] Input of GeneratorDatasetOp::Dataset will not be optimized because the dataset does not implement the AsGraphDefInternal() method needed to apply optimizations.
2024-12-16 15:53:14.854450: I tensorflow/core/framework/local_rendezvous.cc:404] Local rendezvous is aborting with status: OUT_OF_RANGE: End of sequence
[[{{node MultiDeviceIteratorGetNextFromShard}}]]
1/1 [==============================] - 1s 519ms/step
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_BPOP-PRET' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Fournisseur' with an accuracy of 7.90 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Mandat-Creancier' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Releve' with an accuracy of 0.02 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Honoraire' with an accuracy of 4.32 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Client' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Banque' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Mandat-Pr\xc3\xa9l\xc3\xa8vement' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Vente' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Certificat-Urbanisme' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_PRET' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Ursaff_D\xc3\xa9claration-Sociale-Nominative' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Courrier_LRAR_Accuse' with an accuracy of 0.01 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_IBAN-RIB' with an accuracy of 0.02 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Procuration' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Familles_Administratif_EHF' with an accuracy of 0.02 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Etat-Civil_Actes' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Appel-de-Fond' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Contrat_Accord-Confidentialit\xc3\xa9' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Technique_Expertise_Diagnostique' with an accuracy of 2.52 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Statut_KBis' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Etat-Civil_CNI' with an accuracy of 85.19 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_AOP' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Statut_Soci\xc3\xa9t\xc3\xa9' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Convention_Honoraire' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Certificat Urbanisme' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:Best prediction = b'Administratif_Etat-Civil_CNI' with an accuracy of 85.19 %
DEBUG:Measures:inference executed in 2.8480 seconds
DEBUG:Measures:get_classification executed in 3.9015 seconds
DEBUG:Measures:do_test executed in 3.9015 seconds
EntityId='' Name='' ModelName='jupiterB0' PredictedAt='16/12/2024 15:53' BestPrediction=b'Administratif_Etat-Civil_CNI' BestPredictionConfidence=85.1897120475769 Results=[Prediction(Name='Finance_Banque_BPOP-PRET', Confidence=1.346630380989755e-10), Prediction(Name='Finance_Facture_Fournisseur', Confidence=7.904815673828125), Prediction(Name='Finance_Banque_Mandat-Creancier', Confidence=1.183977111561957e-16), Prediction(Name='Finance_Banque_Releve', Confidence=0.016190264432225376), Prediction(Name='Finance_Facture_Honoraire', Confidence=4.316940903663635), Prediction(Name='Finance_Facture_Client', Confidence=2.0615163309147026e-14), Prediction(Name='Finance_Facture_Banque', Confidence=0.0027119678634335287), Prediction(Name='Finance_Banque_Mandat-Prélèvement', Confidence=2.2250176200699038e-17), Prediction(Name='Juridique_Acte_Vente', Confidence=1.9271445461746075e-15), Prediction(Name='Juridique_Acte_Certificat-Urbanisme', Confidence=1.6825559026015409e-12), Prediction(Name='Finance_Banque_PRET', Confidence=2.9359794595507083e-07), Prediction(Name='Administratif_Ursaff_Déclaration-Sociale-Nominative', Confidence=0.0018376782463747077), Prediction(Name='Courrier_LRAR_Accuse', Confidence=0.009845012391451746), Prediction(Name='Finance_Banque_IBAN-RIB', Confidence=0.021908499184064567), Prediction(Name='Juridique_Acte_Procuration', Confidence=1.4654824486065276e-18), Prediction(Name='Familles_Administratif_EHF', Confidence=0.016761360166128725), Prediction(Name='Administratif_Etat-Civil_Actes', Confidence=9.54112522322248e-06), Prediction(Name='Finance_Banque_Appel-de-Fond', Confidence=2.107819613295092e-08), Prediction(Name='Juridique_Contrat_Accord-Confidentialité', Confidence=0.0011583175364648923), Prediction(Name='Technique_Expertise_Diagnostique', Confidence=2.5178860872983932), Prediction(Name='Juridique_Statut_KBis', Confidence=0.00022844324121251702), Prediction(Name='Administratif_Etat-Civil_CNI', Confidence=85.1897120475769), Prediction(Name='Finance_Banque_AOP', Confidence=1.9476845025678813e-06), Prediction(Name='Juridique_Statut_Société', Confidence=2.1588321408305688e-10), Prediction(Name='Juridique_Convention_Honoraire', Confidence=2.695727863155639e-07), Prediction(Name='Juridique_Acte_Certificat Urbanisme', Confidence=2.1959061305421024e-09)]
DEBUG:Measures:get_text_and_tables_from_pdf executed in 0.5897 seconds
DEBUG:Keys words and phrases:Start measuring get_keys_words
DEBUG:Measures:sanitize_text executed in 0.0034 seconds
DEBUG:Keys words and phrases:NLP document loaded in 0.9449 secondes
DEBUG:Keys words and phrases:Freq_mots step 1 completed at 0.9494
DEBUG:Keys words and phrases:Freq_mots completed at 0.9495
DEBUG:Keys words and phrases:Threshold : 0.1
DEBUG:Keys words and phrases:freq_mot threshold completed at 0.9496
DEBUG:Keys words and phrases:freq_mot sorted at 0.9496
DEBUG:Measures:get_key_words executed in 0.9497 seconds
DEBUG:MulticlassClassificationJupiterModel:No GPU found
2024-12-16 15:53:16.727064: I tensorflow/core/framework/local_rendezvous.cc:404] Local rendezvous is aborting with status: OUT_OF_RANGE: End of sequence
[[{{node MultiDeviceIteratorGetNextFromShard}}]]
1/1 [==============================] - 0s 133ms/step
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_BPOP-PRET' with an accuracy of 1.22 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Fournisseur' with an accuracy of 9.45 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Mandat-Creancier' with an accuracy of 0.02 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Releve' with an accuracy of 2.03 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Honoraire' with an accuracy of 3.32 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Client' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Facture_Banque' with an accuracy of 0.17 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Mandat-Pr\xc3\xa9l\xc3\xa8vement' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Vente' with an accuracy of 0.12 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Certificat-Urbanisme' with an accuracy of 0.15 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_PRET' with an accuracy of 31.10 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Ursaff_D\xc3\xa9claration-Sociale-Nominative' with an accuracy of 0.15 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Courrier_LRAR_Accuse' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_IBAN-RIB' with an accuracy of 0.72 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Procuration' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Familles_Administratif_EHF' with an accuracy of 0.87 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Etat-Civil_Actes' with an accuracy of 0.05 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_Appel-de-Fond' with an accuracy of 1.10 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Contrat_Accord-Confidentialit\xc3\xa9' with an accuracy of 36.90 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Technique_Expertise_Diagnostique' with an accuracy of 11.53 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Statut_KBis' with an accuracy of 0.03 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Administratif_Etat-Civil_CNI' with an accuracy of 1.03 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Finance_Banque_AOP' with an accuracy of 0.00 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Statut_Soci\xc3\xa9t\xc3\xa9' with an accuracy of 0.01 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Convention_Honoraire' with an accuracy of 0.03 %
DEBUG:MulticlassClassificationJupiterModel:prediction = b'Juridique_Acte_Certificat Urbanisme' with an accuracy of 0.01 %
DEBUG:MulticlassClassificationJupiterModel:Best prediction = b'Juridique_Contrat_Accord-Confidentialit\xc3\xa9' with an accuracy of 36.90 %
DEBUG:Measures:inference executed in 0.3315 seconds
DEBUG:Measures:get_classification executed in 1.8718 seconds
DEBUG:Measures:do_test executed in 1.8719 seconds
EntityId='' Name='' ModelName='jupiterB0' PredictedAt='16/12/2024 15:53' BestPrediction=b'Juridique_Contrat_Accord-Confidentialit\xc3\xa9' BestPredictionConfidence=36.89938485622406 Results=[Prediction(Name='Finance_Banque_BPOP-PRET', Confidence=1.224131602793932), Prediction(Name='Finance_Facture_Fournisseur', Confidence=9.451359510421753), Prediction(Name='Finance_Banque_Mandat-Creancier', Confidence=0.017751535051502287), Prediction(Name='Finance_Banque_Releve', Confidence=2.02501080930233), Prediction(Name='Finance_Facture_Honoraire', Confidence=3.3187299966812134), Prediction(Name='Finance_Facture_Client', Confidence=0.00010094288427353604), Prediction(Name='Finance_Facture_Banque', Confidence=0.174746906850487), Prediction(Name='Finance_Banque_Mandat-Prélèvement', Confidence=2.984501534797346e-06), Prediction(Name='Juridique_Acte_Vente', Confidence=0.11607391061261296), Prediction(Name='Juridique_Acte_Certificat-Urbanisme', Confidence=0.14639836736023426), Prediction(Name='Finance_Banque_PRET', Confidence=31.098634004592896), Prediction(Name='Administratif_Ursaff_Déclaration-Sociale-Nominative', Confidence=0.14745767693966627), Prediction(Name='Courrier_LRAR_Accuse', Confidence=0.000290640218736371), Prediction(Name='Finance_Banque_IBAN-RIB', Confidence=0.7238393183797598), Prediction(Name='Juridique_Acte_Procuration', Confidence=1.9729711198124278e-05), Prediction(Name='Familles_Administratif_EHF', Confidence=0.870391633361578), Prediction(Name='Administratif_Etat-Civil_Actes', Confidence=0.045667189988307655), Prediction(Name='Finance_Banque_Appel-de-Fond', Confidence=1.0968752205371857), Prediction(Name='Juridique_Contrat_Accord-Confidentialité', Confidence=36.89938485622406), Prediction(Name='Technique_Expertise_Diagnostique', Confidence=11.529157310724258), Prediction(Name='Juridique_Statut_KBis', Confidence=0.03401543654035777), Prediction(Name='Administratif_Etat-Civil_CNI', Confidence=1.0326274670660496), Prediction(Name='Finance_Banque_AOP', Confidence=0.0020591452994267456), Prediction(Name='Juridique_Statut_Société', Confidence=0.012454076204448938), Prediction(Name='Juridique_Convention_Honoraire', Confidence=0.026516334037296474), Prediction(Name='Juridique_Acte_Certificat Urbanisme', Confidence=0.006304969429038465)]
Extraction de données
Code
import logging
import asyncio
import os
import sys
import lxf.settings as settings
from lxf.setting import set_logging_level, get_logging_level
set_logging_level(logging.DEBUG)
settings.enable_tqdm=False
from lxf.domain.loan import Pret
from lxf.extractors.finance import odp_extractor
from lxf.extractors.finance import iban_extractor
from lxf.services.try_safe import try_safe_execute_async
###################################################################
logger = logging.getLogger('test_finance')
fh = logging.FileHandler('./logs/test_finance.log')
fh.setLevel(get_logging_level())
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.setLevel(get_logging_level())
logger.addHandler(fh)
#################################################################
async def do_test_odp(file_path:str)->Pret:
result = await try_safe_execute_async(logger,odp_extractor.extract_data,file_path=file_path)
return result
async def do_test_iban(file_path:str)->str :
"""
"""
result = await try_safe_execute_async(logger,iban_extractor.extract_data,file_path=file_path)
return result
if __name__ == "__main__":
sys.stdout.reconfigure(line_buffering=True)
pdf_path = "data/ODP.pdf"
# pret:Pret= asyncio.run(do_test_odp(file_path=pdf_path))
# if pret!=None:
# print(pret.emprunteurs)
iban_pdf="data/rib pm.pdf"
txt = asyncio.run(do_test_iban(file_path=iban_pdf))
print(txt)
Sortie
Chargement du modèle SPACY : fr_core_news_lg
Angle à corriger -0.39474812150001526
Facteur de correction d'angle retenue 0.8
Angle finale retenue -0.31579849720001224
Rotation
Angle à corriger -0.39474812150001526
Facteur de correction d'angle retenue 0.8
Angle finale retenue -0.31579849720001224
Rotation
Angle à corriger -0.14542043209075928
Facteur de correction d'angle retenue 0.8
Angle finale retenue -0.11633634567260742
Rotation
[IbanCandidate(iban='FR76 XXXXXXXXXXXXXXXX', bic='XXXXX', branch='AG CORTE', bank='CRCAM DE LA CORSE', address='5 COURS PAOLI', city='CORTE', state=None, zip='20250', phone=None, fax=None, www=None, email=None, country='FRANCE', country_iso='FR', account='XXXXXXXXXX', bank_code='XXXXX', branch_code='00040', found='Yes', validation=True, error_msg='13/12/2024 16:46: IBAN.COM retourne le code de validation 001 => IBAN Check digit is correct'), IbanCandidate(iban='XXXXXXXXXX', bic='XXXXX', branch='AG CORTE', bank='CRCAM DE LA CORSE', address='5 COURS PAOLI', city='CORTE', state=None, zip='20250', phone=None, fax=None, www=None, email=None, country='FRANCE', country_iso='FR', account='XXXXXXX', bank_code='12006', branch_code='00040', found='Yes', validation=True, error_msg='13/12/2024 16:46: IBAN.COM retourne le code de validation 001 => IBAN Check digit is correct')]
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
pylexfluent-0.1.29.tar.gz
(30.8 MB
view details)
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
pylexfluent-0.1.29-py3-none-any.whl
(109.8 kB
view details)
File details
Details for the file pylexfluent-0.1.29.tar.gz.
File metadata
- Download URL: pylexfluent-0.1.29.tar.gz
- Upload date:
- Size: 30.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a83190215db0578339011c7ec72fbf3ff14c4f9847b34d016b4a816db13b430
|
|
| MD5 |
4f0cba439c60badb054b897309f52395
|
|
| BLAKE2b-256 |
4d894465e39ce46d1c1fb916b05400e188823448cb988ec7f86eceaf0adb7c3d
|
File details
Details for the file pylexfluent-0.1.29-py3-none-any.whl.
File metadata
- Download URL: pylexfluent-0.1.29-py3-none-any.whl
- Upload date:
- Size: 109.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46df616f95d0befe9e13092786432930a2b0a6e688146275ba5da9c77edf9438
|
|
| MD5 |
a1fcf15d1c0d2cdfbe93ebc520f2495f
|
|
| BLAKE2b-256 |
41c07a4bcdaa48586c76b0452c45ac4b7b008aa4bd53a17a67729ec969bcf742
|