@ -0,0 +1,51 @@ |
||||
# -*- mode: python ; coding: utf-8 -*- |
||||
|
||||
|
||||
block_cipher = None |
||||
|
||||
|
||||
a = Analysis( |
||||
['main.py'], |
||||
pathex=[], |
||||
binaries=[], |
||||
datas=[('settings.json', '.'), ('assets/*', 'assets/.')], |
||||
hiddenimports=[], |
||||
hookspath=[], |
||||
hooksconfig={}, |
||||
runtime_hooks=[], |
||||
excludes=[], |
||||
win_no_prefer_redirects=False, |
||||
win_private_assemblies=False, |
||||
cipher=block_cipher, |
||||
noarchive=False, |
||||
) |
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) |
||||
|
||||
exe = EXE( |
||||
pyz, |
||||
a.scripts, |
||||
[], |
||||
exclude_binaries=True, |
||||
name='IL Extract', |
||||
debug=False, |
||||
bootloader_ignore_signals=False, |
||||
strip=False, |
||||
upx=True, |
||||
console=False, |
||||
disable_windowed_traceback=False, |
||||
argv_emulation=False, |
||||
target_arch=None, |
||||
codesign_identity=None, |
||||
entitlements_file=None, |
||||
icon='assets\\extract.ico', |
||||
) |
||||
coll = COLLECT( |
||||
exe, |
||||
a.binaries, |
||||
a.zipfiles, |
||||
a.datas, |
||||
strip=False, |
||||
upx=True, |
||||
upx_exclude=[], |
||||
name='IL Extract', |
||||
) |
||||
@ -0,0 +1,194 @@ |
||||
# -*- coding: utf-8 -*- |
||||
|
||||
# Form implementation generated from reading ui file 'ILE_MainWindow.ui' |
||||
# |
||||
# Created by: PyQt5 UI code generator 5.15.7 |
||||
# |
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is |
||||
# run again. Do not edit this file unless you know what you are doing. |
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets |
||||
|
||||
|
||||
class Ui_MainWindow(object): |
||||
def setupUi(self, MainWindow): |
||||
MainWindow.setObjectName("MainWindow") |
||||
MainWindow.resize(889, 634) |
||||
icon = QtGui.QIcon() |
||||
icon.addPixmap(QtGui.QPixmap("assets/extract.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
MainWindow.setWindowIcon(icon) |
||||
self.centralwidget = QtWidgets.QWidget(MainWindow) |
||||
self.centralwidget.setObjectName("centralwidget") |
||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget) |
||||
self.gridLayout_2.setObjectName("gridLayout_2") |
||||
self.gridLayout = QtWidgets.QGridLayout() |
||||
self.gridLayout.setObjectName("gridLayout") |
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout() |
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2") |
||||
self.reportTypeL = QtWidgets.QLabel(self.centralwidget) |
||||
font = QtGui.QFont() |
||||
font.setPointSize(14) |
||||
font.setBold(True) |
||||
font.setWeight(75) |
||||
self.reportTypeL.setFont(font) |
||||
self.reportTypeL.setObjectName("reportTypeL") |
||||
self.horizontalLayout_2.addWidget(self.reportTypeL, 0, QtCore.Qt.AlignLeft) |
||||
self.reportTypeCB = QtWidgets.QComboBox(self.centralwidget) |
||||
self.reportTypeCB.setObjectName("reportTypeCB") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.reportTypeCB.addItem("") |
||||
self.horizontalLayout_2.addWidget(self.reportTypeCB) |
||||
self.gridLayout.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) |
||||
self.fileSettingsBox = QtWidgets.QVBoxLayout() |
||||
self.fileSettingsBox.setObjectName("fileSettingsBox") |
||||
self.inputFileBox = QtWidgets.QHBoxLayout() |
||||
self.inputFileBox.setObjectName("inputFileBox") |
||||
self.inputFileButton = QtWidgets.QPushButton(self.centralwidget) |
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) |
||||
sizePolicy.setHorizontalStretch(0) |
||||
sizePolicy.setVerticalStretch(0) |
||||
sizePolicy.setHeightForWidth(self.inputFileButton.sizePolicy().hasHeightForWidth()) |
||||
self.inputFileButton.setSizePolicy(sizePolicy) |
||||
self.inputFileButton.setMinimumSize(QtCore.QSize(250, 0)) |
||||
self.inputFileButton.setMaximumSize(QtCore.QSize(250, 55)) |
||||
icon1 = QtGui.QIcon() |
||||
icon1.addPixmap(QtGui.QPixmap("assets/folder.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.inputFileButton.setIcon(icon1) |
||||
self.inputFileButton.setObjectName("inputFileButton") |
||||
self.inputFileBox.addWidget(self.inputFileButton) |
||||
self.inputFileLE = QtWidgets.QLineEdit(self.centralwidget) |
||||
self.inputFileLE.setReadOnly(True) |
||||
self.inputFileLE.setObjectName("inputFileLE") |
||||
self.inputFileBox.addWidget(self.inputFileLE) |
||||
self.fileSettingsBox.addLayout(self.inputFileBox) |
||||
self.outFileLocation = QtWidgets.QHBoxLayout() |
||||
self.outFileLocation.setObjectName("outFileLocation") |
||||
self.outputFileButton = QtWidgets.QPushButton(self.centralwidget) |
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) |
||||
sizePolicy.setHorizontalStretch(0) |
||||
sizePolicy.setVerticalStretch(0) |
||||
sizePolicy.setHeightForWidth(self.outputFileButton.sizePolicy().hasHeightForWidth()) |
||||
self.outputFileButton.setSizePolicy(sizePolicy) |
||||
self.outputFileButton.setMinimumSize(QtCore.QSize(250, 0)) |
||||
self.outputFileButton.setMaximumSize(QtCore.QSize(250, 55)) |
||||
self.outputFileButton.setIcon(icon1) |
||||
self.outputFileButton.setObjectName("outputFileButton") |
||||
self.outFileLocation.addWidget(self.outputFileButton) |
||||
self.outputFileLE = QtWidgets.QLineEdit(self.centralwidget) |
||||
self.outputFileLE.setReadOnly(True) |
||||
self.outputFileLE.setObjectName("outputFileLE") |
||||
self.outFileLocation.addWidget(self.outputFileLE) |
||||
self.fileSettingsBox.addLayout(self.outFileLocation) |
||||
self.gridLayout.addLayout(self.fileSettingsBox, 1, 0, 1, 1) |
||||
self.horizontalLayout = QtWidgets.QHBoxLayout() |
||||
self.horizontalLayout.setObjectName("horizontalLayout") |
||||
self.processReportButton = QtWidgets.QPushButton(self.centralwidget) |
||||
self.processReportButton.setEnabled(False) |
||||
icon2 = QtGui.QIcon() |
||||
icon2.addPixmap(QtGui.QPixmap("assets/process.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.processReportButton.setIcon(icon2) |
||||
self.processReportButton.setObjectName("processReportButton") |
||||
self.horizontalLayout.addWidget(self.processReportButton) |
||||
self.copyButton = QtWidgets.QPushButton(self.centralwidget) |
||||
self.copyButton.setEnabled(False) |
||||
icon3 = QtGui.QIcon() |
||||
icon3.addPixmap(QtGui.QPixmap("assets/copy.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.copyButton.setIcon(icon3) |
||||
self.copyButton.setObjectName("copyButton") |
||||
self.horizontalLayout.addWidget(self.copyButton) |
||||
self.openFolderButton = QtWidgets.QPushButton(self.centralwidget) |
||||
self.openFolderButton.setEnabled(False) |
||||
self.openFolderButton.setIcon(icon1) |
||||
self.openFolderButton.setObjectName("openFolderButton") |
||||
self.horizontalLayout.addWidget(self.openFolderButton) |
||||
self.openExcelButton = QtWidgets.QPushButton(self.centralwidget) |
||||
self.openExcelButton.setEnabled(False) |
||||
icon4 = QtGui.QIcon() |
||||
icon4.addPixmap(QtGui.QPixmap("assets/excel.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.openExcelButton.setIcon(icon4) |
||||
self.openExcelButton.setObjectName("openExcelButton") |
||||
self.horizontalLayout.addWidget(self.openExcelButton) |
||||
self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 1) |
||||
self.inputFilePreview = QtWidgets.QTextBrowser(self.centralwidget) |
||||
self.inputFilePreview.setObjectName("inputFilePreview") |
||||
self.gridLayout.addWidget(self.inputFilePreview, 3, 0, 1, 1) |
||||
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) |
||||
MainWindow.setCentralWidget(self.centralwidget) |
||||
self.menubar = QtWidgets.QMenuBar(MainWindow) |
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 889, 24)) |
||||
self.menubar.setObjectName("menubar") |
||||
self.menu_Settings = QtWidgets.QMenu(self.menubar) |
||||
icon5 = QtGui.QIcon() |
||||
icon5.addPixmap(QtGui.QPixmap("assets/settings.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.menu_Settings.setIcon(icon5) |
||||
self.menu_Settings.setObjectName("menu_Settings") |
||||
self.menuStart_Maximized = QtWidgets.QMenu(self.menu_Settings) |
||||
icon6 = QtGui.QIcon() |
||||
icon6.addPixmap(QtGui.QPixmap("assets/maximize.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.menuStart_Maximized.setIcon(icon6) |
||||
self.menuStart_Maximized.setObjectName("menuStart_Maximized") |
||||
MainWindow.setMenuBar(self.menubar) |
||||
self.statusbar = QtWidgets.QStatusBar(MainWindow) |
||||
self.statusbar.setObjectName("statusbar") |
||||
MainWindow.setStatusBar(self.statusbar) |
||||
self.action_Default_Locations = QtWidgets.QAction(MainWindow) |
||||
icon7 = QtGui.QIcon() |
||||
icon7.addPixmap(QtGui.QPixmap("assets/fileSearch.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
self.action_Default_Locations.setIcon(icon7) |
||||
self.action_Default_Locations.setObjectName("action_Default_Locations") |
||||
self.menu_Settings.addAction(self.action_Default_Locations) |
||||
self.menubar.addAction(self.menu_Settings.menuAction()) |
||||
self.reportTypeL.setBuddy(self.reportTypeCB) |
||||
|
||||
self.retranslateUi(MainWindow) |
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow) |
||||
MainWindow.setTabOrder(self.reportTypeCB, self.inputFileButton) |
||||
MainWindow.setTabOrder(self.inputFileButton, self.outputFileButton) |
||||
MainWindow.setTabOrder(self.outputFileButton, self.processReportButton) |
||||
MainWindow.setTabOrder(self.processReportButton, self.copyButton) |
||||
MainWindow.setTabOrder(self.copyButton, self.inputFileLE) |
||||
MainWindow.setTabOrder(self.inputFileLE, self.outputFileLE) |
||||
MainWindow.setTabOrder(self.outputFileLE, self.inputFilePreview) |
||||
|
||||
def retranslateUi(self, MainWindow): |
||||
_translate = QtCore.QCoreApplication.translate |
||||
MainWindow.setWindowTitle(_translate("MainWindow", "IL Extract")) |
||||
self.reportTypeL.setText(_translate("MainWindow", "Infolease Report Type:")) |
||||
self.reportTypeCB.setItemText(0, _translate("MainWindow", "ACH")) |
||||
self.reportTypeCB.setItemText(1, _translate("MainWindow", "Disposition")) |
||||
self.reportTypeCB.setItemText(2, _translate("MainWindow", "Gain Loss")) |
||||
self.reportTypeCB.setItemText(3, _translate("MainWindow", "Lock Box")) |
||||
self.reportTypeCB.setItemText(4, _translate("MainWindow", "Minv_C")) |
||||
self.reportTypeCB.setItemText(5, _translate("MainWindow", "Net Inv. Loans")) |
||||
self.reportTypeCB.setItemText(6, _translate("MainWindow", "NI Renewal")) |
||||
self.reportTypeCB.setItemText(7, _translate("MainWindow", "NIV After")) |
||||
self.reportTypeCB.setItemText(8, _translate("MainWindow", "PBP / Epay")) |
||||
self.reportTypeCB.setItemText(9, _translate("MainWindow", "Returned Check")) |
||||
self.reportTypeCB.setItemText(10, _translate("MainWindow", "Unapplied")) |
||||
self.reportTypeCB.setItemText(11, _translate("MainWindow", "VMCC")) |
||||
self.reportTypeCB.setItemText(12, _translate("MainWindow", "Wires")) |
||||
self.reportTypeCB.setItemText(13, _translate("MainWindow", "Past Due")) |
||||
self.inputFileButton.setText(_translate("MainWindow", "Select &InfoLease Report")) |
||||
self.inputFileLE.setPlaceholderText(_translate("MainWindow", "No file selected")) |
||||
self.outputFileButton.setText(_translate("MainWindow", "Select &Report Output Location")) |
||||
self.outputFileLE.setPlaceholderText(_translate("MainWindow", "No location selected")) |
||||
self.processReportButton.setText(_translate("MainWindow", "&Process Report")) |
||||
self.copyButton.setText(_translate("MainWindow", "&Copy to Clipboard")) |
||||
self.openFolderButton.setText(_translate("MainWindow", "&Open Folder")) |
||||
self.openExcelButton.setText(_translate("MainWindow", "&Open File")) |
||||
self.menu_Settings.setTitle(_translate("MainWindow", "&Settings")) |
||||
self.action_Default_Locations.setText(_translate("MainWindow", "&Default Locations")) |
||||
|
||||
@ -0,0 +1,933 @@ |
||||
import os |
||||
import pandas as pd |
||||
from datetime import datetime as dt, timedelta |
||||
import sys, getopt |
||||
import re |
||||
from pathlib import Path |
||||
import time |
||||
import numpy as np |
||||
|
||||
# V3.0 | 08/22/22 |
||||
|
||||
# contract numbers are a common feature in many reports to it's |
||||
# useful to have the regex for them globally avaiable |
||||
contract_number_regex = "\d{3}-\d{7}-\d{3}" |
||||
|
||||
class ILReport: |
||||
""" |
||||
InfoLease Report class will be used to work with the files. |
||||
It makes it easier to add new reports to the workflow and to make it more clear where |
||||
the reports are coming from. It also helps with tracking reports that may not be ready yet. |
||||
""" |
||||
def __init__(self, location, extraction_function, output_location = None): |
||||
# The location where the InfoLease report is stored |
||||
self.location = location |
||||
# If output location not specified, save to the input location |
||||
if output_location == None: |
||||
self.output_location = Path(location).parent.absolute() |
||||
else: |
||||
self.output_location = output_location |
||||
# The function used to extract the data from the report |
||||
self.x_method = extraction_function |
||||
# Tracks whether the data was successfully exctracted |
||||
self.successful = False |
||||
|
||||
|
||||
def process(self): |
||||
print("Processing file") |
||||
try: |
||||
# Open the file and read it to a string | errors = 'replace' deals with non UTF-8 characters (no affect on output) |
||||
with open(self.location, errors="replace") as ifile: |
||||
report = ifile.read() |
||||
report = report.replace("^"," ") |
||||
except IOError as ioe: |
||||
print(f"Failed to open file: {self.location}\n{ioe}") |
||||
self.successful = False |
||||
return 1 |
||||
#try: |
||||
# Run the associated method to extract the data and get the dataframe |
||||
print("Running parsing process") |
||||
print("Print something") |
||||
dataframe = self.x_method(report, self.output_location) |
||||
#except Exception as e: |
||||
# print(f"Failed to create dataframe: {self.output_name}\n{e}") |
||||
# self.successful = False |
||||
# return 1 |
||||
try: |
||||
assert(len(dataframe) > 1) |
||||
except Exception as e: |
||||
print(f"Data Length Error: {self.output_name} is empty:\n{dataframe}") |
||||
self.successful = False |
||||
return 1 |
||||
self.successful = True |
||||
return dataframe |
||||
|
||||
def append_to_consolidated_report(self, output_dataframe: pd.DataFrame): |
||||
""" |
||||
Add's the reports dataframe to the current months consolidated report or creates one if |
||||
it already exists |
||||
|
||||
The month folder is typically 2 directories above the output location |
||||
Year is the folder abover that^ |
||||
""" |
||||
|
||||
|
||||
|
||||
def create_line_divider(breakage_list: list): |
||||
""" |
||||
This allows for the creation of a custom data extractor |
||||
Breakage list defines the split points that will be used for the line |
||||
Example |
||||
Given breakage_list [10, 20, 30] |
||||
using slot_num 0 in the resulting extract_line_slot will yield |
||||
characters 0 - 10 from the string. |
||||
Slot 1 would give characters 10 - 20 |
||||
""" |
||||
def extract_line_slot(slot_num : int, line_string: str, debug : bool = False): |
||||
""" |
||||
Pulls data from a line/string using break points defined by the |
||||
parent function. |
||||
ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor' |
||||
Will automatically convert numbers to floats |
||||
""" |
||||
# We can't have a slot number higher than the number of slots |
||||
assert(slot_num < len(breakage_list)+1) |
||||
low_range = 0 if slot_num == 0 else breakage_list[slot_num-1] |
||||
high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num] |
||||
# In order to create a float we need to remove the , from the string |
||||
data = line_string[low_range:high_range].strip().replace(",", "") |
||||
try: data = float(data) |
||||
except: pass |
||||
if debug: |
||||
print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}") |
||||
return data |
||||
return extract_line_slot |
||||
|
||||
|
||||
###################################################################################################################### |
||||
# # |
||||
# EXTRACTION FUNCTIONS: used to pull data out of specific InfoLease report types # |
||||
# # |
||||
###################################################################################################################### |
||||
""" |
||||
COMMON EXTRACTION COMPONENTS/FEATURES: |
||||
- lines = report.splitlines() : splits the reports into a list of lines (based on \n line breaks in document) |
||||
|
||||
- extracted_data_dict : this is a dictionary that will hold the extracted data and will be used to create the dataframe |
||||
|
||||
- columns = list(extracted_data_dict.keys()) : breaks the extracted_data_dict into a list of its keys (excel column heads) |
||||
|
||||
- data_extractor = create_line_divider([#,#,#,#,#]): This creates a function we can use to pull data from a line based on |
||||
its 'slot position'. A slot position is the characters between the numbers specified in the list passed into the function |
||||
|
||||
- for line in enumerate(lines): iterates through each line in the document. Line is a tuple of (line number, line string) |
||||
having the line number can be very useful when we need to access data in adjacent lines |
||||
|
||||
- line# = list(zip(columns[#:#],[i for i in range(#,#)])): This creates a list with the tuple (column name, slot number). |
||||
It allows us to iterate through this list and make sure the correct data slots are being used for each column/key in the |
||||
data dictionary |
||||
|
||||
COMMON REGEX COMPONENTS |
||||
\d : any digit [0-9] |
||||
\D : any character that is not a digit |
||||
\s : whitespace |
||||
. : any character besides newline (\n) |
||||
{#}: # number of the preceding character |
||||
* : 0 or more repetitions of the preceding character |
||||
""" |
||||
|
||||
|
||||
def ach(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
"ContractNumber" : [], |
||||
"CustomerName" : [], |
||||
"BankCode" : [], |
||||
"BankNumber": [], |
||||
"AccountNumber" : [], |
||||
"Payment" : [], |
||||
"Batch": [], |
||||
"Lessor": [], |
||||
"PaymentDate": [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
batches = { |
||||
"batch_num": [], |
||||
"payment_date": [], |
||||
"lessor": [], |
||||
#"count": [], |
||||
"total": [] |
||||
} |
||||
|
||||
data_extractor = create_line_divider([19,57,67,82,104]) |
||||
bank_number_regex = "\d{9}" |
||||
batch_num_regex = "BATCH \d{4} TOTAL" |
||||
for line in enumerate(lines): |
||||
# Check for a contract number and a bank number in the line |
||||
if (re.search(contract_number_regex, line[1]) != None) & (re.search(bank_number_regex, line[1]) != None): |
||||
# Iterates through the columns list and adds the corresponding slot number to the dictonary for the column |
||||
# Here the order of the columns (keys in dictonary) matter since they need to be in the same order as |
||||
# the slot numbers |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c, line[1])) for c in range(0, len(columns)-3)] |
||||
# This searches for a statement that looks like a batch number |
||||
# This sums the contracts by thier lessor code. A feature requested by cash apps |
||||
if re.search(batch_num_regex, line[1]) != None: |
||||
# Batch number is always in characters 96 to 101 |
||||
batches["batch_num"].append(line[1][96:101]) |
||||
# Payment date will be 2 lines below that between charactes 114 and 125 |
||||
batches["payment_date"].append(lines[line[0]+2][114:125]) |
||||
# Lessor is just the first three number sof the contract number |
||||
batches["lessor"].append(extracted_data_dict["ContractNumber"][-1][0:3]) |
||||
# Total is a number given by the report for that batch. ',' is removed so that it can be transformed into a float |
||||
batches["total"].append(float(line[1][107:125].strip().replace(",", ""))) |
||||
#print(f"{line[0]+6} | {lines[line[0]+6][107:125]}\n{lines[line[0]+6]}") |
||||
#batches["count"].append(float(lines[line[0]+6][107:125].strip().replace(",", ""))) |
||||
# Any time there's a new batch we need to add this data to the dictionary up up to the currrent place |
||||
# So we iterate over the number of contracts and add in the newest value for each that don't have one of these values already |
||||
[extracted_data_dict["Batch"].append(batches["batch_num"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Batch"])))] |
||||
[extracted_data_dict["Lessor"].append(batches["lessor"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Lessor"])))] |
||||
[extracted_data_dict["PaymentDate"].append(batches["payment_date"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["PaymentDate"])))] |
||||
# Now the dictioanry lists should all be equal lengths and we can create a dataframe |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
# We're creating two sheets: data & summary so we need to open and excel writer |
||||
# This also helps with a bug caused by larger dataframes |
||||
with pd.ExcelWriter(save_name) as writer: |
||||
dataframe.to_excel(writer, index=False, sheet_name="data") |
||||
# The batches dictioanry is converted to a dataframe and added as it's own sheet |
||||
pd.DataFrame(batches).to_excel(writer, index=False, sheet_name="Summary") |
||||
return dataframe |
||||
|
||||
def disposition(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
"ContractNumber" : [], |
||||
"Amount Rec" : [], |
||||
"Trans Num" : [], |
||||
"Date RCVD": [], |
||||
"Date Posted" : [], |
||||
"Last Pymt Due" : [], |
||||
"Date Due" : [], |
||||
"Residual Amt" : [], |
||||
"Term Date" : [], |
||||
"Total Pastdue" : [], |
||||
"Customer Name" : [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
data_extractor = create_line_divider([15,32,41, 51, 61, 79,88, 103, 114]) |
||||
for line in enumerate(lines): |
||||
if re.search(contract_number_regex, data_extractor(0,line[1])): |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c,line[1])) for c in range(0, len(columns)-1)] |
||||
# Customer name is on a seperate line so we need to grab that seperately |
||||
extracted_data_dict["Customer Name"].append(lines[line[0]+1].strip()) |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
dataframe.to_excel(save_name, index=False) |
||||
return dataframe |
||||
|
||||
|
||||
def gainloss(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
'REM RENT RCVB' : [], |
||||
'GUAR RESIDUAL' : [], |
||||
'ASSET VAL' : [], |
||||
'EQUITY ADDON' : [], |
||||
'CURR INT RCVB' : [], |
||||
'MISC G/L' : [], |
||||
'BLENDED INC' : [], |
||||
'CONTRACT NUMBER' : [], |
||||
'CURR RENT RCVB' : [], |
||||
'RESIDUAL' : [], |
||||
'END/SEC DEP' : [], |
||||
'SALES TAX' : [], |
||||
'INVENT CHANGE' : [], |
||||
'NET RESERVE' : [], |
||||
'LATE CHGS' : [], |
||||
'CUSTOMER NAME' : [], |
||||
'UNEARNED FIN' : [], |
||||
'UNAMORT RES' : [], |
||||
'MISC' : [], |
||||
'MISC TAX' : [], |
||||
'CASH RECEIVED' : [], |
||||
'RCV OFFSET' : [], |
||||
'GAIN/LOSS' : [], |
||||
'DISPOSITION CODE' : [], |
||||
'UNEARNED IDC' : [], |
||||
'UNPAID INT' : [], |
||||
'PENALTY FEE' : [], |
||||
'UNPAID ACCRD' : [], |
||||
'RENEWAL RCVBL' : [], |
||||
'DEF REN INC' : [], |
||||
'DEF REN INT' : [], |
||||
'EARNED IDC' : [], |
||||
'GST BOOK G/L' : [], |
||||
'UNRECOG GST' : [], |
||||
'INT EARNED' : [], |
||||
'OVER/SHORT' : [], |
||||
'OPER RCVB' : [], |
||||
'OPER BASIS' : [], |
||||
'CTD OPER DEPR' : [], |
||||
} |
||||
# L0: BlendedInc 6 |
||||
# L1: Late CHGS 14 |
||||
# L2: Gain/Loss 22 |
||||
# L3: Def Ren Int 30 |
||||
# l4 Over/Short 35 |
||||
# L5: CTD OPER |
||||
columns = list(extracted_data_dict.keys()) |
||||
# These line data are used to tell the data extrator which values to pull for each line of |
||||
# relevant data. It pairs dictionary keys with thier corresponding data slot in the line |
||||
# so that they can be iterated through during data extraction |
||||
# |
||||
# It looks confusing but makes more sense if you look at the actual Info Lease reports |
||||
# This is one of the messiest reports |
||||
line0 = list(zip(columns[0:7],[i for i in range(1,8)])) |
||||
line1 = list(zip(columns[7:15],[i for i in range(0,8)])) |
||||
line2 = list(zip(columns[15:23], [i for i in range(0,8)])) |
||||
line3 = list(zip(columns[23:31], [i for i in range(0,8)])) |
||||
line4 = list(zip(columns[31:36], [i for i in range(1,8) if i not in [3,6]])) |
||||
line5 = list(zip(columns[36:], [i for i in range(1,4)])) |
||||
data_extractor = create_line_divider([27,43,58,74,88,105,120]) |
||||
for line in enumerate(lines): |
||||
# The line must contain a contract number and the first data slot should be a float |
||||
if (re.search(contract_number_regex, data_extractor(0,line[1])) != None)&\ |
||||
(type(data_extractor(1,line[1])) == float) : |
||||
data_section = lines[line[0]-1:line[0]+5] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[0])) for c in line0] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[1])) for c in line1] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[2])) for c in line2] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[3])) for c in line3] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[4])) for c in line4] |
||||
[extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[5])) for c in line5] |
||||
|
||||
df = pd.DataFrame(extracted_data_dict) |
||||
print("df created") |
||||
# The Accounting team wanted the disposotion code split into number and descriptionso... |
||||
print("Splitting disp") |
||||
df["DISPOSITION DESC"] = df['DISPOSITION CODE'].apply(lambda dc: " ".join(dc.split(" ")[1:])) |
||||
df["DISPOSITION CODE"] = df['DISPOSITION CODE'].apply(lambda dc: dc.split(" ")[0]) |
||||
print("adding Fund") |
||||
df["Fund"] = df["CONTRACT NUMBER"].apply( |
||||
lambda con_num: con_num[0:3]) |
||||
print("Reordering df") |
||||
df = df[['Fund', |
||||
'CONTRACT NUMBER', |
||||
'CUSTOMER NAME', |
||||
'DISPOSITION CODE', |
||||
'DISPOSITION DESC', |
||||
'CASH RECEIVED', |
||||
'GAIN/LOSS', |
||||
'NET RESERVE', |
||||
'REM RENT RCVB', |
||||
'RESIDUAL', |
||||
'UNAMORT RES', |
||||
'UNEARNED FIN', |
||||
'BLENDED INC', |
||||
'END/SEC DEP', |
||||
'UNEARNED IDC', |
||||
'UNPAID INT', |
||||
'MISC', |
||||
'ASSET VAL', |
||||
'CTD OPER DEPR', |
||||
'CURR INT RCVB', |
||||
'CURR RENT RCVB', |
||||
'DEF REN INC', |
||||
'DEF REN INT', |
||||
'EARNED IDC', |
||||
'EQUITY ADDON', |
||||
'GST BOOK G/L', |
||||
'GUAR RESIDUAL', |
||||
'INT EARNED', |
||||
'INVENT CHANGE', |
||||
'LATE CHGS', |
||||
'MISC G/L', |
||||
'MISC TAX', |
||||
'OPER BASIS', |
||||
'OPER RCVB', |
||||
'OVER/SHORT', |
||||
'PENALTY FEE', |
||||
'RCV OFFSET', |
||||
'RENEWAL RCVBL', |
||||
'SALES TAX', |
||||
'UNPAID ACCRD', |
||||
'UNRECOG GST', |
||||
]] |
||||
print("saving df") |
||||
df.to_excel(save_name, index=False) |
||||
return df |
||||
|
||||
# Works for Net-inv-loans & NIV-after |
||||
def net_invest_trial_balance(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
'CUSTOMER NAME': [], |
||||
'CURR INT RCVB': [], |
||||
'UNEARNED BLENDED': [], |
||||
'BLEND NET INV': [], |
||||
'LEASE NUMBER': [], |
||||
'GROSS CONTRACT': [], |
||||
'CURR RENT RCVB': [], |
||||
'UNEARN FIN': [], |
||||
'END DEPOSIT': [], |
||||
'SEC DEPOSIT': [], |
||||
'LEASE PYMTS': [], |
||||
'TOTAL': [], |
||||
'CONTRACT STAT': [], |
||||
'PAYMENTS RCVD': [], |
||||
'REM RENT RCVB': [], |
||||
'UNEARN RESID': [], |
||||
'PROV LOSS': [], |
||||
'NET RESERVE': [], |
||||
'UNEARN INC': [], |
||||
'BAL REMAINING': [], |
||||
'RESIDUAL': [], |
||||
'UNPAID INT': [], |
||||
'NET INV': [], |
||||
'UNEARNED IDC': [], |
||||
} |
||||
lessors = [] |
||||
columns = list(extracted_data_dict.keys()) |
||||
line0 = list(zip(columns[0:4], [0, 3, 4, 5])) |
||||
line1 = list(zip(columns[4:12], [i for i in range(0, 8)])) |
||||
line2 = list(zip(columns[12:19], [i for i in range(0, 7)])) |
||||
line3 = list(zip(columns[19:], [i for i in range(1, 6)])) |
||||
|
||||
|
||||
data_extractor = create_line_divider([18, 32, 50, 66, 84, 100, 117,132]) |
||||
for line in enumerate(lines): |
||||
slot1 = data_extractor(0, line[1], False) |
||||
if type(slot1) != str: |
||||
continue |
||||
if re.search(contract_number_regex, slot1) != None: |
||||
data_section = lines[line[0]-1:line[0]+3] |
||||
# There were issues were the IL Report would have random blank lines so that needs to be checked |
||||
# and adjusted for |
||||
# A dead give away of an empty line in a data section is a line without a '.' |
||||
# Check the first data line |
||||
if data_section[0].find(".") == -1: |
||||
# Move it back if empty |
||||
data_section[0] = lines[line[0]-2] |
||||
# Now we go through each relevant data line and make sure they're not blank |
||||
for ds in enumerate(data_section): |
||||
if ds[1].find(".") == -1: |
||||
if ds[0] < len(data_section) - 1: |
||||
for i in range(ds[0], len(data_section)-1): |
||||
# This allows us to move down all the data lines after a blank data line |
||||
data_section[i] = data_section[i+1] |
||||
# This handles the last data line which goes 'out-of-bounds' of the existing data selection |
||||
data_section[3] = lines[line[0]+3] |
||||
else: |
||||
data_section[3] = lines[line[0]+3] |
||||
# Now that the datasection is sorted we can extract the data |
||||
[extracted_data_dict[c[0]].append(data_extractor( |
||||
c[1], data_section[0], False)) for c in line0] |
||||
[extracted_data_dict[c[0]].append(data_extractor( |
||||
c[1], data_section[1], False)) for c in line1] |
||||
[extracted_data_dict[c[0]].append(data_extractor( |
||||
c[1], data_section[2], False)) for c in line2] |
||||
[extracted_data_dict[c[0]].append(data_extractor( |
||||
c[1], data_section[3], False)) for c in line3] |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
dataframe["LESSOR"] = dataframe["LEASE NUMBER"].apply(lambda con: con[0:3]) |
||||
dataframe = dataframe.replace("REVOLV", np.NaN) |
||||
dataframe = dataframe.replace("ING ACCOUNT", np.NaN) |
||||
dataframe = dataframe.replace("", np.NaN) |
||||
print(dataframe) |
||||
#dataframe.to_excel("test_niv.xlsx") |
||||
print("Dataframe complete") |
||||
print("Createing pivot...") |
||||
nums = ['RESIDUAL', |
||||
'UNEARN FIN', |
||||
'UNEARNED BLENDED', |
||||
'UNEARN RESID', |
||||
'SEC DEPOSIT', |
||||
'UNEARNED IDC', |
||||
'NET RESERVE', |
||||
'UNPAID INT', |
||||
'NET INV', |
||||
'BLEND NET INV', |
||||
'GROSS CONTRACT', |
||||
'PAYMENTS RCVD', |
||||
'REM RENT RCVB', |
||||
'LEASE PYMTS', |
||||
'UNEARN INC', |
||||
'TOTAL', |
||||
'CURR INT RCVB', |
||||
'PROV LOSS', |
||||
'CURR RENT RCVB', |
||||
'END DEPOSIT'] |
||||
for n in nums: |
||||
dataframe[n].astype("float",copy=False) |
||||
summary = pd.pivot_table(dataframe, |
||||
values=['CUSTOMER NAME', |
||||
'RESIDUAL', |
||||
'UNEARN FIN', |
||||
'UNEARNED BLENDED', |
||||
'UNEARN RESID', |
||||
'SEC DEPOSIT', |
||||
'UNEARNED IDC', |
||||
'NET RESERVE', |
||||
'UNPAID INT', |
||||
'NET INV', |
||||
'BLEND NET INV', |
||||
'GROSS CONTRACT', |
||||
'PAYMENTS RCVD', |
||||
'REM RENT RCVB', |
||||
'LEASE PYMTS', |
||||
'UNEARN INC', |
||||
'TOTAL', |
||||
'CURR INT RCVB', |
||||
'PROV LOSS', |
||||
'CURR RENT RCVB', |
||||
'END DEPOSIT', |
||||
'BAL REMAINING', |
||||
], |
||||
aggfunc={ |
||||
'CUSTOMER NAME': np.size, |
||||
'RESIDUAL': np.sum, |
||||
'UNEARN FIN': np.sum, |
||||
'UNEARNED BLENDED': np.sum, |
||||
'UNEARN RESID': np.sum, |
||||
'SEC DEPOSIT': np.sum, |
||||
'UNEARNED IDC': np.sum, |
||||
'NET RESERVE': np.sum, |
||||
'UNPAID INT': np.sum, |
||||
'NET INV': np.sum, |
||||
'BLEND NET INV': np.sum, |
||||
'GROSS CONTRACT': np.sum, |
||||
'PAYMENTS RCVD': np.sum, |
||||
'REM RENT RCVB': np.sum, |
||||
'LEASE PYMTS': np.sum, |
||||
'UNEARN INC': np.sum, |
||||
'TOTAL': np.sum, |
||||
'CURR INT RCVB': np.sum, |
||||
'PROV LOSS': np.sum, |
||||
'CURR RENT RCVB': np.sum, |
||||
'END DEPOSIT': np.sum, |
||||
'BAL REMAINING' : np.sum, |
||||
}, |
||||
|
||||
index="LESSOR") |
||||
print(summary) |
||||
print("Summary complete") |
||||
summary.rename(columns={"CUSTOMER NAME": "Contract Count"}, inplace=True) |
||||
summary = summary[['Contract Count', |
||||
'BAL REMAINING', |
||||
'RESIDUAL', |
||||
'UNEARN FIN', |
||||
'UNEARNED BLENDED', |
||||
'UNEARN RESID', |
||||
'SEC DEPOSIT', |
||||
'UNEARNED IDC', |
||||
'NET RESERVE', |
||||
'UNPAID INT', |
||||
'NET INV', |
||||
'BLEND NET INV', |
||||
'GROSS CONTRACT', |
||||
'PAYMENTS RCVD', |
||||
'REM RENT RCVB', |
||||
'LEASE PYMTS', |
||||
'UNEARN INC', |
||||
'TOTAL', |
||||
'CURR INT RCVB', |
||||
'PROV LOSS', |
||||
'CURR RENT RCVB', |
||||
'END DEPOSIT', |
||||
]] |
||||
dataframe = dataframe[['LESSOR', |
||||
'LEASE NUMBER', |
||||
'BAL REMAINING', |
||||
'RESIDUAL', |
||||
'UNEARN FIN', |
||||
'UNEARNED BLENDED', |
||||
'UNEARN RESID', |
||||
'SEC DEPOSIT', |
||||
'NET RESERVE', |
||||
'UNEARNED IDC', |
||||
'UNPAID INT', |
||||
'BLEND NET INV', |
||||
'NET INV', |
||||
'CUSTOMER NAME', |
||||
'GROSS CONTRACT', |
||||
'CURR RENT RCVB', |
||||
'END DEPOSIT', |
||||
'LEASE PYMTS', |
||||
'TOTAL', |
||||
'CONTRACT STAT', |
||||
'PAYMENTS RCVD', |
||||
'PROV LOSS', |
||||
'UNEARN INC', |
||||
'REM RENT RCVB', |
||||
'CURR INT RCVB', |
||||
]] |
||||
print("Attempting to save") |
||||
with pd.ExcelWriter(save_name) as writer: |
||||
dataframe.to_excel(writer, index=False, sheet_name="data") |
||||
summary.to_excel( |
||||
writer, index=True, sheet_name="Summary") |
||||
return dataframe |
||||
|
||||
def lockbox(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
"SEQ" : [], |
||||
"PYMT DATE" : [], |
||||
"INV NUM" : [], |
||||
"CHECK NUMBER" : [], |
||||
"PAYMENT AMOUNT" : [], |
||||
"NOTE" : [], |
||||
"IL SEQ" : [], |
||||
"CONTRACT NUM" : [], |
||||
"IL PAYMENT AMOUNT" : [], |
||||
"CUST NAME" : [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
data_extractor = create_line_divider([9,19,39,56,69,89,98,118]) |
||||
for line in enumerate(lines): |
||||
match = False |
||||
# Try to find the first SEQ # & a contract payment date e.i. ' 197 05/10/2022' |
||||
if re.match("(\s|\d){3}\d{1}\s{5}\d{2}/\d{2}/\d{4}", line[1]): |
||||
match = True |
||||
# Add all of the data points except customer name |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(0,len(columns)-1)] |
||||
# Check to see if this line contains only an infolease payment |
||||
# Some times there are multiple infolease payments for a single bank record |
||||
elif re.search(contract_number_regex, line[1]) != None: |
||||
match = True |
||||
# If there is then we can add the same data as the previous complete line |
||||
[extracted_data_dict[columns[c]].append(extracted_data_dict[columns[c]][-1]) for c in range(0,6)] |
||||
# Then add the new data for the infolease contract |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(6,len(columns)-1)] |
||||
# If we had a match we need a customer name to associate with it |
||||
# Sometimes these can appear on the next page hense the while loop searching for a match |
||||
if match: |
||||
# We can tell the cust name will be on the next page if the word "PAGE" appears three lines under the current line |
||||
# And the next line is blank |
||||
if (lines[line[0]+1].strip() == "") & (lines[line[0]+3].find("PAGE") != -1): |
||||
i = 0 |
||||
# Look for a bunch of whitespace then some writing |
||||
while not re.match("\s{98}.{34}", lines[line[0]+i]): |
||||
i +=1 |
||||
# Once we find it add the cust name to the dict (it's the only thing on the line) |
||||
extracted_data_dict["CUST NAME"].append(lines[line[0]+i].strip()) |
||||
# if the condition above isnt met then the cust name is on the next line (even if that line is blank) |
||||
else: |
||||
extracted_data_dict["CUST NAME"].append(lines[line[0]+1].strip()) |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
dataframe.to_excel(save_name, index=False) |
||||
return dataframe |
||||
|
||||
|
||||
def minv(report: str, save_name: str): |
||||
print("Started minv process") |
||||
lines = report.splitlines() |
||||
data_extractor = create_line_divider([15,32,52,71,83,107,116,128]) |
||||
extracted_data_dict = { |
||||
"ContractNumber" : [], |
||||
"UTAB_OIC_DUE" : [], |
||||
"RentalDue" : [], |
||||
"UTAB_OIC_PYMT" : [], |
||||
"ChargeType" : [], |
||||
"OutstandBalance" : [], |
||||
"BizSegment" : [], |
||||
"BookingDate" : [], |
||||
"Branch" : [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
for line in enumerate(lines): |
||||
if re.search(contract_number_regex, line[1]) != None: |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(0,len(columns))] |
||||
#All the list lengths need to be the same so if anything was missed it will fail to build |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
filtered = dataframe[(dataframe["BookingDate"] != dt.today().strftime("%m/%d/%Y")) & |
||||
((dataframe["RentalDue"] > 0) | ((dataframe["RentalDue"] == 0) & (dataframe["OutstandBalance"] > 100)))] |
||||
with open(save_name, 'w') as output: |
||||
add_contracts = [] |
||||
for contract in filtered['ContractNumber'].to_list(): |
||||
output.write(f"{contract}\n") if contract not in add_contracts else None |
||||
add_contracts.append(contract) |
||||
return filtered |
||||
|
||||
|
||||
# Good for PUB_WIRES, VMCC, PBP_EPAY, returned check |
||||
def payment_transactions(report: str, save_name: str): |
||||
|
||||
lines = report.splitlines() |
||||
data_extractor = create_line_divider([6,33,52,62,80,89,110,121]) |
||||
extracted_data_dict = { |
||||
'SEQ' : [], |
||||
'ACCOUNT NUMBER' : [], |
||||
'PYMT METHOD' : [], |
||||
'DATE RCVD' : [], |
||||
'AMOUNT' : [], |
||||
'REF NO': [], |
||||
'PAYMENT MEMO' : [], |
||||
'PYMT TYPE' : [], |
||||
'CHECK NO' : [], |
||||
'CUSTOMER NAME' : [], |
||||
'TRANSACTIONS NUM': [], |
||||
'INV NO' : [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
transaction_num_regex = "\d{8}" |
||||
for line in enumerate(lines): |
||||
slot1 = data_extractor(1,line[1],False) |
||||
if type(slot1) != str : continue |
||||
if (re.search(contract_number_regex, slot1) or re.search("\d{3}\.\d{4}\.\d{4}", slot1))!= None: |
||||
[extracted_data_dict[columns[c]].append(data_extractor(c, line[1])) for c in range(0,len(columns)-3)] |
||||
tnum_match = re.search(transaction_num_regex, lines[line[0]+1]) |
||||
if tnum_match: |
||||
tnum = lines[line[0]+1][tnum_match.start():tnum_match.end()] |
||||
else: |
||||
tnum = "" |
||||
extracted_data_dict["TRANSACTIONS NUM"].append(tnum) |
||||
cname = lines[line[0]+1][6:37].strip() |
||||
extracted_data_dict['CUSTOMER NAME'].append(cname) |
||||
inv_no = lines[line[0]+1][79:90].strip() |
||||
extracted_data_dict['INV NO'].append(inv_no) |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
print(dataframe) |
||||
print("Saving") |
||||
dataframe.to_excel(save_name, index=False) |
||||
print("Saved successfully") |
||||
return dataframe |
||||
|
||||
|
||||
def renewal_net_invest_trial_balance(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
data_extractor = create_line_divider([21, 29, 43, 58, 71, 88, 99, 113]) |
||||
extracted_data_dict = { |
||||
'CUSTOMER NAME': [], |
||||
'TYPE': [], |
||||
'GROSS RENEWAL': [], |
||||
'REMAINING BAL': [], |
||||
'FINANCED RES': [], |
||||
'REMAINING RES': [], |
||||
'LEASE PYMTS': [], |
||||
'CONTRACT NUMBER': [], |
||||
'RENEWAL': [], |
||||
'PAYMENTS RCVD': [], |
||||
'CUR RENT RCVB': [], |
||||
'UNEARNED RIN': [], |
||||
'SECURITY DEP': [], |
||||
'NET INVEST': [], |
||||
'UNEARN INCOME': [], |
||||
'TOTAL': [], |
||||
'REM RENT RCVB': [], |
||||
'UNPAID RES': [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
line0 = list(zip(columns[0:7], [0, 1, 2, 3, 4, 5, 7])) |
||||
line1 = list(zip(columns[7:16], [i for i in range(0, 9)])) |
||||
line2 = list(zip(columns[16:], [3, 4])) |
||||
|
||||
for line in enumerate(lines): |
||||
slot1 = data_extractor(0, line[1], False) |
||||
if type(slot1) != str: |
||||
continue |
||||
if re.search(contract_number_regex, slot1) != None: |
||||
data_section = lines[line[0]-1:line[0]+2] |
||||
# SEE net_invest_trial_balance FOR EXPLAINATION |
||||
if data_section[0].find(".") == -1: |
||||
data_section[0] = lines[line[0]-2] |
||||
for ds in enumerate(data_section): |
||||
if ds[1].find(".") == -1: |
||||
if ds[0] < len(data_section) - 1: |
||||
for i in range(ds[0], len(data_section)-1): |
||||
data_section[i] = data_section[i+1] |
||||
data_section[2] = lines[line[0]+2] |
||||
else: |
||||
data_section[2] = lines[line[0]+2] |
||||
|
||||
[extracted_data_dict[c[0]].append( |
||||
data_extractor(c[1], data_section[0])) for c in line0] |
||||
[extracted_data_dict[c[0]].append( |
||||
data_extractor(c[1], data_section[1])) for c in line1] |
||||
[extracted_data_dict[c[0]].append( |
||||
data_extractor(c[1], data_section[2])) for c in line2] |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
print("df created") |
||||
dataframe["Fund"] = dataframe["CONTRACT NUMBER"].apply( |
||||
lambda con_num: con_num[0:3]) |
||||
print("Fund added") |
||||
summary = pd.pivot_table(dataframe, |
||||
values=['CUSTOMER NAME', |
||||
"UNPAID RES", "REMAINING RES", "SECURITY DEP", 'GROSS RENEWAL', |
||||
"FINANCED RES", "LEASE PYMTS", "PAYMENTS RCVD", "NET INVEST", "TOTAL", |
||||
"CUR RENT RCVB", "UNEARNED RIN", "UNEARN INCOME", "REM RENT RCVB"], |
||||
aggfunc={ |
||||
'CUSTOMER NAME': np.size, |
||||
"UNPAID RES": np.sum, |
||||
"REMAINING RES": np.sum, |
||||
"SECURITY DEP": np.sum, |
||||
'GROSS RENEWAL': np.sum, |
||||
"FINANCED RES": np.sum, |
||||
"LEASE PYMTS": np.sum, |
||||
"PAYMENTS RCVD": np.sum, |
||||
"NET INVEST": np.sum, |
||||
"TOTAL": np.sum, |
||||
"CUR RENT RCVB": np.sum, |
||||
"UNEARNED RIN": np.sum, |
||||
"UNEARN INCOME": np.sum, |
||||
"REM RENT RCVB": np.sum |
||||
}, |
||||
|
||||
index="Fund") |
||||
print("Summary complete") |
||||
summary.rename(columns={"CUSTOMER NAME": "Renewal Count"}, inplace=True) |
||||
print("Remaned Renewal count") |
||||
summary = summary[['Renewal Count', |
||||
'UNPAID RES', |
||||
'REMAINING RES', |
||||
'SECURITY DEP', |
||||
'GROSS RENEWAL', |
||||
'REMAINING RES', |
||||
'FINANCED RES', |
||||
'LEASE PYMTS', |
||||
'PAYMENTS RCVD', |
||||
'NET INVEST', |
||||
'TOTAL', |
||||
'CUR RENT RCVB', |
||||
'UNEARNED RIN', |
||||
'UNEARN INCOME', |
||||
'REM RENT RCVB', |
||||
]] |
||||
print("Reordered sum") |
||||
dataframe = dataframe[['Fund', |
||||
'CONTRACT NUMBER', |
||||
'TYPE', |
||||
'RENEWAL', |
||||
'UNPAID RES', |
||||
'REMAINING RES', |
||||
'SECURITY DEP', |
||||
'GROSS RENEWAL', |
||||
'FINANCED RES', |
||||
'PAYMENTS RCVD', |
||||
'NET INVEST', |
||||
'REMAINING BAL', |
||||
'CUSTOMER NAME', |
||||
'LEASE PYMTS', |
||||
'CUR RENT RCVB', |
||||
'UNEARNED RIN', |
||||
'UNEARN INCOME', |
||||
'TOTAL', |
||||
'REM RENT RCVB', |
||||
]] |
||||
print("dfs rearragned | Savings") |
||||
with pd.ExcelWriter(save_name) as writer: |
||||
dataframe.to_excel(writer, index=False, sheet_name="data") |
||||
summary.to_excel( |
||||
writer, index=True, sheet_name="Summary") |
||||
return dataframe |
||||
|
||||
|
||||
def unapplied(report: str, save_name: str): |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
"Trans Num": [], |
||||
"ContractNumber": [], |
||||
"CheckNum": [], |
||||
"Date RCVD": [], |
||||
"Asset ID": [], |
||||
"Reversed Amt": [], |
||||
"Branch": [], |
||||
"Unapplied Susp Acct": [], |
||||
"PaymentMemo": [], |
||||
"Payers Name": [], |
||||
"Batch Num": [], |
||||
"Posting Date": [], |
||||
"Unapplied Amt": [], |
||||
"Rev Post Date": [], |
||||
"Ref Num": [], |
||||
"Check Amt": [], |
||||
"Reason Code": [], |
||||
} |
||||
columns = list(extracted_data_dict.keys()) |
||||
# Iterate through the lines one at a time to look for relavant data |
||||
# Use enumerate so that we know which line we're currently working on |
||||
# this allows us to also work in the 'report' structure so that we can |
||||
# grab the customer name from the line proceding the data |
||||
data_extractor = create_line_divider([9, 29, 38, 50, 65, 80, 89, 108]) |
||||
bank_num_reg = ".*\s*\d\d\d\.\d\d\s.*PAGE" |
||||
#current_bank_num = np.NaN |
||||
#bank_nums = [] |
||||
trans_num = "\d{7}" |
||||
for line in enumerate(lines): |
||||
if (re.search("\d{7}", str(data_extractor(0, line[1], debug=False))) != None) &\ |
||||
(re.search("\d{2}/\d{2}/\d{4}", str(data_extractor(3, line[1], debug=False))) != None): |
||||
[extracted_data_dict[columns[c]].append( |
||||
data_extractor(c, line[1])) for c in range(0, 9)] |
||||
[extracted_data_dict[columns[8+c]].append(data_extractor( |
||||
c, lines[line[0]+1])) for c in range(1, len(columns)-8)] |
||||
#bank_nums.append(current_bank_num) |
||||
#elif re.search(bank_num_reg, line[1]) != None: |
||||
#current_bank_num = re.search("\d\d\d\.\d\d", line[1]).group(0) |
||||
|
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
dataframe["ReverseAmt"] = [np.NaN for _ in range(0, len(dataframe))] |
||||
#dataframe["Bank_"] |
||||
dataframe = dataframe[[ |
||||
'Trans Num', |
||||
'ContractNumber', |
||||
'CheckNum', |
||||
'Date RCVD', |
||||
'Payers Name', |
||||
'Unapplied Amt', |
||||
'Reason Code', |
||||
'Batch Num', |
||||
'Posting Date', |
||||
'Asset ID', |
||||
'Rev Post Date', |
||||
'ReverseAmt', |
||||
'Branch', |
||||
'Ref Num', |
||||
'Unapplied Susp Acct', |
||||
'PaymentMemo', |
||||
'Check Amt', |
||||
]] |
||||
|
||||
dataframe.to_excel(save_name, index=False) |
||||
print(dataframe) |
||||
return dataframe |
||||
|
||||
def pastdue(report: str, save_name: str): |
||||
print("Running past due") |
||||
lines = report.splitlines() |
||||
extracted_data_dict = { |
||||
"Contract Number": [], |
||||
"Right 11": [], |
||||
"Past Due Rental": [], |
||||
"Current Rent": [], |
||||
"Cust Cred Act": [], |
||||
"Cust Name": [], |
||||
"Branch": [], |
||||
"Blend NIV": [], |
||||
"Delinq Code": [], |
||||
"Pymt Option": [], |
||||
"Bank Num": [], |
||||
"Account Num": [], |
||||
"Due Day": [], |
||||
"LEAD Days": [], |
||||
"Invoice Lead Days": [], |
||||
"ACH LEAD Days": [], |
||||
"Renewal": [], |
||||
"Follow Up Code": [], |
||||
} |
||||
# WIll need 'right 11' later |
||||
columns = list(extracted_data_dict.keys()) |
||||
# These are the line spaces where each column is held |
||||
slots = [(0,16), (5,16),(389,405),(126,141),(16,36),(37,67),(68,74),(75,93),(94,111),(168,180),\ |
||||
(190,204),(204,225), (242,253), (225,241), (436,444), (445,461), (462,469), (470,478)] |
||||
for line in enumerate(lines): |
||||
if re.search(contract_number_regex, line[1]) != None: |
||||
# goes through the column names (by number) then gets the charcter slot (start and end) |
||||
[extracted_data_dict[columns[c]].append((line[1][slots[c][0]:slots[c][1]]).strip()) for c in range(0, len(columns))] |
||||
# This regex finds lines with only a name in them | (blank in the beginig then atleast one character) |
||||
elif re.search("\s{38}\w+", line[1]) != None: |
||||
extracted_data_dict["Cust Name"][-1] = (extracted_data_dict["Cust Name"][-1] + line[1][37:67]).strip() |
||||
dataframe = pd.DataFrame(extracted_data_dict) |
||||
dataframe = dataframe.astype( |
||||
{"Past Due Rental": "float", "Current Rent": "float", "Branch": "int32", |
||||
"Blend NIV": "float", "Delinq Code": "int32", "Due Day":"int32", "Invoice LEAD Days": "int32", "ACH LEAD Days": "int32" |
||||
}, errors="ignore" ) |
||||
dataframe.to_excel(save_name, index=False) |
||||
return dataframe |
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 477 B |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 819 B |
|
After Width: | Height: | Size: 512 B |
|
After Width: | Height: | Size: 568 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
@ -0,0 +1,197 @@ |
||||
# -*- coding: utf-8 -*- |
||||
|
||||
# Form implementation generated from reading ui file 'ui/default_locations.ui' |
||||
# |
||||
# Created by: PyQt5 UI code generator 5.15.7 |
||||
# |
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is |
||||
# run again. Do not edit this file unless you know what you are doing. |
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets |
||||
|
||||
# V3.0 | 08/22/22 |
||||
|
||||
class Ui_defaultLocationDiag(object): |
||||
def setupUi(self, defaultLocationDiag): |
||||
defaultLocationDiag.setObjectName("defaultLocationDiag") |
||||
defaultLocationDiag.setWindowModality(QtCore.Qt.NonModal) |
||||
defaultLocationDiag.resize(954, 525) |
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) |
||||
sizePolicy.setHorizontalStretch(0) |
||||
sizePolicy.setVerticalStretch(0) |
||||
sizePolicy.setHeightForWidth(defaultLocationDiag.sizePolicy().hasHeightForWidth()) |
||||
defaultLocationDiag.setSizePolicy(sizePolicy) |
||||
icon = QtGui.QIcon() |
||||
icon.addPixmap(QtGui.QPixmap("ui/extract.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) |
||||
defaultLocationDiag.setWindowIcon(icon) |
||||
self.gridLayout_2 = QtWidgets.QGridLayout(defaultLocationDiag) |
||||
self.gridLayout_2.setObjectName("gridLayout_2") |
||||
self.gridLayout = QtWidgets.QGridLayout() |
||||
self.gridLayout.setObjectName("gridLayout") |
||||
self.label = QtWidgets.QLabel(defaultLocationDiag) |
||||
font = QtGui.QFont() |
||||
font.setPointSize(14) |
||||
font.setBold(True) |
||||
font.setWeight(75) |
||||
self.label.setFont(font) |
||||
self.label.setObjectName("label") |
||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 2) |
||||
self.label_2 = QtWidgets.QLabel(defaultLocationDiag) |
||||
self.label_2.setWordWrap(True) |
||||
self.label_2.setObjectName("label_2") |
||||
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 4) |
||||
self.label_3 = QtWidgets.QLabel(defaultLocationDiag) |
||||
self.label_3.setWordWrap(True) |
||||
self.label_3.setObjectName("label_3") |
||||
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 4) |
||||
self.label_4 = QtWidgets.QLabel(defaultLocationDiag) |
||||
font = QtGui.QFont() |
||||
font.setItalic(True) |
||||
self.label_4.setFont(font) |
||||
self.label_4.setWordWrap(True) |
||||
self.label_4.setObjectName("label_4") |
||||
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 4) |
||||
self.label_5 = QtWidgets.QLabel(defaultLocationDiag) |
||||
font = QtGui.QFont() |
||||
font.setBold(True) |
||||
font.setWeight(75) |
||||
self.label_5.setFont(font) |
||||
self.label_5.setObjectName("label_5") |
||||
self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1) |
||||
spacerItem = QtWidgets.QSpacerItem(588, 13, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) |
||||
self.gridLayout.addItem(spacerItem, 4, 1, 1, 2) |
||||
self.label_6 = QtWidgets.QLabel(defaultLocationDiag) |
||||
font = QtGui.QFont() |
||||
font.setBold(True) |
||||
font.setWeight(75) |
||||
self.label_6.setFont(font) |
||||
self.label_6.setObjectName("label_6") |
||||
self.gridLayout.addWidget(self.label_6, 4, 3, 1, 1) |
||||
self.ach_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.ach_B.setObjectName("ach_B") |
||||
self.gridLayout.addWidget(self.ach_B, 5, 0, 1, 1) |
||||
self.ach_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.ach_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.ach_LE.setObjectName("ach_LE") |
||||
self.gridLayout.addWidget(self.ach_LE, 5, 1, 1, 1) |
||||
self.ach_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.ach_FN.setObjectName("ach_FN") |
||||
self.gridLayout.addWidget(self.ach_FN, 5, 2, 1, 2) |
||||
self.disp_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.disp_B.setObjectName("disp_B") |
||||
self.gridLayout.addWidget(self.disp_B, 6, 0, 1, 1) |
||||
self.disp_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.disp_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.disp_LE.setObjectName("disp_LE") |
||||
self.gridLayout.addWidget(self.disp_LE, 6, 1, 1, 1) |
||||
self.disp_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.disp_FN.setObjectName("disp_FN") |
||||
self.gridLayout.addWidget(self.disp_FN, 6, 2, 1, 2) |
||||
self.gl_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.gl_B.setObjectName("gl_B") |
||||
self.gridLayout.addWidget(self.gl_B, 7, 0, 1, 1) |
||||
self.gl_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.gl_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.gl_LE.setObjectName("gl_LE") |
||||
self.gridLayout.addWidget(self.gl_LE, 7, 1, 1, 1) |
||||
self.gl_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.gl_FN.setObjectName("gl_FN") |
||||
self.gridLayout.addWidget(self.gl_FN, 7, 2, 1, 2) |
||||
self.lb_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.lb_B.setObjectName("lb_B") |
||||
self.gridLayout.addWidget(self.lb_B, 8, 0, 1, 1) |
||||
self.lb_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.lb_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.lb_LE.setObjectName("lb_LE") |
||||
self.gridLayout.addWidget(self.lb_LE, 8, 1, 1, 1) |
||||
self.lb_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.lb_FN.setObjectName("lb_FN") |
||||
self.gridLayout.addWidget(self.lb_FN, 8, 2, 1, 2) |
||||
self.minv_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.minv_B.setObjectName("minv_B") |
||||
self.gridLayout.addWidget(self.minv_B, 9, 0, 1, 1) |
||||
self.minv_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.minv_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.minv_LE.setObjectName("minv_LE") |
||||
self.gridLayout.addWidget(self.minv_LE, 9, 1, 1, 1) |
||||
self.minv_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.minv_FN.setObjectName("minv_FN") |
||||
self.gridLayout.addWidget(self.minv_FN, 9, 2, 1, 2) |
||||
self.niv_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.niv_B.setObjectName("niv_B") |
||||
self.gridLayout.addWidget(self.niv_B, 10, 0, 1, 1) |
||||
self.niv_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.niv_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.niv_LE.setObjectName("niv_LE") |
||||
self.gridLayout.addWidget(self.niv_LE, 10, 1, 1, 1) |
||||
self.niv_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.niv_FN.setObjectName("niv_FN") |
||||
self.gridLayout.addWidget(self.niv_FN, 10, 2, 1, 2) |
||||
self.ren_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.ren_B.setObjectName("ren_B") |
||||
self.gridLayout.addWidget(self.ren_B, 11, 0, 1, 1) |
||||
self.ren_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.ren_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.ren_LE.setObjectName("ren_LE") |
||||
self.gridLayout.addWidget(self.ren_LE, 11, 1, 1, 1) |
||||
self.ren_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.ren_FN.setObjectName("ren_FN") |
||||
self.gridLayout.addWidget(self.ren_FN, 11, 2, 1, 2) |
||||
self.pymt_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.pymt_B.setObjectName("pymt_B") |
||||
self.gridLayout.addWidget(self.pymt_B, 12, 0, 1, 1) |
||||
self.pymt_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.pymt_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.pymt_LE.setObjectName("pymt_LE") |
||||
self.gridLayout.addWidget(self.pymt_LE, 12, 1, 1, 1) |
||||
self.pymt_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.pymt_FN.setObjectName("pymt_FN") |
||||
self.gridLayout.addWidget(self.pymt_FN, 12, 2, 1, 2) |
||||
self.uap_B = QtWidgets.QPushButton(defaultLocationDiag) |
||||
self.uap_B.setObjectName("uap_B") |
||||
self.gridLayout.addWidget(self.uap_B, 13, 0, 1, 1) |
||||
self.uap_LE = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.uap_LE.setMinimumSize(QtCore.QSize(581, 0)) |
||||
self.uap_LE.setObjectName("uap_LE") |
||||
self.gridLayout.addWidget(self.uap_LE, 13, 1, 1, 1) |
||||
self.uap_FN = QtWidgets.QLineEdit(defaultLocationDiag) |
||||
self.uap_FN.setObjectName("uap_FN") |
||||
self.gridLayout.addWidget(self.uap_FN, 13, 2, 1, 2) |
||||
self.optionBBox = QtWidgets.QDialogButtonBox(defaultLocationDiag) |
||||
self.optionBBox.setOrientation(QtCore.Qt.Horizontal) |
||||
self.optionBBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Save) |
||||
self.optionBBox.setObjectName("optionBBox") |
||||
self.gridLayout.addWidget(self.optionBBox, 14, 3, 1, 1) |
||||
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) |
||||
|
||||
self.retranslateUi(defaultLocationDiag) |
||||
self.optionBBox.accepted.connect(defaultLocationDiag.accept) # type: ignore |
||||
self.optionBBox.rejected.connect(defaultLocationDiag.reject) # type: ignore |
||||
QtCore.QMetaObject.connectSlotsByName(defaultLocationDiag) |
||||
|
||||
def retranslateUi(self, defaultLocationDiag): |
||||
_translate = QtCore.QCoreApplication.translate |
||||
defaultLocationDiag.setWindowTitle(_translate("defaultLocationDiag", "Default locations")) |
||||
self.label.setText(_translate("defaultLocationDiag", "Default File Locations:")) |
||||
self.label_2.setText(_translate("defaultLocationDiag", "Here you can determine which folders will be automatically be opened for each report type. You can even specify which file should be defaulted to.")) |
||||
self.label_3.setText(_translate("defaultLocationDiag", "Use the following inline formaters to specify dates that will be automatically filled with the current date when running the program:")) |
||||
self.label_4.setText(_translate("defaultLocationDiag", "Day of Month {d} | Month of Year {m} | Year {y} | Note that using multiple characters equates to representing with that number of digits so: {dd} == 07 or {mm} == 02 or {yy} == 22 or {yyyy} == 2022")) |
||||
self.label_5.setText(_translate("defaultLocationDiag", "Folder Path")) |
||||
self.label_6.setToolTip(_translate("defaultLocationDiag", "<html><head/><body><p>Default file name to look for. Don\'t foreget the file type (.xlsx)</p></body></html>")) |
||||
self.label_6.setText(_translate("defaultLocationDiag", "File Name")) |
||||
self.ach_B.setText(_translate("defaultLocationDiag", "Edit ACH")) |
||||
self.disp_B.setText(_translate("defaultLocationDiag", "Edit Dispostition")) |
||||
self.gl_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Gain Loss</p></body></html>")) |
||||
self.gl_B.setText(_translate("defaultLocationDiag", "Edit Gain Loss")) |
||||
self.lb_B.setText(_translate("defaultLocationDiag", "Edit Lock Box")) |
||||
self.minv_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Good for Manual Invoicing</p></body></html>")) |
||||
self.minv_B.setText(_translate("defaultLocationDiag", "Edit Manual Invoice")) |
||||
self.niv_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Good for: Net Investment reports (loan and after)</p></body></html>")) |
||||
self.niv_B.setText(_translate("defaultLocationDiag", "Edit Net Inv")) |
||||
self.ren_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Renewal Net Investment Trial Balance</p></body></html>")) |
||||
self.ren_B.setText(_translate("defaultLocationDiag", "Edit Renewl NIV")) |
||||
self.pymt_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Payment transactions:</p><p>- Wires, VMCC, PBP. EPAY, Returned Check</p></body></html>")) |
||||
self.pymt_B.setText(_translate("defaultLocationDiag", "Edit Payments")) |
||||
self.uap_B.setWhatsThis(_translate("defaultLocationDiag", "<html><head/><body><p>Unapplied</p></body></html>")) |
||||
self.uap_B.setText(_translate("defaultLocationDiag", "Edit Unaplied")) |
||||
@ -0,0 +1,410 @@ |
||||
from ILE_MainWindow import Ui_MainWindow |
||||
from defLocs_Window2 import Ui_defaultLocationDiag |
||||
import sys |
||||
import os |
||||
import pandas as pd |
||||
import json |
||||
from PyQt5 import QtWidgets |
||||
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow, QPushButton |
||||
from datetime import datetime as dt |
||||
import ILExtract as ilx |
||||
|
||||
print("Starting GUI... will anything else print?") |
||||
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): |
||||
def __init__(self, *args, obj=None, **kwargs): |
||||
super(MainWindow, self).__init__(*args, **kwargs) |
||||
self.setupUi(self) |
||||
self.setAcceptDrops(True) |
||||
|
||||
self.inputFile = "" |
||||
self.outputFile = "" |
||||
self.inputCustomized = False |
||||
with open("settings.json") as s: |
||||
self.settings = json.loads(s.read()) |
||||
self.curReportType = "ach" |
||||
self.extract_function = ilx.ach |
||||
|
||||
cbs = self.copyButton.objectName() |
||||
self.report_type_change() |
||||
# Actions |
||||
self.inputFileButton.clicked.connect(self.getfile) |
||||
self.outputFileButton.clicked.connect(self.setOutput) |
||||
self.processReportButton.clicked.connect(self.process_selection) |
||||
self.copyButton.clicked.connect(self.to_clipboard) |
||||
self.reportTypeCB.currentTextChanged.connect(self.report_type_change) |
||||
self.openFolderButton.clicked.connect(lambda: self.openWithDefaultApp(self.outputFile.removesuffix(self.outputFile.split('/')[-1]))) |
||||
self.openExcelButton.clicked.connect(lambda: self.openWithDefaultApp(self.outputFile)) |
||||
self.action_Default_Locations.triggered.connect(self.df) |
||||
self.inputFilePreview.setText("Drag & Drop Input file here!") |
||||
|
||||
def set_input(self, ifile): |
||||
with open(ifile, errors="replace") as inF: |
||||
txt = inF.read() |
||||
self.inputFilePreview.setText(txt) |
||||
self.inputFileLE.setText(ifile) |
||||
self.inputFile = ifile |
||||
# This gets the actual file name |
||||
inFileEnd = ifile.split('/')[-1] |
||||
# Takes just the root of the input file |
||||
outputRoot = self.inputFile.removesuffix(inFileEnd) |
||||
# Automatically sets output to be in the same file as input, with a naming scheme |
||||
# The report type selected in the combo box will dictate the naming |
||||
if self.reportTypeCB.currentText() == "Minv_C": |
||||
self.outputFile = f"{outputRoot}{self.reportTypeCB.currentText()}_{dt.now().strftime('%Y%m%d_%H%M')}.txt" |
||||
else: |
||||
self.outputFile = f"{outputRoot}{self.reportTypeCB.currentText().replace('/','')}_{dt.now().strftime('%Y%m%d_%H%M')}.xlsx" |
||||
self.outputFileLE.setText(self.outputFile) |
||||
self.inputCustomized = True |
||||
self.openExcelButton.setEnabled(False) |
||||
self.copyButton.setEnabled(False) |
||||
self.openFolderButton.setEnabled(True) |
||||
# Enables the process button |
||||
self.check_ready_to_process() |
||||
|
||||
def getfile(self): |
||||
inFile = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file') |
||||
if inFile[0] == '': |
||||
return 1 |
||||
else: |
||||
self.set_input(inFile[0]) |
||||
|
||||
def df(self): |
||||
dlg = defLocWindow(self) |
||||
dlg.exec() |
||||
with open("settings.json") as s: |
||||
self.settings = json.loads(s.read()) |
||||
|
||||
def dragEnterEvent(self, event): |
||||
if event.mimeData().hasUrls(): |
||||
event.accept() |
||||
else: |
||||
event.ignore() |
||||
|
||||
def dropEvent(self, event): |
||||
file = [u.toLocalFile() for u in event.mimeData().urls()][0] |
||||
print(file) |
||||
self.set_input(file) |
||||
|
||||
def setOutput(self): |
||||
# This allows the user to change the automatic naming and location |
||||
outFile = QtWidgets.QFileDialog.getSaveFileName(self, "Output file name") |
||||
if outFile[0] == '': return '' |
||||
if self.reportTypeCB.currentText() == "Minv_C": |
||||
self.outputFileLE.setText(f"{outFile[0]}__{dt.now().strftime('%Y%m%d_%H_%M')}.txt") |
||||
else: |
||||
self.outputFileLE.setText(f"{outFile[0]}__{dt.now().strftime('%Y%m%d_%H_%M')}.xlsx") |
||||
print(f"Output: {outFile}") |
||||
self.outputFile = f"{outFile[0]}__{dt.now().strftime('%Y%m%d_%H_%M')}.xlsx" |
||||
self.check_ready_to_process() |
||||
|
||||
def check_ready_to_process(self): |
||||
# Makes sure there is an input and output selected before allowing processing |
||||
rtp = True if ((self.inputFile != "") & (self.outputFile != "")) else False |
||||
if rtp : |
||||
self.processReportButton.setEnabled(True) |
||||
if self.outputFile == "": |
||||
self.openFolderButton.setEnabled(False) |
||||
|
||||
def process_selection(self): |
||||
print("Processing selection...") |
||||
self.inputFilePreview.setText("Processing file...") |
||||
# If only this was python 3.10 and we could use switch statments |
||||
# but this should get the job done |
||||
#try: |
||||
# This is where the actual processing happens |
||||
# We create an ILReport object and pass in the nessecary information |
||||
print(self.inputFile) |
||||
print(self.outputFile) |
||||
dataframe = ilx.ILReport( |
||||
location= self.inputFile, |
||||
extraction_function=self.extract_function, |
||||
output_location=self.outputFile, |
||||
).process() |
||||
# The text preview box can have trouble loading the larger dataframes so |
||||
# they are trimmed to 500 so that the users can see if anything got messed up |
||||
smallDF = dataframe.iloc[0:500,:] |
||||
self.inputFilePreview.setText(smallDF.to_html(index=False)) |
||||
#except: |
||||
# error = QtWidgets.QMessageBox() |
||||
# error.setWindowTitle('Error Processing File!') |
||||
# error.setText(f"Unable to process {self.inputFile}!\nPlease check input file!") |
||||
self.openExcelButton.setEnabled(True) |
||||
self.copyButton.setEnabled(True) |
||||
self.checked_for_saved() |
||||
self.openFolderButton.setEnabled(True) |
||||
self.inputCustomized = False |
||||
|
||||
def preview_report(self): |
||||
df = pd.read_excel(self.outputFile) |
||||
self.inputFilePreview.setText(df.to_html()) |
||||
|
||||
def to_clipboard(self): |
||||
df = pd.read_excel(self.outputFile) |
||||
df.to_clipboard(excel=True) |
||||
|
||||
def openFolder(self): |
||||
outputRoot = self.outputFile.removesuffix(self.outputFile.split('/')[-1]) |
||||
os.startfile(outputRoot) |
||||
|
||||
def openWithDefaultApp(self, item): |
||||
print(item) |
||||
outputRoot = self.outputFile.removesuffix(self.outputFile.split('/')[-1]) |
||||
os.startfile(item) |
||||
|
||||
def checked_for_saved(self): |
||||
if self.settings["defaultLocations"][self.curReportType]["dir"] == '': |
||||
self.settings["defaultLocations"][self.curReportType]["dir"] = ('/').join(self.inputFile.split('/')[:-1]) |
||||
with open('settings.json', 'w') as s: |
||||
json.dump(self.settings, s) |
||||
|
||||
def report_type_change(self): |
||||
# Adjust the report type according to the combo box |
||||
# This will be used in settings the the extract function and determining file locations |
||||
self.processReportButton.setEnabled(False) |
||||
if self.reportTypeCB.currentText() == "ACH": |
||||
self.curReportType = "ach" |
||||
self.extract_function = ilx.ach |
||||
elif self.reportTypeCB.currentText() == "Disposition": |
||||
self.curReportType = "disp" |
||||
self.extract_function = ilx.disposition |
||||
elif self.reportTypeCB.currentText() == "Gain Loss": |
||||
self.curReportType = "gl" |
||||
self.extract_function = ilx.gainloss |
||||
elif self.reportTypeCB.currentText() == "Lock Box": |
||||
self.curReportType = "lb" |
||||
self.extract_function = ilx.lockbox |
||||
elif self.reportTypeCB.currentText() == "Minv_C": |
||||
self.curReportType = "minv" |
||||
self.extract_function = ilx.minv |
||||
elif self.reportTypeCB.currentText() == "Net Inv. Loans": |
||||
self.curReportType = "niv" |
||||
self.extract_function = ilx.net_invest_trial_balance |
||||
elif self.reportTypeCB.currentText() == "NI Renewal": |
||||
self.curReportType = "ren" |
||||
self.extract_function = ilx.renewal_net_invest_trial_balance |
||||
elif self.reportTypeCB.currentText() == "NIV After": |
||||
self.curReportType = "niv" |
||||
self.extract_function = ilx.net_invest_trial_balance |
||||
elif self.reportTypeCB.currentText() == "PBP / Epay": |
||||
self.curReportType = "pymt" |
||||
self.extract_function = ilx.payment_transactions |
||||
elif self.reportTypeCB.currentText() == "Unapplied": |
||||
self.curReportType = "uap" |
||||
self.extract_function = ilx.unapplied |
||||
elif self.reportTypeCB.currentText() == "Past Due": |
||||
self.curReportType = "pastdue" |
||||
self.extract_function = ilx.pastdue |
||||
elif self.reportTypeCB.currentText() == "VMCC": |
||||
self.curReportType = "pymt" |
||||
self.extract_function = ilx.payment_transactions |
||||
elif self.reportTypeCB.currentText() == "Wires": |
||||
self.curReportType = "pymt" |
||||
self.extract_function = ilx.payment_transactions |
||||
elif self.reportTypeCB.currentText() == "Returned Check": |
||||
self.curReportType = "pymt" |
||||
self.extract_function = ilx.payment_transactions |
||||
inputRoot = self.settings["defaultLocations"][self.curReportType]["dir"]\ |
||||
.replace("{dd}",dt.now().strftime('%d'))\ |
||||
.replace("{mm}",dt.now().strftime('%m'))\ |
||||
.replace("{yyyy}",dt.now().strftime('%Y')).replace("{yy}",dt.now().strftime('%y')) |
||||
inputFile = self.settings["defaultLocations"][self.curReportType]["fn"]\ |
||||
.replace("{dd}",dt.now().strftime('%d'))\ |
||||
.replace("{mm}",dt.now().strftime('%m'))\ |
||||
.replace("{yyyy}",dt.now().strftime('%Y')).replace("{yy}",dt.now().strftime('%y')) |
||||
self.inputFile = f"{inputRoot}/{inputFile}" if (inputFile != '') else inputRoot |
||||
self.inputFileLE.setText(self.inputFile) |
||||
# Automatically sets output to be in the same file as input, with a naming scheme |
||||
# The report type selected in the combo box will dictate the naming |
||||
if self.inputFile == "": |
||||
outputroot = ('/').join(self.inputFileLE.text().split('/')[:-1]) |
||||
else: |
||||
outputroot = inputRoot + '/' |
||||
if self.curReportType == "minv": |
||||
self.outputFile = f"{outputroot}{self.reportTypeCB.currentText()}_{dt.now().strftime('%Y%m%d_%H%M')}.txt" |
||||
else: |
||||
self.outputFile = f"{outputroot}{self.reportTypeCB.currentText().replace('/','')}_{dt.now().strftime('%Y%m%d_%H%M')}.xlsx" |
||||
self.outputFileLE.setText(self.outputFile) |
||||
self.openExcelButton.setEnabled(False) |
||||
self.copyButton.setEnabled(False) |
||||
self.openFolderButton.setEnabled(True) |
||||
print(self.inputFile) |
||||
print(self.outputFile) |
||||
self.check_ready_to_process() |
||||
|
||||
class defLocWindow(QtWidgets.QDialog): |
||||
def __init__(self, parent=None): |
||||
super().__init__(parent) |
||||
# Create an instance of the GUI |
||||
self.ui = Ui_defaultLocationDiag() |
||||
# Run the .setupUi() method to show the GUI |
||||
self.ui.setupUi(self) |
||||
with open("settings.json") as s: |
||||
self.settings = json.loads(s.read()) |
||||
|
||||
self.load_user_settings() |
||||
|
||||
# Add dest folder buttons |
||||
# Lambdas are used to create anon functions to that they don't execute at init |
||||
self.ui.ach_B.clicked.connect(lambda : self.add_defloc(self.ui.ach_B.objectName(), True)) |
||||
self.ui.disp_B.clicked.connect(lambda : self.add_defloc(self.ui.disp_B.objectName(), True)) |
||||
self.ui.gl_B.clicked.connect(lambda : self.add_defloc(self.ui.gl_B.objectName(), True)) |
||||
self.ui.lb_B.clicked.connect(lambda : self.add_defloc(self.ui.lb_B.objectName(), True)) |
||||
self.ui.minv_B.clicked.connect(lambda : self.add_defloc(self.ui.minv_B.objectName(), True)) |
||||
self.ui.niv_B.clicked.connect(lambda : self.add_defloc(self.ui.niv_B.objectName(), True)) |
||||
self.ui.ren_B.clicked.connect(lambda : self.add_defloc(self.ui.ren_B.objectName(), True)) |
||||
self.ui.pymt_B.clicked.connect(lambda : self.add_defloc(self.ui.pymt_B.objectName(), True)) |
||||
self.ui.uap_B.clicked.connect(lambda : self.add_defloc(self.ui.uap_B.objectName(), True)) |
||||
# Text Changes |
||||
self.ui.ach_LE.textChanged.connect(lambda : self.add_defloc(self.ui.ach_B.objectName(), False)) |
||||
self.ui.disp_LE.textChanged.connect(lambda : self.add_defloc(self.ui.disp_B.objectName(), False)) |
||||
self.ui.gl_LE.textChanged.connect(lambda : self.add_defloc(self.ui.gl_B.objectName(), False)) |
||||
self.ui.lb_LE.textChanged.connect(lambda : self.add_defloc(self.ui.lb_B.objectName(), False)) |
||||
self.ui.minv_LE.textChanged.connect(lambda : self.add_defloc(self.ui.minv_B.objectName(), False)) |
||||
self.ui.niv_LE.textChanged.connect(lambda : self.add_defloc(self.ui.niv_B.objectName(), False)) |
||||
self.ui.ren_LE.textChanged.connect(lambda : self.add_defloc(self.ui.ren_B.objectName(), False)) |
||||
self.ui.pymt_LE.textChanged.connect(lambda : self.add_defloc(self.ui.pymt_B.objectName(), False)) |
||||
self.ui.uap_LE.textChanged.connect(lambda : self.add_defloc(self.ui.uap_B.objectName(), False)) |
||||
|
||||
self.ui.ach_FN.textChanged.connect(lambda : self.add_fn(self.ui.ach_FN.objectName())) |
||||
self.ui.disp_FN.textChanged.connect(lambda : self.add_fn(self.ui.disp_FN.objectName())) |
||||
self.ui.gl_FN.textChanged.connect(lambda : self.add_fn(self.ui.gl_FN.objectName())) |
||||
self.ui.lb_FN.textChanged.connect(lambda : self.add_fn(self.ui.lb_FN.objectName())) |
||||
self.ui.minv_FN.textChanged.connect(lambda : self.add_fn(self.ui.minv_FN.objectName())) |
||||
self.ui.niv_FN.textChanged.connect(lambda : self.add_fn(self.ui.niv_FN.objectName())) |
||||
self.ui.ren_FN.textChanged.connect(lambda : self.add_fn(self.ui.ren_FN.objectName())) |
||||
self.ui.pymt_FN.textChanged.connect(lambda : self.add_fn(self.ui.pymt_FN.objectName())) |
||||
self.ui.uap_FN.textChanged.connect(lambda : self.add_fn(self.ui.uap_FN.objectName())) |
||||
|
||||
self.ui.optionBBox.accepted.connect(self.save_changes) |
||||
|
||||
def add_defloc(self, button_name, use_filebrowser: bool): |
||||
folder = QtWidgets.QFileDialog.getExistingDirectory() if use_filebrowser else None |
||||
if folder == '': |
||||
use_filebrowser = False |
||||
report_type = button_name.split('_')[0] |
||||
if report_type == "ach": |
||||
if use_filebrowser: |
||||
self.ui.ach_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.ach_LE.text() |
||||
elif report_type == "disp": |
||||
if use_filebrowser: |
||||
self.ui.disp_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.disp_LE.text() |
||||
elif report_type == "gl": |
||||
if use_filebrowser: |
||||
self.ui.gl_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.gl_LE.text() |
||||
elif report_type == "lb": |
||||
if use_filebrowser: |
||||
self.ui.lb_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.lb_LE.text() |
||||
elif report_type == "minv": |
||||
if use_filebrowser: |
||||
self.ui.minv_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.minv_LE.text() |
||||
elif report_type == "niv": |
||||
if use_filebrowser: |
||||
self.ui.niv_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.niv_LE.text() |
||||
elif report_type == "ren": |
||||
if use_filebrowser: |
||||
self.ui.ren_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.ren_LE.text() |
||||
elif report_type == "pymt": |
||||
if use_filebrowser: |
||||
self.ui.pymt_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.pymt_LE.text() |
||||
elif report_type == "uap": |
||||
if use_filebrowser: |
||||
self.ui.uap_LE.setText(folder) |
||||
else: |
||||
folder = self.ui.uap_LE.text() |
||||
if folder != "": |
||||
self.settings["defaultLocations"][report_type]["dir"] = folder |
||||
def chg_folder(self, button_name): |
||||
report_type = button_name.split('_')[0] |
||||
if report_type == "ach": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.ach_FN.text() |
||||
elif report_type == "disp": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.disp_FN.text() |
||||
elif report_type == "gl": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.gl_FN.text() |
||||
elif report_type == "lb": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.lb_FN.text() |
||||
elif report_type == "minv": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.minv_FN.text() |
||||
elif report_type == "niv": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.niv_FN.text() |
||||
elif report_type == "ren": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.ren_FN.text() |
||||
elif report_type == "pymt": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.pymt_FN.text() |
||||
elif report_type == "uap": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.uap_FN.text() |
||||
def add_fn(self, button_name): |
||||
report_type = button_name.split('_')[0] |
||||
if report_type == "ach": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.ach_FN.text() |
||||
elif report_type == "disp": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.disp_FN.text() |
||||
elif report_type == "gl": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.gl_FN.text() |
||||
elif report_type == "lb": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.lb_FN.text() |
||||
elif report_type == "minv": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.minv_FN.text() |
||||
elif report_type == "niv": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.niv_FN.text() |
||||
elif report_type == "ren": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.ren_FN.text() |
||||
elif report_type == "pymt": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.pymt_FN.text() |
||||
elif report_type == "uap": |
||||
self.settings["defaultLocations"][report_type]["fn"] = self.ui.uap_FN.text() |
||||
|
||||
|
||||
def load_user_settings(self): |
||||
self.ui.ach_LE.setText(self.settings["defaultLocations"]["ach"]["dir"]) |
||||
self.ui.ach_FN.setText(self.settings["defaultLocations"]["ach"]["fn"]) |
||||
self.ui.disp_LE.setText(self.settings["defaultLocations"]["disp"]["dir"]) |
||||
self.ui.disp_FN.setText(self.settings["defaultLocations"]["disp"]["fn"]) |
||||
self.ui.gl_LE.setText(self.settings["defaultLocations"]["gl"]["dir"]) |
||||
self.ui.gl_FN.setText(self.settings["defaultLocations"]["gl"]["fn"]) |
||||
self.ui.lb_LE.setText(self.settings["defaultLocations"]["lb"]["dir"]) |
||||
self.ui.lb_FN.setText(self.settings["defaultLocations"]["lb"]["fn"]) |
||||
self.ui.minv_LE.setText(self.settings["defaultLocations"]["minv"]["dir"]) |
||||
self.ui.minv_FN.setText(self.settings["defaultLocations"]["minv"]["fn"]) |
||||
self.ui.niv_LE.setText(self.settings["defaultLocations"]["niv"]["dir"]) |
||||
self.ui.niv_FN.setText(self.settings["defaultLocations"]["niv"]["fn"]) |
||||
self.ui.ren_LE.setText(self.settings["defaultLocations"]["ren"]["dir"]) |
||||
self.ui.ren_FN.setText(self.settings["defaultLocations"]["ren"]["fn"]) |
||||
self.ui.pymt_LE.setText(self.settings["defaultLocations"]["pymt"]["dir"]) |
||||
self.ui.pymt_FN.setText(self.settings["defaultLocations"]["pymt"]["fn"]) |
||||
self.ui.uap_LE.setText(self.settings["defaultLocations"]["uap"]["dir"]) |
||||
self.ui.uap_FN.setText(self.settings["defaultLocations"]["uap"]["fn"]) |
||||
|
||||
def save_changes(self): |
||||
print(self.settings) |
||||
with open('settings.json', 'w') as s: |
||||
json.dump(self.settings, s) |
||||
print(self.settings) |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
app = QtWidgets.QApplication(sys.argv) |
||||
app.setStyle("Fusion") |
||||
|
||||
window = MainWindow() |
||||
window.setWindowTitle("IL Extract") |
||||
window.show() |
||||
app.exec() |
||||
@ -0,0 +1 @@ |
||||
{"firstRun": true, "startMaxed": false, "defaultLocations": {"ach": {"dir": "", "fn": "", "custom": false}, "disp": {"dir": "", "fn": "", "custom": false}, "gl": {"dir": "", "fn": "", "custom": false}, "lb": {"dir": "", "fn": "", "custom": false}, "minv": {"dir": "", "fn": "", "custom": false}, "niv": {"dir": "C:/Users/GLott/OneDrive - LEAF Commercial Capital/Documents/0 In Progess/Monarch/TestFolder", "fn": "", "custom": false}, "ren": {"dir": "", "fn": "", "custom": false}, "pymt": {"dir": "", "fn": "", "custom": false}, "uap": {"dir": "", "fn": "", "custom": false}, "pastdue": {"dir": "", "fn": "", "custom": false}}} |
||||
@ -0,0 +1,341 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>MainWindow</class> |
||||
<widget class="QMainWindow" name="MainWindow"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>889</width> |
||||
<height>634</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>IL Extract</string> |
||||
</property> |
||||
<property name="windowIcon"> |
||||
<iconset> |
||||
<normaloff>extract.svg</normaloff>extract.svg</iconset> |
||||
</property> |
||||
<widget class="QWidget" name="centralwidget"> |
||||
<layout class="QGridLayout" name="gridLayout_2"> |
||||
<item row="0" column="0"> |
||||
<layout class="QGridLayout" name="gridLayout"> |
||||
<item row="0" column="0"> |
||||
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
||||
<item alignment="Qt::AlignLeft"> |
||||
<widget class="QLabel" name="reportTypeL"> |
||||
<property name="font"> |
||||
<font> |
||||
<pointsize>14</pointsize> |
||||
<weight>75</weight> |
||||
<bold>true</bold> |
||||
</font> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Infolease Report Type:</string> |
||||
</property> |
||||
<property name="buddy"> |
||||
<cstring>reportTypeCB</cstring> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QComboBox" name="reportTypeCB"> |
||||
<item> |
||||
<property name="text"> |
||||
<string>ACH</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Disposition</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Gain Loss</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Lock Box</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Minv_C</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Net Inv. Loans</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>NI Renewal</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>NIV After</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>PBP / Epay</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Returned Check</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Unapplied</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>VMCC</string> |
||||
</property> |
||||
</item> |
||||
<item> |
||||
<property name="text"> |
||||
<string>Wires</string> |
||||
</property> |
||||
</item> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<layout class="QVBoxLayout" name="fileSettingsBox"> |
||||
<item> |
||||
<layout class="QHBoxLayout" name="inputFileBox"> |
||||
<item> |
||||
<widget class="QPushButton" name="inputFileButton"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Minimum" vsizetype="Maximum"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>250</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
<property name="maximumSize"> |
||||
<size> |
||||
<width>250</width> |
||||
<height>55</height> |
||||
</size> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Select &InfoLease Report</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>folder.svg</normaloff>folder.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QLineEdit" name="inputFileLE"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
<property name="placeholderText"> |
||||
<string>No file selected</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item> |
||||
<layout class="QHBoxLayout" name="outFileLocation"> |
||||
<item> |
||||
<widget class="QPushButton" name="outputFileButton"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Minimum" vsizetype="Maximum"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>250</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
<property name="maximumSize"> |
||||
<size> |
||||
<width>250</width> |
||||
<height>55</height> |
||||
</size> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Select &Report Output Location</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>folder.svg</normaloff>folder.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QLineEdit" name="outputFileLE"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
<property name="placeholderText"> |
||||
<string>No location selected</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item row="2" column="0"> |
||||
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||
<item> |
||||
<widget class="QPushButton" name="processReportButton"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Process Report</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>process.svg</normaloff>process.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="openReportButton"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Copy to Clipboard</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>copy.svg</normaloff>copy.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="openReportButton_2"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Open Folder</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>folder.svg</normaloff>folder.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="openReportButton_3"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Open File</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>excel.svg</normaloff>excel.svg</iconset> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item row="3" column="0"> |
||||
<widget class="QTextBrowser" name="inputFilePreview"/> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<widget class="QMenuBar" name="menubar"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>889</width> |
||||
<height>24</height> |
||||
</rect> |
||||
</property> |
||||
<widget class="QMenu" name="menu_Settings"> |
||||
<property name="title"> |
||||
<string>&Settings</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>settings.svg</normaloff>settings.svg</iconset> |
||||
</property> |
||||
<widget class="QMenu" name="menuStart_Maximized"> |
||||
<property name="title"> |
||||
<string>Start &Maximized</string> |
||||
</property> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>maximize.svg</normaloff>maximize.svg</iconset> |
||||
</property> |
||||
<addaction name="action_True"/> |
||||
<addaction name="action_False"/> |
||||
</widget> |
||||
<addaction name="action_Default_Locations"/> |
||||
<addaction name="menuStart_Maximized"/> |
||||
</widget> |
||||
<addaction name="menu_Settings"/> |
||||
</widget> |
||||
<widget class="QStatusBar" name="statusbar"/> |
||||
<action name="action_Default_Locations"> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>fileSearch.svg</normaloff>fileSearch.svg</iconset> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Default Locations</string> |
||||
</property> |
||||
</action> |
||||
<action name="action_True"> |
||||
<property name="text"> |
||||
<string>&True</string> |
||||
</property> |
||||
</action> |
||||
<action name="action_False"> |
||||
<property name="icon"> |
||||
<iconset> |
||||
<normaloff>checkedCircle.svg</normaloff>checkedCircle.svg</iconset> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&False</string> |
||||
</property> |
||||
</action> |
||||
</widget> |
||||
<tabstops> |
||||
<tabstop>reportTypeCB</tabstop> |
||||
<tabstop>inputFileButton</tabstop> |
||||
<tabstop>outputFileButton</tabstop> |
||||
<tabstop>processReportButton</tabstop> |
||||
<tabstop>openReportButton</tabstop> |
||||
<tabstop>inputFileLE</tabstop> |
||||
<tabstop>outputFileLE</tabstop> |
||||
<tabstop>inputFilePreview</tabstop> |
||||
</tabstops> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
||||
@ -0,0 +1,373 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>defaultLocationDiag</class> |
||||
<widget class="QDialog" name="defaultLocationDiag"> |
||||
<property name="windowModality"> |
||||
<enum>Qt::NonModal</enum> |
||||
</property> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>954</width> |
||||
<height>525</height> |
||||
</rect> |
||||
</property> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Default locations</string> |
||||
</property> |
||||
<property name="windowIcon"> |
||||
<iconset> |
||||
<normaloff>extract.svg</normaloff>extract.svg</iconset> |
||||
</property> |
||||
<layout class="QGridLayout" name="gridLayout_2"> |
||||
<item row="0" column="0"> |
||||
<layout class="QGridLayout" name="gridLayout"> |
||||
<item row="0" column="0" colspan="2"> |
||||
<widget class="QLabel" name="label"> |
||||
<property name="font"> |
||||
<font> |
||||
<pointsize>14</pointsize> |
||||
<weight>75</weight> |
||||
<bold>true</bold> |
||||
</font> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Default File Locations:</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0" colspan="4"> |
||||
<widget class="QLabel" name="label_2"> |
||||
<property name="text"> |
||||
<string>Here you can determine which folders will be automatically be opened for each report type. You can even specify which file should be defaulted to.</string> |
||||
</property> |
||||
<property name="wordWrap"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="2" column="0" colspan="4"> |
||||
<widget class="QLabel" name="label_3"> |
||||
<property name="text"> |
||||
<string>Use the following inline formaters to specify dates that will be automatically filled with the current date when running the program:</string> |
||||
</property> |
||||
<property name="wordWrap"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="3" column="0" colspan="4"> |
||||
<widget class="QLabel" name="label_4"> |
||||
<property name="font"> |
||||
<font> |
||||
<italic>true</italic> |
||||
</font> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Day of Month {d} | Month of Year {m} | Year {y} | Note that using multiple characters equates to representing with that number of digits so: {dd} == 07 or {mm} == 02 or {yy} == 22 or {yyyy} == 2022</string> |
||||
</property> |
||||
<property name="wordWrap"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="4" column="0"> |
||||
<widget class="QLabel" name="label_5"> |
||||
<property name="font"> |
||||
<font> |
||||
<weight>75</weight> |
||||
<bold>true</bold> |
||||
</font> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Folder Path</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="4" column="1" colspan="2"> |
||||
<spacer name="horizontalSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeType"> |
||||
<enum>QSizePolicy::Minimum</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>588</width> |
||||
<height>13</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item row="4" column="3"> |
||||
<widget class="QLabel" name="label_6"> |
||||
<property name="font"> |
||||
<font> |
||||
<weight>75</weight> |
||||
<bold>true</bold> |
||||
</font> |
||||
</property> |
||||
<property name="toolTip"> |
||||
<string><html><head/><body><p>Default file name to look for. Don't foreget the file type (.xlsx)</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>File Name</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="5" column="0"> |
||||
<widget class="QPushButton" name="ach_B"> |
||||
<property name="text"> |
||||
<string>Edit ACH</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="5" column="1"> |
||||
<widget class="QLineEdit" name="ach_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="5" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="ach_FN"/> |
||||
</item> |
||||
<item row="6" column="0"> |
||||
<widget class="QPushButton" name="disp_B"> |
||||
<property name="text"> |
||||
<string>Edit Dispostition</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="6" column="1"> |
||||
<widget class="QLineEdit" name="disp_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="6" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="disp_FN"/> |
||||
</item> |
||||
<item row="7" column="0"> |
||||
<widget class="QPushButton" name="gl_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Gain Loss</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Gain Loss</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="7" column="1"> |
||||
<widget class="QLineEdit" name="gl_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="7" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="gl_FN"/> |
||||
</item> |
||||
<item row="8" column="0"> |
||||
<widget class="QPushButton" name="lb_B"> |
||||
<property name="text"> |
||||
<string>Edit Lock Box</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="8" column="1"> |
||||
<widget class="QLineEdit" name="lb_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="8" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="lb_FN"/> |
||||
</item> |
||||
<item row="9" column="0"> |
||||
<widget class="QPushButton" name="minv_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Good for Manual Invoicing</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Manual Invoice</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="9" column="1"> |
||||
<widget class="QLineEdit" name="minv_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="9" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="minv_FN"/> |
||||
</item> |
||||
<item row="10" column="0"> |
||||
<widget class="QPushButton" name="niv_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Good for: Net Investment reports (loan and after)</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Net Inv</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="10" column="1"> |
||||
<widget class="QLineEdit" name="niv_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="10" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="niv_FN"/> |
||||
</item> |
||||
<item row="11" column="0"> |
||||
<widget class="QPushButton" name="ren_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Renewal Net Investment Trial Balance</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Renewl NIV</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="11" column="1"> |
||||
<widget class="QLineEdit" name="ren_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="11" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="ren_FN"/> |
||||
</item> |
||||
<item row="12" column="0"> |
||||
<widget class="QPushButton" name="pymt_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Payment transactions:</p><p>- Wires, VMCC, PBP. EPAY, Returned Check</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Payments</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="12" column="1"> |
||||
<widget class="QLineEdit" name="pymt_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="12" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="pymt_FN"/> |
||||
</item> |
||||
<item row="13" column="0"> |
||||
<widget class="QPushButton" name="uap_B"> |
||||
<property name="whatsThis"> |
||||
<string><html><head/><body><p>Unapplied</p></body></html></string> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Edit Unaplied</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="13" column="1"> |
||||
<widget class="QLineEdit" name="uap_LE"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>581</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="13" column="2" colspan="2"> |
||||
<widget class="QLineEdit" name="uap_FN"/> |
||||
</item> |
||||
<item row="14" column="3"> |
||||
<widget class="QDialogButtonBox" name="optionBBox"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="standardButtons"> |
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<resources/> |
||||
<connections> |
||||
<connection> |
||||
<sender>optionBBox</sender> |
||||
<signal>accepted()</signal> |
||||
<receiver>defaultLocationDiag</receiver> |
||||
<slot>accept()</slot> |
||||
<hints> |
||||
<hint type="sourcelabel"> |
||||
<x>248</x> |
||||
<y>254</y> |
||||
</hint> |
||||
<hint type="destinationlabel"> |
||||
<x>157</x> |
||||
<y>274</y> |
||||
</hint> |
||||
</hints> |
||||
</connection> |
||||
<connection> |
||||
<sender>optionBBox</sender> |
||||
<signal>rejected()</signal> |
||||
<receiver>defaultLocationDiag</receiver> |
||||
<slot>reject()</slot> |
||||
<hints> |
||||
<hint type="sourcelabel"> |
||||
<x>316</x> |
||||
<y>260</y> |
||||
</hint> |
||||
<hint type="destinationlabel"> |
||||
<x>286</x> |
||||
<y>274</y> |
||||
</hint> |
||||
</hints> |
||||
</connection> |
||||
</connections> |
||||
</ui> |
||||
@ -0,0 +1,16 @@ |
||||
Add in consolidated reports and MoM summaries |
||||
|
||||
[] Each month will have a consolidated report. This report is an extended version of the typical outputs, each with their own tab. As reports are processed, they will be appended to that months |
||||
consolidated report |
||||
[] There will also be a yearly summary tab. This will also have a tab for each payment type, but it will have a total amount for the month, and a count |
||||
~ This could be a ribbon button for them to 'summerize year' |
||||
~ Could Skip already summed months |
||||
|
||||
[] Add a GUI for setting these report locations |
||||
~ Just set the YEAR folder and have the scheme matched |
||||
|
||||
|
||||
Optional |
||||
[] Add default save locations for the report types based on the file structure shared by Blad |
||||
~ Would have to deal with overriding defaults |
||||
[] Add new report types to defLoc window |
||||
@ -0,0 +1 @@ |
||||
pip |
||||
@ -0,0 +1,65 @@ |
||||
Metadata-Version: 2.1 |
||||
Name: PyQt5 |
||||
Version: 5.15.7 |
||||
Requires-Python: >=3.7 |
||||
Summary: Python bindings for the Qt cross platform application toolkit |
||||
Home-Page: https://www.riverbankcomputing.com/software/pyqt/ |
||||
Author: Riverbank Computing Limited |
||||
Author-Email: info@riverbankcomputing.com |
||||
License: GPL v3 |
||||
Requires-Dist: PyQt5-sip (>=12.11, <13) |
||||
Requires-Dist: PyQt5-Qt5 (>=5.15.0) |
||||
|
||||
PyQt5 - Comprehensive Python Bindings for Qt v5 |
||||
=============================================== |
||||
|
||||
Qt is set of cross-platform C++ libraries that implement high-level APIs for |
||||
accessing many aspects of modern desktop and mobile systems. These include |
||||
location and positioning services, multimedia, NFC and Bluetooth connectivity, |
||||
a Chromium based web browser, as well as traditional UI development. |
||||
|
||||
PyQt5 is a comprehensive set of Python bindings for Qt v5. It is implemented |
||||
as more than 35 extension modules and enables Python to be used as an |
||||
alternative application development language to C++ on all supported platforms |
||||
including iOS and Android. |
||||
|
||||
PyQt5 may also be embedded in C++ based applications to allow users of those |
||||
applications to configure or enhance the functionality of those applications. |
||||
|
||||
|
||||
Author |
||||
------ |
||||
|
||||
PyQt5 is copyright (c) Riverbank Computing Limited. Its homepage is |
||||
https://www.riverbankcomputing.com/software/pyqt/. |
||||
|
||||
Support may be obtained from the PyQt mailing list at |
||||
https://www.riverbankcomputing.com/mailman/listinfo/pyqt/. |
||||
|
||||
|
||||
License |
||||
------- |
||||
|
||||
PyQt5 is released under the GPL v3 license and under a commercial license that |
||||
allows for the development of proprietary applications. |
||||
|
||||
|
||||
Documentation |
||||
------------- |
||||
|
||||
The documentation for the latest release can be found |
||||
`here <https://www.riverbankcomputing.com/static/Docs/PyQt5/>`__. |
||||
|
||||
|
||||
Installation |
||||
------------ |
||||
|
||||
The GPL version of PyQt5 can be installed from PyPI:: |
||||
|
||||
pip install PyQt5 |
||||
|
||||
``pip`` will also build and install the bindings from the sdist package but |
||||
Qt's ``qmake`` tool must be on ``PATH``. |
||||
|
||||
The ``sip-install`` tool will also install the bindings from the sdist package |
||||
but will allow you to configure many aspects of the installation. |
||||
@ -0,0 +1,988 @@ |
||||
../../Scripts/pylupdate5.exe,sha256=vaUMhZFpu4uZKQTGe7IXx7Qb4oD7OVM2T25aZrL78Xk,106382 |
||||
../../Scripts/pyrcc5.exe,sha256=SlUWJ_CtBKTJgmq4P9lZ3YzC_x37lhdKNxcZnHsdwTY,106378 |
||||
../../Scripts/pyuic5.exe,sha256=_IzDFm8jW0gPsdm-aGVkwRkM3oLiPQjTL4ORz6SFRL0,106377 |
||||
PyQt5-5.15.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 |
||||
PyQt5-5.15.7.dist-info/METADATA,sha256=M-S2TvZAFdjOXJ8Gst5lElSWPh6B4ASjZosjGWvgmDQ,2176 |
||||
PyQt5-5.15.7.dist-info/RECORD,, |
||||
PyQt5-5.15.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
PyQt5-5.15.7.dist-info/WHEEL,sha256=SjgHfdmYYjtK5R1U591pZ13RLo5V4uk6p0Iu-Hx4LLQ,98 |
||||
PyQt5-5.15.7.dist-info/entry_points.txt,sha256=Qif0K5dtSx55Jy85ruKNbDlFdMdcekmMavb6lQz49g0,116 |
||||
PyQt5/QAxContainer.pyd,sha256=OEIMIdeHoIzS9zYKqkObZF9t36o5qKQ6E9S8HuXiV2A,275456 |
||||
PyQt5/QAxContainer.pyi,sha256=T0nFtKXaiFQ23Pkqdn10ldvCakTflsuOGVN0c0cpghs,4806 |
||||
PyQt5/Qt.pyd,sha256=B8ZRUD5pt-yBO5jbKxtos8xpuRYv-9-twsFjFb7YzoU,12288 |
||||
PyQt5/Qt5/qsci/api/python/PyQt5.api,sha256=AhLMODzWgTTsDwsVwShDeGEtogIY0h0HK5Rkg1ZCTE8,1792081 |
||||
PyQt5/QtBluetooth.pyd,sha256=MT1hDMsfY9cWZh9KTmydvB35_M0c3du5nVP7wBYurJ8,342016 |
||||
PyQt5/QtBluetooth.pyi,sha256=PyGM0h0ofjhI_mVcDFfiRukhGxv6wkywIoNL5GTcP6g,85872 |
||||
PyQt5/QtCore.pyd,sha256=mJVV6R_vkRdXfNoz4HyjDyP2751Cv8_c-qdgwDSMu8M,2442752 |
||||
PyQt5/QtCore.pyi,sha256=saqNEDOq03_0jUa3ux67BmribS9QMU8atAxzyIrditY,483460 |
||||
PyQt5/QtDBus.pyd,sha256=wVz7IPgRo6cnug1HLTQfqvbl_q5v1kYWC6jsLXPLYE8,175104 |
||||
PyQt5/QtDBus.pyi,sha256=-SUCN2fCBQeqdc5QTR8Uu_cto8Q_eNaXDrr5s5Z_m3c,27287 |
||||
PyQt5/QtDesigner.pyd,sha256=T86J2XnKqMZ--1xv0SlQwzJvU-rkLF1LW92F5_UP78w,309248 |
||||
PyQt5/QtDesigner.pyi,sha256=q0rvrzlD3vXDENhVPRgRRZFGHH-BALKyyCRyG9pNXvI,24052 |
||||
PyQt5/QtGui.pyd,sha256=z8EIJentBIeTUANtEyhZ-tTYYaVQb63yP-Pz9mt4BlE,2455040 |
||||
PyQt5/QtGui.pyi,sha256=bLWbVFAAPNboB34Yl1NdfBpQ5VKNFie7Nb5J2MMO3Rg,471157 |
||||
PyQt5/QtHelp.pyd,sha256=KVO41l7GLam913zCv1ojofuZcrCy5CVV8-wIPHsbBpM,197120 |
||||
PyQt5/QtHelp.pyi,sha256=Q4jPP03-DEH5HKWt8mKMuqrq-QOIHiqQS4YfdMVpaJQ,13472 |
||||
PyQt5/QtLocation.pyd,sha256=VvR97VvhbmQZOE8Nlbd1FpTovoLAV7EySM5dVLL9vKI,440832 |
||||
PyQt5/QtLocation.pyi,sha256=3goJ9v5bca9bT5QhLtp8eaR0FQaO3cS_4gWu3G-B14c,68208 |
||||
PyQt5/QtMultimedia.pyd,sha256=O2cC05ccPSFXfrd85Gm2vo-jWxTp10JNOrTyD1pesdI,910336 |
||||
PyQt5/QtMultimedia.pyi,sha256=H8q2mixxn2zXlETkEdOk3JCTf-UPKVIkosHVSRI7Gio,126953 |
||||
PyQt5/QtMultimediaWidgets.pyd,sha256=57-N7W_KVR293qu2ECZZC_kM2O0BmyfidjjXFFfkSBs,141312 |
||||
PyQt5/QtMultimediaWidgets.pyi,sha256=gWgsm4D_ONQy4wDJVv03Xe7laEpX5UTnxFX85rmIOZ4,5938 |
||||
PyQt5/QtNetwork.pyd,sha256=Q91_eARVULmX2id7UbnRxgIGtPDgoPH8OGMMG_ssXn4,697856 |
||||
PyQt5/QtNetwork.pyi,sha256=z6rjXQ2trObOsxz02aV6kf9LQAYlRC3DwVYpf2tbsW8,119584 |
||||
PyQt5/QtNfc.pyd,sha256=4KYkqVuTSwXZgADpagFU4uiw4HVgGpf4TiX7tpKFNkM,142336 |
||||
PyQt5/QtNfc.pyi,sha256=imgi2G-DWZKhYUnO4LdVGkP2D5_XpRekkY5X5oMYLyM,23048 |
||||
PyQt5/QtOpenGL.pyd,sha256=bvJ_8hWxoqSdz2zvGDyFLGDh7PS3Zuo_FeZrwyWp-OU,124416 |
||||
PyQt5/QtOpenGL.pyi,sha256=ekegg8eu78FVdeWiisR9D7WwMjs2VfJMBECx4Irns8s,18648 |
||||
PyQt5/QtPositioning.pyd,sha256=oW-CjfyFiMQ-tHaK_O6QQBH_H2gUnIYip_ohPp6Tzlg,181760 |
||||
PyQt5/QtPositioning.pyi,sha256=XAXJGboeVUkW7FK82nt63VAo0Vl1xDPVMhzTbg8wN7s,28128 |
||||
PyQt5/QtPrintSupport.pyd,sha256=RBl-7RRgQsbdgrLyFUQzFqrYpnQiFNJJdgba36hL5uc,253952 |
||||
PyQt5/QtPrintSupport.pyi,sha256=ZOdkDde-Oino6kfEfVVl6x67twfU7SrW90zuzWg5_nI,21743 |
||||
PyQt5/QtQml.pyd,sha256=UA12EOQiyS8qTeqZPNKtHRkvKj870zN8jPrAI8w5mf4,466432 |
||||
PyQt5/QtQml.pyi,sha256=o1QfY6bscw_XogmroiHF_Z_HdloXYEDPkyHI3-AjAIc,31169 |
||||
PyQt5/QtQuick.pyd,sha256=zD9kWEjYsi4yGLxkJAvQB00_OIHNe05qZjWDqfe8wko,921088 |
||||
PyQt5/QtQuick.pyi,sha256=_H5RybSAcyI0Rc9AdbysCgVob4wFmO7Zxm9Tv27vJII,90692 |
||||
PyQt5/QtQuick3D.pyd,sha256=m3obJzpSZ6fRFhXI6kXt2Wq7FaYH1_VPaUuQfS6Uz8g,38400 |
||||
PyQt5/QtQuick3D.pyi,sha256=nDPQfHEnCDB-pkesF7ufEzKlN-dbWz3u4gE2nm3ezss,5574 |
||||
PyQt5/QtQuickWidgets.pyd,sha256=N7Tb2TD6DihlZOkfJp5uaiRaBByBNjSEIbZcD8TeS-k,61952 |
||||
PyQt5/QtQuickWidgets.pyi,sha256=oYUbkLScxS5xMEuwfZyjEOznKiBASqaLiBEBGIuCZKY,4812 |
||||
PyQt5/QtRemoteObjects.pyd,sha256=sQHNqpd_16JaxmSpso_BsSHeNQPtFYzj7ZjCkVcgMI4,94208 |
||||
PyQt5/QtRemoteObjects.pyi,sha256=LFtUgXWc4STtWJDcaocBccxjUAWm-bNQMnG5Z1j3Egk,9511 |
||||
PyQt5/QtSensors.pyd,sha256=lfV_SZtq1oivx09QROvTe8rD2lqhTLEA-hphW7l_b7w,252416 |
||||
PyQt5/QtSensors.pyi,sha256=2e0QuA4csE-fYmlkAsJH4Hy1rRfzxHwws9tr3Oq-ql8,21372 |
||||
PyQt5/QtSerialPort.pyd,sha256=mDj2QM2VdAF5jg2GRxMTPRfq8Eo5H1nL0IA8vkwjM9k,74240 |
||||
PyQt5/QtSerialPort.pyi,sha256=RzMTWBDyjos-qwbjdwUYe0AO2UJ4ilN5XqBtyxOJjSo,13082 |
||||
PyQt5/QtSql.pyd,sha256=BM_ey2ub5Nf0iurgbLLgSAIUPWoI7d7Bsrqt43ZnBMM,311296 |
||||
PyQt5/QtSql.pyi,sha256=pgkA0yA1CDyhZ_eg508rXnK5qTVKuRDRlpZULwLFhiU,30833 |
||||
PyQt5/QtSvg.pyd,sha256=TKQW8p9sYg_6y4fo7et5a09eqcBJyTDr5YNrevv5HuI,116224 |
||||
PyQt5/QtSvg.pyi,sha256=NEvB3_2XHpCTlzGy5PYHWKP8YNLQ-NoxlzVapI67Ybg,6285 |
||||
PyQt5/QtTest.pyd,sha256=rtp-0HSYjq5BHzO5n3Y-QkymWUulrJi2S_i-vLTUNRM,84480 |
||||
PyQt5/QtTest.pyi,sha256=EcKM22HrsTYOBgtZ_GqgNwxm6VSlt2NVoZMRN5c_Ctc,11453 |
||||
PyQt5/QtTextToSpeech.pyd,sha256=1GTp8jQ5OTU0U7v3JYUCKxViPO7gUrxkrzLsX90VJtw,40448 |
||||
PyQt5/QtTextToSpeech.pyi,sha256=pit9U-448SnRhADNQ4ZwNi_-o1lwgeV0LISu-gHrqsw,3977 |
||||
PyQt5/QtWebChannel.pyd,sha256=zhvSUyqiOXO2zeeAtTNhv_trfCk4GpiuQdGaQQbCPe0,37376 |
||||
PyQt5/QtWebChannel.pyi,sha256=EvoSp4VnEbDEwz2lUR1R7gHU1xudNmkAN48qqD82O0A,2577 |
||||
PyQt5/QtWebSockets.pyd,sha256=z_QUrNB6rhFX1EIAqfLPFXYOcjBWoBzMdkDtm-rs1FI,77312 |
||||
PyQt5/QtWebSockets.pyi,sha256=XcBVr2W2pAUZdHDoJNlEk5rQC2iWDJWRx3j887Ec6KU,10656 |
||||
PyQt5/QtWidgets.pyd,sha256=45SPFX-2ElggGAxuSi7hpS6TPI7GStiODHgKyIrbuoY,5036032 |
||||
PyQt5/QtWidgets.pyi,sha256=1dQvz221RpERm0ncozyMFvlQQLOdmbE3UVJOrjphTIE,555335 |
||||
PyQt5/QtWinExtras.pyd,sha256=Z-ASEudu3piG-v2oIUfn10XHSu2xsI7lSBG8SapKTLQ,110080 |
||||
PyQt5/QtWinExtras.pyi,sha256=Mz0UV6R92WDh67oCluDMjhmwb_xu4ffLHvrBbk9ag_Y,13703 |
||||
PyQt5/QtXml.pyd,sha256=miXM76UuYW-q0t7kVp4xp01-f0VJAhfd3DJRKI53NA0,221184 |
||||
PyQt5/QtXml.pyi,sha256=HPtXqLCDrhSuDKEOu1N1n42lZytY0TCXEb7DcM8UWn0,28851 |
||||
PyQt5/QtXmlPatterns.pyd,sha256=oOZhrRW5PwwatyUAld7YqJKdSn63ZIN3E5EXCTPysTU,135168 |
||||
PyQt5/QtXmlPatterns.pyi,sha256=vW9x5JQXiqmnUe9-r_Tfv8Oe6K309Bq63bGPafQPZCQ,15891 |
||||
PyQt5/_QOpenGLFunctions_2_0.pyd,sha256=S5Z6U1nG8gBs0Q_U6w6MMgcpu17B0gAdv3zOuloJ6Zg,241152 |
||||
PyQt5/_QOpenGLFunctions_2_1.pyd,sha256=FmuPojptCQPI-NZhOQ_8VM0TpYeI2j9MFUg1Jk1UmNU,242688 |
||||
PyQt5/_QOpenGLFunctions_4_1_Core.pyd,sha256=4jKYjliVHLQYI0TEBASYv5wEilashDx6xs53qQX5-CE,129024 |
||||
PyQt5/__init__.py,sha256=OLOV6qzayk2yK-yj21dQ1UPHp9TPWPe7-pF4Ug-B2HA,1691 |
||||
PyQt5/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/__pycache__/pylupdate_main.cpython-39.pyc,, |
||||
PyQt5/__pycache__/pyrcc_main.cpython-39.pyc,, |
||||
PyQt5/bindings/QAxContainer/QAxContainer.toml,sha256=8WscXP3c0Y37L0t30xCDwgGv-G2_GwpzkLzl8D-0Y7s,187 |
||||
PyQt5/bindings/QAxContainer/QAxContainermod.sip,sha256=zQJlaEa_RDN0UHD-9m0qsKoqNvvAmAEi4xD4M4zBfXY,2010 |
||||
PyQt5/bindings/QAxContainer/qaxbase.sip,sha256=4nkTM9Vd5qwSe8IAvmhsPKcImrcFvLwP-87yv-uFjy8,5361 |
||||
PyQt5/bindings/QAxContainer/qaxobject.sip,sha256=r-S9x3v0cBinxaJYkPU9xgaJr0AwMSoUg_615mGO2eo,1951 |
||||
PyQt5/bindings/QAxContainer/qaxwidget.sip,sha256=OoRTDG6Ku5LDuXLedA1SoCImCqDsBBvIplPbHebuZvI,1786 |
||||
PyQt5/bindings/QtBluetooth/QtBluetooth.toml,sha256=gfyMBCYkE1PelCewgGtkAoBPtCgbgMN3u8-YQJtAVno,186 |
||||
PyQt5/bindings/QtBluetooth/QtBluetoothmod.sip,sha256=kYb56zErH9VUsCXwO7T8mycFsnNwlPWaPixq1JIxHis,2883 |
||||
PyQt5/bindings/QtBluetooth/qbluetooth.sip,sha256=aVm0BE_APSvKikdG7HyaMWaqyGld0jEEltygLTNNtno,1881 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothaddress.sip,sha256=XzYjklCCMDNFWKshB9gSu7aMFzIy6osA5bw3ajj9A9U,1611 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothdevicediscoveryagent.sip,sha256=AcZR_YcZ_Kg51wkGbvYP403O7e3poueS8OpIo5_CV4M,3372 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothdeviceinfo.sip,sha256=PGwoprEURBJDobW4kZK6ruBvjIsUjkqmSJU3uLjmybQ,7390 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothhostinfo.sip,sha256=nh3cXIpVS2xTXrcF0eoYsHVSZ5-PfuaR2DkorCbFzzI,1558 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothlocaldevice.sip,sha256=16P6Hk19wLUvDzB64v2Ol248-Mk31SOYx8Us8O15_fQ,2999 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothserver.sip,sha256=3jHGjSof1tqy0lib0NPPs6w353SHVpZWfYrq_jnsySU,3721 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothservicediscoveryagent.sip,sha256=wvHTUJYYBmUT5lkyVO75tkVBhVgy4lKuTzQ6Q89fYKQ,2622 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothserviceinfo.sip,sha256=u7oZT6QMWhLKLBJqiCt0jFgwUf_WoyE37Xy8VVFN9bM,3412 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothsocket.sip,sha256=al9AA6kCkwszxlgNVVbX5y4PMQH5iLEnd-yOnlpkaGY,5191 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothtransfermanager.sip,sha256=ie-xuoZw1S37d3ePswwa3cEiRSivFe7WK3zlRRmVXPY,1432 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothtransferreply.sip,sha256=vCEXSjLNXCa7IttKSrSh3XwXFtbacSqD1XXhb9Ii_ro,2276 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothtransferrequest.sip,sha256=km8PsfwWoVkGwuzTIyPnG_nmTbma-0xLtKfTmvrBwdU,1886 |
||||
PyQt5/bindings/QtBluetooth/qbluetoothuuid.sip,sha256=3v50010wbJfylSzPOKpmiOFRzA1rDcGcSChyWL6glNM,12247 |
||||
PyQt5/bindings/QtBluetooth/qlowenergyadvertisingdata.sip,sha256=CotwweKvKeKYFraNYkDGusHTRrRZUoRF71-rEFdzBmk,2400 |
||||
PyQt5/bindings/QtBluetooth/qlowenergyadvertisingparameters.sip,sha256=5688EpPYp101LfMyjD7FpqljoQaduljhh1TgZ8MvxMY,2930 |
||||
PyQt5/bindings/QtBluetooth/qlowenergycharacteristic.sip,sha256=ErZJ-yQgWhzElv-Lh3L86lJgqmkbMG-ICZnzoHwV5Bs,2224 |
||||
PyQt5/bindings/QtBluetooth/qlowenergycharacteristicdata.sip,sha256=CutxHQyLXSK4nDpkYJpWlquk2k1s9UpkrgdQlYcJstw,2533 |
||||
PyQt5/bindings/QtBluetooth/qlowenergyconnectionparameters.sip,sha256=tl7hzpzDLrifmb9n9tYvoLVmBLaxizOIraiJFPxi_bw,1894 |
||||
PyQt5/bindings/QtBluetooth/qlowenergycontroller.sip,sha256=-Z7fnzLkD12RKNtjmlrJLnSLbUZxNEAwJ59yldWVj_s,4733 |
||||
PyQt5/bindings/QtBluetooth/qlowenergydescriptor.sip,sha256=FTIidcr38a3LyAzGL4gs56UTB42iPJbhU8YN3h1mTYE,1572 |
||||
PyQt5/bindings/QtBluetooth/qlowenergydescriptordata.sip,sha256=DIs4AyUB_hpbpg5Z8rdAR04yYP_O3g1Kvj72KbGnHC0,2257 |
||||
PyQt5/bindings/QtBluetooth/qlowenergyservice.sip,sha256=w_xoguF4LVOhuif5iN1DT1SCEh0ye-QJuAInldcTPqs,3855 |
||||
PyQt5/bindings/QtBluetooth/qlowenergyservicedata.sip,sha256=A-rOPLO9SgZdB_Iz2zyE2IciijRUVDpiBYlgiXTiPGg,2263 |
||||
PyQt5/bindings/QtBluetooth/qpybluetooth_qlist.sip,sha256=vxD7ehzVoi3D_g7tkZSJWo_ubu9RZXQGuaUOuiKnbIo,5611 |
||||
PyQt5/bindings/QtBluetooth/qpybluetooth_quint128.sip,sha256=xzgXhM2ZpD6kueEuqBDmyE6_Ch_SKN7Cd8ByGfDLvgE,3041 |
||||
PyQt5/bindings/QtCore/QtCore.toml,sha256=qtKHQaCD0vtVikrTnp13msrk6nEr3YGlPnGTFJnVLT4,181 |
||||
PyQt5/bindings/QtCore/QtCoremod.sip,sha256=bFVbAHNdJrxk4VGRyZZg6t40YQKvDmD806QNiKNF_WQ,7142 |
||||
PyQt5/bindings/QtCore/pyqt-gpl.sip5,sha256=8Wcb4_ynBJpHsFcqQKmX0N_NBHUWfZDQTd4Q2ggPB98,22 |
||||
PyQt5/bindings/QtCore/qabstractanimation.sip,sha256=f8pyDOtKBWc1bXMp4_naDbqd3LYDG2iFrFX4w39EZAk,2639 |
||||
PyQt5/bindings/QtCore/qabstracteventdispatcher.sip,sha256=kpQk2kwOlPdAbwWt26KGE7-MWCMFRhuUI_1hiqYp6Cw,2911 |
||||
PyQt5/bindings/QtCore/qabstractitemmodel.sip,sha256=nI8KfUj-uUGaQ1N72tQFXGYhGunZxicKhbg-WbFpWBY,14579 |
||||
PyQt5/bindings/QtCore/qabstractnativeeventfilter.sip,sha256=h7CWgPmmzFKiYToqixWqv6jq9865Mz-ve7w5qYjRkms,1362 |
||||
PyQt5/bindings/QtCore/qabstractproxymodel.sip,sha256=qOggxle5ITKBwDN5d0_et53Gp3Vo1oO08JGEEu3i1No,3733 |
||||
PyQt5/bindings/QtCore/qabstractstate.sip,sha256=vkwmtZts8SXKRK6cf2WbgX7whewkKSHhnaUgVGp9UTw,1542 |
||||
PyQt5/bindings/QtCore/qabstracttransition.sip,sha256=S8xD4RFzlDZ8U4m1BP5tRAafA-qnAvEVL1-CRuII9ig,3602 |
||||
PyQt5/bindings/QtCore/qanimationgroup.sip,sha256=Li547ywDTxkDnuweljC9F1IbEKPMVS27zhHIOJPZzQw,1692 |
||||
PyQt5/bindings/QtCore/qbasictimer.sip,sha256=YKe-DFcH4z-cNDqdRGPOgHTWLWBj8JHEItDVrmeN4RY,1417 |
||||
PyQt5/bindings/QtCore/qbitarray.sip,sha256=sYS1BQRLP-NyIlEMZKSWx1fTnMghlNp0oiPgBoahBwU,3106 |
||||
PyQt5/bindings/QtCore/qbuffer.sip,sha256=woW2Ruex-74l6F6qv_Fh9TgLLxf1Mb2hjDFQcdu2x9I,3098 |
||||
PyQt5/bindings/QtCore/qbytearray.sip,sha256=402RaXUUFEfxJ2pLSpEpf7KrHmDEkmnjJy0fYvl-rJk,17417 |
||||
PyQt5/bindings/QtCore/qbytearraymatcher.sip,sha256=E4kVTiUZaOkQ6olxmf1ytDBS_484saaY64djTdYMX48,1387 |
||||
PyQt5/bindings/QtCore/qcalendar.sip,sha256=hX_1L3Bcj0t7RKCZPalku4Qc1zRPo3X-q2ZRqFSll6o,3571 |
||||
PyQt5/bindings/QtCore/qcborcommon.sip,sha256=vfTqtQcyBf7TixpPbvnKTV18JgiKowmQFwQWmeSCuZU,2490 |
||||
PyQt5/bindings/QtCore/qcborstream.sip,sha256=lrJucm2sbcXrYsz6VI6aAStkApgt99rVQn6dfaJCm84,6687 |
||||
PyQt5/bindings/QtCore/qchar.sip,sha256=io6lkR7FCKK-xf_z4l94C3EqxXEnOykLdS8wknxa8nk,1637 |
||||
PyQt5/bindings/QtCore/qcollator.sip,sha256=XoJy37momm_G7muPteOla8W0bDxQanAQ5t0UlVIKaK4,2126 |
||||
PyQt5/bindings/QtCore/qcommandlineoption.sip,sha256=i4ZMQyJQN_XTF_tAhckd9GpVylDxXMUDkg_MJ90qEFg,3090 |
||||
PyQt5/bindings/QtCore/qcommandlineparser.sip,sha256=h8k_IQnW1swOmsmTRHFf5Q5hlSlsIK1sPoJ3JD0lYYE,3024 |
||||
PyQt5/bindings/QtCore/qconcatenatetablesproxymodel.sip,sha256=FfShqMbBpPy3UWQSOcJSqT6ePvmK2uvCWp-efHEMHNk,4272 |
||||
PyQt5/bindings/QtCore/qcoreapplication.sip,sha256=cEkH3_S0cCLRRyWqOrurYD3u02uvbRm4CXgsYQipeb4,11457 |
||||
PyQt5/bindings/QtCore/qcoreevent.sip,sha256=-IzPxQAtoSCA1FPZorw2vncOfcMz77BeTq3AaDnHR30,6702 |
||||
PyQt5/bindings/QtCore/qcryptographichash.sip,sha256=dzgFiZT2j6nveaMYMGWlrA2ABQOIGfeUjN5Fk0fOmmE,2127 |
||||
PyQt5/bindings/QtCore/qdatastream.sip,sha256=xptAaSK-xEKUdzVVnkeMYfhJe4MiSlifYA1sOl5D-D0,10188 |
||||
PyQt5/bindings/QtCore/qdatetime.sip,sha256=Xf4Z9qrsir6b7KLcGN8_2B80y9r4xVB6RSGk8E3h00Q,20512 |
||||
PyQt5/bindings/QtCore/qdeadlinetimer.sip,sha256=FN0tz8xk49vudqKmYVJ9_1LqfegNBxUiD3qe0X2PgOA,3123 |
||||
PyQt5/bindings/QtCore/qdir.sip,sha256=gv76aqFLf_6f-4w8FBtA-5WuJ5O7ZcPGIIrmK6apCPo,6420 |
||||
PyQt5/bindings/QtCore/qdiriterator.sip,sha256=0l8cLh-yH7_ZskKbwkZeti2S0OtY5GeLKnxUOhASTlo,2109 |
||||
PyQt5/bindings/QtCore/qeasingcurve.sip,sha256=H7kqH0r8ri5UXf0RYOw0_G1qUzu-88wQ_nUiiZ6OxeY,6957 |
||||
PyQt5/bindings/QtCore/qelapsedtimer.sip,sha256=VRTGsPQZIDfj2bmSjE8Oc_CjfnNtmT9Z8JIRRRaz_RU,1886 |
||||
PyQt5/bindings/QtCore/qeventloop.sip,sha256=09Lvo6mleJ39CZgFc4FEABmkWboujlv6W2PHWg2k3Jc,2586 |
||||
PyQt5/bindings/QtCore/qeventtransition.sip,sha256=hGvPuJkPQLWTdISqUpoH3UWQBFWTkjE2zL0stjOn1YQ,1628 |
||||
PyQt5/bindings/QtCore/qfile.sip,sha256=v8L_tHoFeeymdGe583p6XfRJxkOYf-ivQs28PXJutWI,3033 |
||||
PyQt5/bindings/QtCore/qfiledevice.sip,sha256=AXjfbP8TEJITEjMzzfbk_9Hy0V4lpiq_Q-NCNq0l46Q,5888 |
||||
PyQt5/bindings/QtCore/qfileinfo.sip,sha256=ZlNXuWPQORb1mrib8AG3WWKjDV6qkN5fW6Ig7MbFZ6w,3521 |
||||
PyQt5/bindings/QtCore/qfileselector.sip,sha256=G4hMmdEZJaXckWh_iUcuzjZtuS6iExjv-Vh7c4N-KUo,1430 |
||||
PyQt5/bindings/QtCore/qfilesystemwatcher.sip,sha256=aYFg_xrjT4MIwXQvEpMXdtTI0to-vlq-lbfHU58Wiyk,1640 |
||||
PyQt5/bindings/QtCore/qfinalstate.sip,sha256=v6wILEySPh7xNQG7VID9DM_dW7eCEVJfGdOv2sY5Hmc,1290 |
||||
PyQt5/bindings/QtCore/qglobal.sip,sha256=-WoFuQySOs9LFwqjOvUuv6CMj6dIAwqgF27rmuwhUMs,7262 |
||||
PyQt5/bindings/QtCore/qhistorystate.sip,sha256=iSccfbA4CBmVr5BEJR8yveHnVl8B923DrH2fGqaIcH8,2091 |
||||
PyQt5/bindings/QtCore/qidentityproxymodel.sip,sha256=n9Lpm5fJnFQB11h8yYtrm6MGcrP9yn4u27Oa3EhG8lU,3318 |
||||
PyQt5/bindings/QtCore/qiodevice.sip,sha256=NpmagieSpQRT_uql6hdrvU5dNtbyRqpExWcenGaIn5c,10032 |
||||
PyQt5/bindings/QtCore/qitemselectionmodel.sip,sha256=RO_8a485etZ5LsD5rB_VCtfB86jmQwJ68CWgjs2w-38,10238 |
||||
PyQt5/bindings/QtCore/qjsonarray.sip,sha256=_oB4YBUJFkJWmd4imx1kz81rZD74wZ9XckHObBrG-k4,3486 |
||||
PyQt5/bindings/QtCore/qjsondocument.sip,sha256=JAKovtEYAjgbhkqavNZDRaikd0hV3fU5qb-HaOGhZKU,3585 |
||||
PyQt5/bindings/QtCore/qjsonobject.sip,sha256=hCg2SIRwOexHR3D3ysC5Zu679pbZDferenheb6XSpFY,3636 |
||||
PyQt5/bindings/QtCore/qjsonvalue.sip,sha256=CfmRPgIbapcdgAUuf20TRzcjBSd6QEhNzNb4tQYgKaA,3204 |
||||
PyQt5/bindings/QtCore/qlibrary.sip,sha256=i7IbGI3mD-MXxtucGpjtXh7bGtdkidO18zDi3JuNuFY,2581 |
||||
PyQt5/bindings/QtCore/qlibraryinfo.sip,sha256=NmMp4Jvq1cxa2-drytKczPPylzCV0Owyyr6OBIrVQk8,1767 |
||||
PyQt5/bindings/QtCore/qline.sip,sha256=9jkI9irIn6Lx6fi2XAIrWMRUdMiYiueWyVGozgKS8CQ,6678 |
||||
PyQt5/bindings/QtCore/qlocale.sip,sha256=aPAMolRWjIQprlV-swYFwtmozUfmTi-efAo_EDMPdUo,34464 |
||||
PyQt5/bindings/QtCore/qlockfile.sip,sha256=oFU03flt3fJSTLXuivf6cwChs1LM6WQcAXEUuA12NXE,1722 |
||||
PyQt5/bindings/QtCore/qlogging.sip,sha256=ktFi6gUCbtqrL5OEZGDiTyyOXLymzLZL-AtA4B3pKCU,6174 |
||||
PyQt5/bindings/QtCore/qloggingcategory.sip,sha256=mcmHhgC9klbGFAMzlNoB4KomfqB-CCEz-kZWL14Zv2U,1726 |
||||
PyQt5/bindings/QtCore/qmargins.sip,sha256=OUJY7BLsk3FV9Fz2zSuBid4w00jiIgSI9aEnW9pVeRI,5292 |
||||
PyQt5/bindings/QtCore/qmessageauthenticationcode.sip,sha256=fX_mHmqn9hbB_ggzvIaBou3DKtI1-DJX0_nFN-768YE,1696 |
||||
PyQt5/bindings/QtCore/qmetaobject.sip,sha256=vjXnufWc9cC_Ddf9dQFfVeJQd-hAN9JC6gMsBr7E8jg,8172 |
||||
PyQt5/bindings/QtCore/qmetatype.sip,sha256=q1VHaggH_ZJhXcVAPn8DSZD1YVyZrLhiACMap-2AHOs,4007 |
||||
PyQt5/bindings/QtCore/qmimedata.sip,sha256=E7lNKvx_TICeFCJBxVnQb4lwEjFB2vUWw9yjkDGAwzY,2062 |
||||
PyQt5/bindings/QtCore/qmimedatabase.sip,sha256=Gi6h6Tg7xiAPCFM5wVshqLM17fI8sQuybY8XuZ4tjlA,2136 |
||||
PyQt5/bindings/QtCore/qmimetype.sip,sha256=Eh41cQqv4R5Roa2ECUW3tNhb7HeisshB8pj-q1pYWBI,1887 |
||||
PyQt5/bindings/QtCore/qmutex.sip,sha256=tRPXzp4y2n0_7DDFdjdrGDxeDH6yRRiUxzNIqe9K53I,2368 |
||||
PyQt5/bindings/QtCore/qnamespace.sip,sha256=10vzBXC7uqIqG3By_gFgZ2dWIfzcxRrM7rn-7Std6rs,39318 |
||||
PyQt5/bindings/QtCore/qnumeric.sip,sha256=cGcENAXAJ3LnSSm8KTqhC2QzR1WMY22KbgPE9EXbw1w,1207 |
||||
PyQt5/bindings/QtCore/qobject.sip,sha256=Cj0D6W9nhEXRAgldYL_oH84K550HIHORaNIuNVns1TU,25277 |
||||
PyQt5/bindings/QtCore/qobjectcleanuphandler.sip,sha256=vETmoIrqn693ctRmX1y3C3GiKWFZ910wzazDI4bbkYU,1284 |
||||
PyQt5/bindings/QtCore/qobjectdefs.sip,sha256=JITSzwmIYgsKmlP3g_J_KfCQb2tNhfX9vrewFfE3N84,7914 |
||||
PyQt5/bindings/QtCore/qoperatingsystemversion.sip,sha256=ZAQExR0ptk8qX7zCuU8JJZjiYhxc-036QKTwkQL61PU,3616 |
||||
PyQt5/bindings/QtCore/qparallelanimationgroup.sip,sha256=Mmkp4DnDPiHlkFYtc4jmAy5ggd-HZcRVa88QnIiuFNI,1541 |
||||
PyQt5/bindings/QtCore/qpauseanimation.sip,sha256=EXYqhYljqU8ugctU1Fbl5IYFssvj0l28A7eijgmIZas,1412 |
||||
PyQt5/bindings/QtCore/qpluginloader.sip,sha256=gEGwTGeaEaAay3RBFF1as70ByIURpKfgh3HjLK07zXE,1598 |
||||
PyQt5/bindings/QtCore/qpoint.sip,sha256=2Lk5vncwhA4NrxFxE2A9Vm0ZfgyMkPqDSIHzpxJb0Lk,6649 |
||||
PyQt5/bindings/QtCore/qprocess.sip,sha256=_-89c9P77FT5LiZ1-C8ynCEWiViXDbGKqj6t_x3JYzA,7926 |
||||
PyQt5/bindings/QtCore/qpropertyanimation.sip,sha256=e1hn-ti3BKL4JZzm_gvxDVwEmcfjkG3MqEQJkkU-Bm4,1737 |
||||
PyQt5/bindings/QtCore/qpycore_qhash.sip,sha256=Qpn3PjCslEks7cSCmew0w4TNKGBWZrh5e5uxZ527C8c,11683 |
||||
PyQt5/bindings/QtCore/qpycore_qlist.sip,sha256=faR8hByvsbKEzADYzMsW3grXEN4VE9D0Ya9wrNPNkOQ,21174 |
||||
PyQt5/bindings/QtCore/qpycore_qmap.sip,sha256=qB65Mmh0nITdRjeXMqvPTDAWjoETUX_wJlpK-hroxoA,8550 |
||||
PyQt5/bindings/QtCore/qpycore_qpair.sip,sha256=swoE_8rAN2Zgx6L-dGswOQmIqabOps078xCykG4Jbk4,8489 |
||||
PyQt5/bindings/QtCore/qpycore_qset.sip,sha256=qf5RwF60MbRQByaI5k_6gjMcHko6b65VVIjGtAkhC1k,5661 |
||||
PyQt5/bindings/QtCore/qpycore_qvariantmap.sip,sha256=-hicjWWRxyshVa7wXfV0SAo6gwpCYkLhl72tniwbIck,1425 |
||||
PyQt5/bindings/QtCore/qpycore_qvector.sip,sha256=2Vityo7jsXLp9BOchEXVqSrRIB3nMEUzDsTHMjuUqHg,14035 |
||||
PyQt5/bindings/QtCore/qpycore_virtual_error_handler.sip,sha256=i4pwWQ61YHHev1znWw2GWtMP0PaSU3_k4V-GQz6AR3o,999 |
||||
PyQt5/bindings/QtCore/qrandom.sip,sha256=rIFFERXBlKzRwXV52XcMc7mvIZsZuc166tBPyql0Ssw,2000 |
||||
PyQt5/bindings/QtCore/qreadwritelock.sip,sha256=c5ItErcSn9cfj2Cojp4e8LpsE3TVO7Pma0zJieWIj-0,2810 |
||||
PyQt5/bindings/QtCore/qrect.sip,sha256=euGhkEqbtmxIPPF1vTb5MA7vrI1C47u-yzN83Qekams,11291 |
||||
PyQt5/bindings/QtCore/qregexp.sip,sha256=7zjlVrfpn2Nge0gXTuIOF1NU5EnZ8aNDxGAu8F-QPao,5016 |
||||
PyQt5/bindings/QtCore/qregularexpression.sip,sha256=C3Kmx0IImjhmcojg0qnZghvkd2a9uo6cd9L0p7oxuAw,7379 |
||||
PyQt5/bindings/QtCore/qresource.sip,sha256=-d1apFDkdvVk1UzPCSnLTaVM8Wd1n9N9hKS_99PB9DA,2909 |
||||
PyQt5/bindings/QtCore/qrunnable.sip,sha256=KRJI4WbE0ULd0M4Xc9yYgFmdw4onZh8Ltu2EoApwkIQ,1747 |
||||
PyQt5/bindings/QtCore/qsavefile.sip,sha256=TAweZF4Ym85UxNV1froiVq9vX5jIXfSfApRou3yPyYk,1725 |
||||
PyQt5/bindings/QtCore/qsemaphore.sip,sha256=z8Un1jDcXQX1JKhUmUsWmVGeuqKRSXvYjJ3H8xknQtM,1704 |
||||
PyQt5/bindings/QtCore/qsequentialanimationgroup.sip,sha256=Cv7GW5cXbnvAqxr0S021kolT1Evt5kbuGkNjc667R1g,1766 |
||||
PyQt5/bindings/QtCore/qsettings.sip,sha256=5Od4FiTS7iPal2rB77cL_0TePlc8cICo6Do4HujaFzg,4238 |
||||
PyQt5/bindings/QtCore/qsharedmemory.sip,sha256=ggRsEt0goPNC2DiWJt_mfkyH3eeEI4HR-Nt6TuMUHLQ,2395 |
||||
PyQt5/bindings/QtCore/qsignalmapper.sip,sha256=VFWbJRrP_3X6UNTLXiQcAjXFgb-qQKDOrVkQ4yYgaXI,2186 |
||||
PyQt5/bindings/QtCore/qsignaltransition.sip,sha256=kPoHrcZF_kasNIQxhXZzoIsESdd38RfcQWbp4tjFCI4,2235 |
||||
PyQt5/bindings/QtCore/qsize.sip,sha256=sBkUtawmQtn2pbs8UQR75W9Wvzlcs855XxjrgJn5CZk,6215 |
||||
PyQt5/bindings/QtCore/qsocketnotifier.sip,sha256=uYXh_vqJHINBGtOijg_orZBJ623S6c4QBX3fzWMlvTw,1531 |
||||
PyQt5/bindings/QtCore/qsortfilterproxymodel.sip,sha256=MZueecD-EWhGkL1jP2db_3eKWhX3w962bCn6SKj3Zj4,6342 |
||||
PyQt5/bindings/QtCore/qstandardpaths.sip,sha256=slpAa_lrSFOUDfv9E9kggnwN20718zkt0drcHcvpwAY,2942 |
||||
PyQt5/bindings/QtCore/qstate.sip,sha256=gBVVuu8gHIhUVTyjh8EJJXbdz1Zpr26DdDJDDJtLsuQ,2943 |
||||
PyQt5/bindings/QtCore/qstatemachine.sip,sha256=RcHCZYole8rfQ9kck5YYGQM8w0nA9sIHJMSnj-_2_cU,4749 |
||||
PyQt5/bindings/QtCore/qstorageinfo.sip,sha256=lTvPRuDKyBj_uouTJ121M-K0xnT11kxH4mcJL9z3WPA,2145 |
||||
PyQt5/bindings/QtCore/qstring.sip,sha256=0wi0G_LQB2KOJ1NmXBRO63udKtxjOY2crAcR-KIDuRI,2063 |
||||
PyQt5/bindings/QtCore/qstringlist.sip,sha256=rGV8jqtfErMwvp0o7SJ4be-kb4Es8YVxsqvfaexsdfA,3714 |
||||
PyQt5/bindings/QtCore/qstringlistmodel.sip,sha256=h4y4pSbeopfQhAPJyUuqYpu-jFlRDuVltPcLvLMbkDw,2448 |
||||
PyQt5/bindings/QtCore/qsysinfo.sip,sha256=dCwP4zoARiLe9KINOly1jw-qhG-wzCkCYrJt_tzRqb4,4005 |
||||
PyQt5/bindings/QtCore/qsystemsemaphore.sip,sha256=f9J9Gu8zVmKTi0P3Vx1mqqbIlGwui8_ibLM4p5MJTAA,1848 |
||||
PyQt5/bindings/QtCore/qtemporarydir.sip,sha256=js1XzTCikSzDmGWno7kmuV-eevF687EDLGUSjwMwdIA,1495 |
||||
PyQt5/bindings/QtCore/qtemporaryfile.sip,sha256=EZVcDCe9yW2ABpxKITF2au7K8iQ9TFj0w7s6gp8TRdg,1866 |
||||
PyQt5/bindings/QtCore/qtextboundaryfinder.sip,sha256=a3AUhqV9rEtd6Zt0kr3DZGvsqt9lh7Bqbgc-6VEX4Ko,2169 |
||||
PyQt5/bindings/QtCore/qtextcodec.sip,sha256=1QCLeKWR8hNriKez0Wn4h3K1FDkVmt9_7T8nrxhd9jM,4228 |
||||
PyQt5/bindings/QtCore/qtextstream.sip,sha256=CzQNA9RsZ3z7aUT1euD48uRHIiWr20ze1VIl6R9Gp_Q,6053 |
||||
PyQt5/bindings/QtCore/qthread.sip,sha256=9tlCUm8qe58SA2JJQw1i9f1BYk2OeewcSdH8yI7cEjM,2985 |
||||
PyQt5/bindings/QtCore/qthreadpool.sip,sha256=JMyY3byizHvCnrMeAn1hM-tanEA6v05thAKpFYOCRew,4154 |
||||
PyQt5/bindings/QtCore/qtimeline.sip,sha256=-YYTvHF8BqEH4w1_mYCz-wPJif7_xIfGVrbogbJW1v8,2789 |
||||
PyQt5/bindings/QtCore/qtimer.sip,sha256=ObCcop5a0BWmH6AkhZG8C_X6tJq-w_znOO1ZpoQ3Y_I,2668 |
||||
PyQt5/bindings/QtCore/qtimezone.sip,sha256=a-SVH_3HdRfHKdRQgK04sq9eldPCah20RFhAkrOZ5mo,4380 |
||||
PyQt5/bindings/QtCore/qtranslator.sip,sha256=bhzIDgImV3MQWZo-OKSB6tUxCJZtok1CzZILFOrRjAY,1926 |
||||
PyQt5/bindings/QtCore/qtransposeproxymodel.sip,sha256=EWd3NSQ6x0LBOPYcCT8UEXp91eGF7X1e81dRhISbMyA,3053 |
||||
PyQt5/bindings/QtCore/qurl.sip,sha256=JFL7IDVsaqkkjtmQX2F9hnNKIOwWRFtJXK1zgZsZlaI,12212 |
||||
PyQt5/bindings/QtCore/qurlquery.sip,sha256=V7RjtYxd6M9fhgV_NN0oO0cAdf4wUOfmCT0HR4Q5qso,2685 |
||||
PyQt5/bindings/QtCore/quuid.sip,sha256=XilJs6QKDTq_rCR0WLfID7Zz1IyXJn9LxkN3G6qk2tc,3632 |
||||
PyQt5/bindings/QtCore/qvariant.sip,sha256=XfHpmfc4rjefimd7_CGY-8AKbNMmpDJl9JMe0sC-Z9Q,4727 |
||||
PyQt5/bindings/QtCore/qvariantanimation.sip,sha256=MeNUPXkopmU-H_TKgWelK7JV5l1gPe1xzoqSKHkQ6KU,2252 |
||||
PyQt5/bindings/QtCore/qversionnumber.sip,sha256=CXGKgIExGP1kw6FilqFrUjE1fu20xhNygUx1CwkDltY,2836 |
||||
PyQt5/bindings/QtCore/qwaitcondition.sip,sha256=pSvo9UwfgEfEiS5fpDKt8Z3bFOWHO-ivqQJN3_Se4fE,1599 |
||||
PyQt5/bindings/QtCore/qwineventnotifier.sip,sha256=jQ2F1eFlKOVFu8XhORLuue7aR586GQWuKa09u_Cxfxs,1630 |
||||
PyQt5/bindings/QtCore/qxmlstream.sip,sha256=GxdrWjzsLF92pOPI5N_WdB4nm1zIOZGScVVfZrIQSgw,14468 |
||||
PyQt5/bindings/QtDBus/QtDBus.toml,sha256=14vhtP-qohpjX1B_BtvV0VsbzOJhsG0WQJ9umK9XzFI,181 |
||||
PyQt5/bindings/QtDBus/QtDBusmod.sip,sha256=7WqefIZNGCL2iDJKICaUQzG_xvWuZUaFFsXL-Hey4e4,2395 |
||||
PyQt5/bindings/QtDBus/qdbusabstractadaptor.sip,sha256=OA902WUreUPqE0V6oSI9R8_MzFoC9_wWWveW2-EW-wI,1309 |
||||
PyQt5/bindings/QtDBus/qdbusabstractinterface.sip,sha256=Kwh55oXjKlVQb0HJA5wVXJxZMe7ZvExQoNaHcAOdfC0,6844 |
||||
PyQt5/bindings/QtDBus/qdbusargument.sip,sha256=iF5SlahV8K233QYFgaiA-R2NG-rTJlNOJnD3DN5GXwY,5238 |
||||
PyQt5/bindings/QtDBus/qdbusconnection.sip,sha256=EJuiJxNfmMlYI_BXMyBROpw5xeuI5ZV9UsCv4NY5TMk,10165 |
||||
PyQt5/bindings/QtDBus/qdbusconnectioninterface.sip,sha256=LiDlZgdDcnHi287K0ySKW9f5W9m6kRHMj9hGiq2ftwE,3073 |
||||
PyQt5/bindings/QtDBus/qdbuserror.sip,sha256=x_GjSEoPkuuUDNFl9TAvDsW0EcSRT3WKUpY6QdnkAe0,2026 |
||||
PyQt5/bindings/QtDBus/qdbusextratypes.sip,sha256=YLPt_DkLT4FwzTTULrNASt9lxNfPSWq8tO5WEPpldyA,2652 |
||||
PyQt5/bindings/QtDBus/qdbusinterface.sip,sha256=tCBA55EZrjzLO87x79wExyjcAonQVevWMOglOm72tq8,1331 |
||||
PyQt5/bindings/QtDBus/qdbusmessage.sip,sha256=NiFdVOhaURi47KBk5khyR8X8k-0Vc6ennU3oGtFjBAw,3184 |
||||
PyQt5/bindings/QtDBus/qdbuspendingcall.sip,sha256=OYcR9p8pqcvZdh0Dhuot3Ow90A4sKsOaI0VCp6SVMw0,1901 |
||||
PyQt5/bindings/QtDBus/qdbusservicewatcher.sip,sha256=uQbUEzBEEJ3NMVzikAD5usoPrrcs6AVqsBWVHZlTGbI,2539 |
||||
PyQt5/bindings/QtDBus/qdbusunixfiledescriptor.sip,sha256=d8f-kysL9G3GM5zll31DgFc5ITN343Sz3DlkIBfv4I8,1489 |
||||
PyQt5/bindings/QtDBus/qpydbuspendingreply.sip,sha256=IlOihyBQGwt73PCBDi_NQV8c5pYBEHqUXSOLTlgQBUw,1783 |
||||
PyQt5/bindings/QtDBus/qpydbusreply.sip,sha256=pcmTt_CRn6tXWutba4zGNX-R1lHex2rIBeZe9p2-QFA,5529 |
||||
PyQt5/bindings/QtDesigner/QtDesigner.toml,sha256=gIK96u0Bp0bnk50tKaznnVkxf2P2qrCKg8J3_mT_C20,185 |
||||
PyQt5/bindings/QtDesigner/QtDesignermod.sip,sha256=E4wOaQ0uTgH-Yq2yVZzGGx1Auipq5Vn1mm_f4DVbr7c,2848 |
||||
PyQt5/bindings/QtDesigner/abstractactioneditor.sip,sha256=MAyiMjjao-DXnBe40mWhc2Jqb3gWpeCfN3pm37T5mlM,1530 |
||||
PyQt5/bindings/QtDesigner/abstractformbuilder.sip,sha256=UFhCXvsvZaboyuhaRjLaSAU2E8v-jl0SzLgkExPiOxg,1502 |
||||
PyQt5/bindings/QtDesigner/abstractformeditor.sip,sha256=VJOfQSiI02bslVtCwaFivlrYT7hiUTHxhAglDH707UE,2191 |
||||
PyQt5/bindings/QtDesigner/abstractformwindow.sip,sha256=uLQgWSR20t5oKnF1xWnB2LCMUXop5kiMQRwHcvKhD40,4826 |
||||
PyQt5/bindings/QtDesigner/abstractformwindowcursor.sip,sha256=RAkLWk0CwjFJ-WRs_SZTqySIplEur0EYDSlOIAKQlUI,2460 |
||||
PyQt5/bindings/QtDesigner/abstractformwindowmanager.sip,sha256=jR9wz8gnh1PRTAQR4VFoJxK-vwl7n5vhA9q_LRpgjCs,3358 |
||||
PyQt5/bindings/QtDesigner/abstractobjectinspector.sip,sha256=pMZPJHIkWCqqxYrg2qdRpxopgwrNfIGngd4hz3AFFC8,1437 |
||||
PyQt5/bindings/QtDesigner/abstractpropertyeditor.sip,sha256=4f7y1BGCeh8r3FT4EmZTZhcJqJZFT9Qqp1kOY9X9S6U,1779 |
||||
PyQt5/bindings/QtDesigner/abstractwidgetbox.sip,sha256=95EtkQD8NXPBTM6F7zS7Dv6y6xCgu1-l-v6NKSLmJAE,1417 |
||||
PyQt5/bindings/QtDesigner/container.sip,sha256=cztyVvANBVov-Q32WfCPj0cq3-CBoQA_oGS51RDIgv4,1550 |
||||
PyQt5/bindings/QtDesigner/customwidget.sip,sha256=EFfPNjqTFDlkAHclbC7jJAoBR3tT89F6nACAk5UwRxc,1938 |
||||
PyQt5/bindings/QtDesigner/default_extensionfactory.sip,sha256=aEhXh5ZYXDrd0advIplt0h_I6EW1f0bn4ukMTxKTHgM,1594 |
||||
PyQt5/bindings/QtDesigner/extension.sip,sha256=GMSNVZ3d6foAe3hYJY1bCLD2-fMe78sKkQNQxmi9Ny0,1616 |
||||
PyQt5/bindings/QtDesigner/formbuilder.sip,sha256=-BrcmGV9M9zYBnP25Gx-TWQKLQH9Z2n2gMafJ210yTI,1382 |
||||
PyQt5/bindings/QtDesigner/membersheet.sip,sha256=Q4jfiyLNoGYh0XKlm0m2GOu1HBZdBa-gqqNhlsBfBx4,1917 |
||||
PyQt5/bindings/QtDesigner/propertysheet.sip,sha256=LkXMDq4QOlvm8xvRtbcBMauYGFWvGWW0cegles7PnbA,2000 |
||||
PyQt5/bindings/QtDesigner/qextensionmanager.sip,sha256=XmS1OJuxgMQdeoSRhvmQNmIJcngwuRwLZeRZlN1GD0g,3582 |
||||
PyQt5/bindings/QtDesigner/qpydesignercontainerextension.sip,sha256=GguaQlN-nzt2fn8Qi3_H8nFlXQfKTRj9mfp9Gn8wVPU,1260 |
||||
PyQt5/bindings/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip,sha256=Kl9OeLAiqHw-vdwsDCYqdWQn_ezoddOieIfd6_jFw44,1341 |
||||
PyQt5/bindings/QtDesigner/qpydesignercustomwidgetplugin.sip,sha256=lBCQnks9wYAteMxBQwclLihYYCHK1Vfoo2mkNG5eqkM,1267 |
||||
PyQt5/bindings/QtDesigner/qpydesignermembersheetextension.sip,sha256=-VcgMOWgRQgdr4RhpfqrmCoZqYsXcvhNcmtQy4Gl1v4,1274 |
||||
PyQt5/bindings/QtDesigner/qpydesignerpropertysheetextension.sip,sha256=BNoQYWTgvXBfacs2q6t4bUysqVLgNRdhm-wi4-6zLE8,1292 |
||||
PyQt5/bindings/QtDesigner/qpydesignertaskmenuextension.sip,sha256=K6q1ecjS2d1_Ey23Mv_DBHQxViT7OSXrVbQV_gbwZAE,1253 |
||||
PyQt5/bindings/QtDesigner/taskmenu.sip,sha256=DYlA2HdKCWEmP3oqxbG-16Yu6eY67TWfJ1Sye22wyl8,1221 |
||||
PyQt5/bindings/QtGui/QtGui.toml,sha256=YVg0EURXBYuBt3VnPMTdr8snMOnEnLnwS_ljt4vYUDk,180 |
||||
PyQt5/bindings/QtGui/QtGuimod.sip,sha256=ZFjugD9SCeJImObsmLjJXj64htQJ8ZaRmtAufOb1xJA,4639 |
||||
PyQt5/bindings/QtGui/opengl_types.sip,sha256=-KJH03fewoazENzxgkFOaRiHr9LBuABLSMFRn6lG5_U,1450 |
||||
PyQt5/bindings/QtGui/qabstracttextdocumentlayout.sip,sha256=naQiv_3g27C56Zvyv-aNzkLFwF1MvkPa8QdQRFwkDgk,3924 |
||||
PyQt5/bindings/QtGui/qbackingstore.sip,sha256=hwCAh3dLnb8b5i18lAvyWJ7intrJL1BiXciUKOhN25w,1611 |
||||
PyQt5/bindings/QtGui/qbitmap.sip,sha256=8X8SEVOC5sTgyQT-3OAgAmyIHcv07XyzmWfWYRQ20Y4,1932 |
||||
PyQt5/bindings/QtGui/qbrush.sip,sha256=K1NTlbvj81HQosHvhv0zwPoVnVuYqOY9cauE92hR_mA,11361 |
||||
PyQt5/bindings/QtGui/qclipboard.sip,sha256=Af3dXSG0uaxqOiI4OYv051Div8JSe6P9QUx4tUD4Y9M,3633 |
||||
PyQt5/bindings/QtGui/qcolor.sip,sha256=d9t79k2MVZOAA1cJBiaCuzdQNH4aMIL3sMuMJPA6dlY,12487 |
||||
PyQt5/bindings/QtGui/qcolorspace.sip,sha256=sKvoRTygRIsM2kbn2agQMwWRoGj0I4TYDvyzWYLjIs8,3243 |
||||
PyQt5/bindings/QtGui/qcolortransform.sip,sha256=vDPGzEY8o--9VDD4dv4lxsVpFjlKzl_PuKFu4UrqNUQ,1378 |
||||
PyQt5/bindings/QtGui/qcursor.sip,sha256=6Hw7K6ccen2GKIVr-BlHgWmtP3MEUsYjKeDzpjsRsgA,3162 |
||||
PyQt5/bindings/QtGui/qdesktopservices.sip,sha256=s1nDwLMYKJdyw43Msa1BUjHf3wr_V1ZsF-meN_IXcM8,2485 |
||||
PyQt5/bindings/QtGui/qdrag.sip,sha256=5t8ZkFaut4LSW-6JkdYcJkCHnNvugjAs2ZK9C4BTSdk,2266 |
||||
PyQt5/bindings/QtGui/qevent.sip,sha256=P6oomItprIJq6KhPCBPcm6d4yLqClMVAREdFH-kKwaQ,24977 |
||||
PyQt5/bindings/QtGui/qfont.sip,sha256=aya3IYk0pDD8KIdX5U3ZrZkNk2tKmuXWLBuvVybufeM,6343 |
||||
PyQt5/bindings/QtGui/qfontdatabase.sip,sha256=YKBykT3agI4lG_Kw7rayCYqaMULyeD_C_fI_X8U4SNc,3821 |
||||
PyQt5/bindings/QtGui/qfontinfo.sip,sha256=wwCF2upkj79oDMC13iOh-tvj6cpMEKYUOiPwqBk3mRg,1568 |
||||
PyQt5/bindings/QtGui/qfontmetrics.sip,sha256=zxgwLtPx_r7SV4iTDKg3L4Y9xIz39dF2-tgYtUmi93c,6552 |
||||
PyQt5/bindings/QtGui/qgenericmatrix.sip,sha256=jNkAL-U0z9u2JKeV4KQaeWLffKXMV2hVIT8-uZyywB8,32592 |
||||
PyQt5/bindings/QtGui/qglyphrun.sip,sha256=In4APWE6rgopQ5ms0QEVg0zzsS2BdrVE_AkdkjXW0pM,2388 |
||||
PyQt5/bindings/QtGui/qguiapplication.sip,sha256=z1YZnKCSut_VOtpvbNjAvI1IwDJ97_F0RNoWkhJg27k,11884 |
||||
PyQt5/bindings/QtGui/qicon.sip,sha256=DhPADRgfyHFR-aiMBURqP49LtUGPuZvOtjSfUdghfUk,4828 |
||||
PyQt5/bindings/QtGui/qiconengine.sip,sha256=QkcmrxpRbsLqIaABqamXM3cbTFYBiwzoxgPG_ZTRbbM,2835 |
||||
PyQt5/bindings/QtGui/qimage.sip,sha256=9qwxpjYhHSjm6SvWvcUqSmuXbzDYqSqEIM2Ntj7tFm0,10734 |
||||
PyQt5/bindings/QtGui/qimageiohandler.sip,sha256=DIhA3JT5nkOT_v_UY9AJ_r8ERL9WZWyOMsqp5BzxhyA,3022 |
||||
PyQt5/bindings/QtGui/qimagereader.sip,sha256=fcisRMc_ZiFNv8F4scGo-crsyloKVX9-JCpI9QWy89c,3767 |
||||
PyQt5/bindings/QtGui/qimagewriter.sip,sha256=LfKalTVXGnVbnrbNNaEiNy78BsJqjy1Upxy0PcvhZkM,3088 |
||||
PyQt5/bindings/QtGui/qinputmethod.sip,sha256=JtW9sbqxlw6C8M0dtsV33vqKEcCW_7XFTVYVnZfPZd4,2541 |
||||
PyQt5/bindings/QtGui/qkeysequence.sip,sha256=RRn9zCu0qKGtSOVJduQku8pEJmrzyH-xnxPamQOF-e4,7097 |
||||
PyQt5/bindings/QtGui/qmatrix4x4.sip,sha256=ErNgG-QXWm2RxrmVt72zg8Wl2iRlUABnpVSlbdqsrdI,10969 |
||||
PyQt5/bindings/QtGui/qmovie.sip,sha256=U4djd66R6JIkO7wHTfFt0TSYaAZyhItrqqF47Yyq8hY,2998 |
||||
PyQt5/bindings/QtGui/qoffscreensurface.sip,sha256=wqRK_P0Bf5zzt3liWZa3XJEo6MS1DDUFA9MR1Ea-xXQ,1862 |
||||
PyQt5/bindings/QtGui/qopenglbuffer.sip,sha256=ZdwNMqucD9ulSO536ULOpgL12dgRfkfYUbq0DgVMsAQ,2939 |
||||
PyQt5/bindings/QtGui/qopenglcontext.sip,sha256=G5uruQHjYUE1GN53QYBTVmgBlsjWCttECisOCzrbKog,4123 |
||||
PyQt5/bindings/QtGui/qopengldebug.sip,sha256=zZzKB7nWPkRte_9pAdEWHzA26uMQ1W-siSwaqnvOxqo,5517 |
||||
PyQt5/bindings/QtGui/qopenglframebufferobject.sip,sha256=MZSeQoNnjJ2IEaXihpwGO5I1kjdzMoBbXL1PKuZdP60,5540 |
||||
PyQt5/bindings/QtGui/qopenglpaintdevice.sip,sha256=kUf39tf__pnolwF2dZr5faqXMuwWjH8jrdauR7DVjYY,1939 |
||||
PyQt5/bindings/QtGui/qopenglpixeltransferoptions.sip,sha256=XK7VoK9iPxox4zLqaQUf2Mk2aucybWH42hUB5L5BEYI,1965 |
||||
PyQt5/bindings/QtGui/qopenglshaderprogram.sip,sha256=kBlLCD62ZyDDWVgZTWYG14CbjgxsogmUmw0goiJfS3A,16834 |
||||
PyQt5/bindings/QtGui/qopengltexture.sip,sha256=2wHhB7vtjQSb7TQAZbx_V7Cmo2XT7__KDkSfTwYvZgA,18884 |
||||
PyQt5/bindings/QtGui/qopengltextureblitter.sip,sha256=8D6mBTmWcQAGMZI5SrOFeY1kFX9nw-YjRYY25iBw6Yk,2050 |
||||
PyQt5/bindings/QtGui/qopengltimerquery.sip,sha256=ROHTZvCZ6yAIE4or4NYCvFv0JIxIz_RM_Nm-bJbAdGU,2217 |
||||
PyQt5/bindings/QtGui/qopenglversionfunctions.sip,sha256=aw2c1E8dP_61imTHQa0S0L2RLgmNdTSTaNYduWym9Qg,1242 |
||||
PyQt5/bindings/QtGui/qopenglvertexarrayobject.sip,sha256=0gMf0cs3ZtZk8Iwtfp8hus064JHdemoxQPNQrM_97pw,2024 |
||||
PyQt5/bindings/QtGui/qopenglwindow.sip,sha256=qtJOQtY8LIoWXR8ORvEXRJSsCZjCnHxNsBMloqBh02w,2356 |
||||
PyQt5/bindings/QtGui/qpagedpaintdevice.sip,sha256=_agMZC19Ur0lrPihZi2WWW8yrcVW4f6vH8ZtNpc9VD4,7036 |
||||
PyQt5/bindings/QtGui/qpagelayout.sip,sha256=gfajXElHAk9nDibR1j29A4yNHf_uHPfpGzcyYjqaidM,3268 |
||||
PyQt5/bindings/QtGui/qpagesize.sip,sha256=u4sHxfWAU6OW2dspgxC1e7zvTtPakeECkA3HMcdX31o,5824 |
||||
PyQt5/bindings/QtGui/qpaintdevice.sip,sha256=biMMAOmVYKfNZ1fbjXZ50Dsr6J6OtW6JDbuSxxnRKFw,2183 |
||||
PyQt5/bindings/QtGui/qpaintdevicewindow.sip,sha256=em7_pFuKRhP5Ca7o35jwCAO2i_crle8WK1NLVWSSB9c,1484 |
||||
PyQt5/bindings/QtGui/qpaintengine.sip,sha256=E695gTaA1HTty-meZzPijLvatJ6WQRBODMM5ICY9jug,6092 |
||||
PyQt5/bindings/QtGui/qpainter.sip,sha256=4_0X83-pRmxDyiGt2iwBMoASrwa7fyp39KkNNGy3NS0,21587 |
||||
PyQt5/bindings/QtGui/qpainterpath.sip,sha256=4z3TJb__m8veVrfbP7uMK9I6OFUGfMRI26vWNmYOC-Y,7180 |
||||
PyQt5/bindings/QtGui/qpalette.sip,sha256=vuuKEC4aIFQLYwEh-ud6QTrhaQAsSreTjfLwBRePNRY,4799 |
||||
PyQt5/bindings/QtGui/qpdfwriter.sip,sha256=Pg8OvdC8v7SqU5BreXuR_E52TYMD4voaIn0k29oc06I,2393 |
||||
PyQt5/bindings/QtGui/qpen.sip,sha256=qh_yVpfLoL4lwdZ7KlMMPya00lzxPrzeoMpsimJgLQE,3518 |
||||
PyQt5/bindings/QtGui/qpicture.sip,sha256=dKP2rdycX-TJsLn2ufFP2ZVb6KWj-5bluswafT3TYeo,5881 |
||||
PyQt5/bindings/QtGui/qpixelformat.sip,sha256=nt-7D4q4085vsxdANq1rbKPwZA-Ui6_yqDA-yBHVJh0,5944 |
||||
PyQt5/bindings/QtGui/qpixmap.sip,sha256=E04DZ98h0kUmiBy66a5OlLBzvhp-uS1btk082D8J7XQ,4987 |
||||
PyQt5/bindings/QtGui/qpixmapcache.sip,sha256=cvWieGnFlee7vA1PXYJSUyM9yR6JttGAOD1gXDcT7lA,2364 |
||||
PyQt5/bindings/QtGui/qpolygon.sip,sha256=L0J3UmsGrG4hVn_vjpkkkXgvq88Jpa9tL0-OxUY6yVI,13769 |
||||
PyQt5/bindings/QtGui/qpygui_qlist.sip,sha256=rBTdVue16YnuGvYB3xn76IdIYm6f16wFqTyA6CWgHWk,2890 |
||||
PyQt5/bindings/QtGui/qpygui_qpair.sip,sha256=ehnaDoicIlc0IwpiH9-5rGlpsejMhtr_BDcdgn92sWU,5478 |
||||
PyQt5/bindings/QtGui/qpygui_qvector.sip,sha256=ulTrCv6TLL8y0aFDuMKYFBS2FAOmK3oeLz7k7cZ1I64,9158 |
||||
PyQt5/bindings/QtGui/qquaternion.sip,sha256=tc7UC91yC-Qku10FflZOpLkdiGYRwkW-kDZ7mYoXna8,6292 |
||||
PyQt5/bindings/QtGui/qrasterwindow.sip,sha256=xT4HlBAgRI-OGho_scKVgSkfngyvXU2D4gkzj9HUYG0,1317 |
||||
PyQt5/bindings/QtGui/qrawfont.sip,sha256=8_Rnsj1UHYpmnvE5dGajvZbdn9lHtETac_NrAqTQoYI,3942 |
||||
PyQt5/bindings/QtGui/qregion.sip,sha256=JI-pLLtyngbEY8PGm96aMuWvD58z71CI-pDhPmHMjeY,4641 |
||||
PyQt5/bindings/QtGui/qrgb.sip,sha256=zkSZGzfPojRnl4Hqgot0y7qD57m1KrsOJArJWovS8_I,1381 |
||||
PyQt5/bindings/QtGui/qrgba64.sip,sha256=y1lxx6Dyho6TVXz0G5nB6Ap3UJy1NhukleiuLfkXL_E,2474 |
||||
PyQt5/bindings/QtGui/qscreen.sip,sha256=bjIz7cTX-ZTs_Vf7IF-77rdc5rmRzpJraXYNI0Mxoi8,3482 |
||||
PyQt5/bindings/QtGui/qsessionmanager.sip,sha256=Sts0kK4eh_DUBrS3_OifNrIdCAi74cV8hP5wiqJINKM,2052 |
||||
PyQt5/bindings/QtGui/qstandarditemmodel.sip,sha256=slHCM6I7yJbt0Dn6-DVuSMytuuymCd0Z9BNS3MRquU8,10166 |
||||
PyQt5/bindings/QtGui/qstatictext.sip,sha256=qbeLlbZAgTHBeKeNsJ9hw4GBZhnedL_76zKTGIItxrs,2097 |
||||
PyQt5/bindings/QtGui/qstylehints.sip,sha256=iBnOTCBzRk5SE0vwj7ygzMbBOM7PF3xUe2Ogsp86yBE,3538 |
||||
PyQt5/bindings/QtGui/qsurface.sip,sha256=H8r8X2oxl-w4hKjeLiX5z_kTHlUqG6O9mTViN7Zo2WY,1788 |
||||
PyQt5/bindings/QtGui/qsurfaceformat.sip,sha256=nrPz9HVUf8ZiDfuL95oD9hWyt9WaR96bGfYFHyAz9lU,4382 |
||||
PyQt5/bindings/QtGui/qsyntaxhighlighter.sip,sha256=1dGaqr1Zyr4OCF9ZB2MAf19b-RvaauLyS4SUppk4Qts,3119 |
||||
PyQt5/bindings/QtGui/qtextcursor.sip,sha256=gw9gFwphyuRof9cpm2qLP6ZUp4IHoarFNg-zoO3gXIc,5533 |
||||
PyQt5/bindings/QtGui/qtextdocument.sip,sha256=yWcBeFsO04zc3oSDDIWXfghTGxvCEDiqigew_3gBlfQ,7516 |
||||
PyQt5/bindings/QtGui/qtextdocumentfragment.sip,sha256=PIJRhwN6Zn6smaFHmld2c9qoIBd3stNwjcVo14AjfgU,1716 |
||||
PyQt5/bindings/QtGui/qtextdocumentwriter.sip,sha256=3n-4Zyn7kYbE28dTZHp08efrxgxBZCpGeD5N21mg_94,1847 |
||||
PyQt5/bindings/QtGui/qtextformat.sip,sha256=SbljbeIPEbPCRuBPKBT_vEseg__vJZDgq_THCqKZ0XM,20387 |
||||
PyQt5/bindings/QtGui/qtextlayout.sip,sha256=2rtuBtJCTZV50G4HaACdGJ6b9War7w-zuyi0FqEXsqU,5847 |
||||
PyQt5/bindings/QtGui/qtextlist.sip,sha256=k6x5yjWcFX9cf_ldxcBXCMrVW7OrN3OWtT4PRNHDYM0,1550 |
||||
PyQt5/bindings/QtGui/qtextobject.sip,sha256=bhYZf_gnMlJaJ3iIHPsjSezo6bLEQ5oc6YFSyWxnQHw,8097 |
||||
PyQt5/bindings/QtGui/qtextoption.sip,sha256=OcFiEGiIuRHFMKL8dLBSMTT3X8T1OOOpjnDuXh1LjUg,3098 |
||||
PyQt5/bindings/QtGui/qtexttable.sip,sha256=DL7d9Hir5tvZkvY8GrJRcayPl03X09HpNnl4CrL-vqQ,2644 |
||||
PyQt5/bindings/QtGui/qtouchdevice.sip,sha256=aO1Cs0qsTZn0X9adD7PdQyxeYkCOqso3razr4EjsYx4,2042 |
||||
PyQt5/bindings/QtGui/qtransform.sip,sha256=uYGf9WbHKMwo_l1FBKmBd0Cb_gBqSjIjWFJwVBXDkc0,5217 |
||||
PyQt5/bindings/QtGui/qvalidator.sip,sha256=7XA_S2QPyQ4uJRkJxoaMEsc2_74V7sFK4_9_nqkNWQ4,3904 |
||||
PyQt5/bindings/QtGui/qvector2d.sip,sha256=eCiS5OFK2VyYVkYsUwkZOQDZLTVl1xdeuMS7J9O2DEU,4173 |
||||
PyQt5/bindings/QtGui/qvector3d.sip,sha256=GS7qRhnk153lzGYjMi5-Kxe_GE6GiDhvymE0B5lJygI,5245 |
||||
PyQt5/bindings/QtGui/qvector4d.sip,sha256=AfQIiFo6lyf5niFOKeFWeSfwBJBdMURg1fFS9OJCCNY,4816 |
||||
PyQt5/bindings/QtGui/qwindow.sip,sha256=axk1HHeNN1Dm6kuq1BIKAvvC4jD5W671I1DDzV8pITU,7623 |
||||
PyQt5/bindings/QtGui/qwindowdefs.sip,sha256=kYU-J4yfAQ67T9x4sLknwKuCjJ5xi0Uh_nbFcVHOHyE,1033 |
||||
PyQt5/bindings/QtHelp/QtHelp.toml,sha256=3XWJz3RtjQRU35X_LgZyA8Hl7pjdpdaAdPq5nW-YkBs,181 |
||||
PyQt5/bindings/QtHelp/QtHelpmod.sip,sha256=sa8NrQg6PlKSSAQMrIpPhcQi5Fn960RDYC6Nj1SLKcc,2402 |
||||
PyQt5/bindings/QtHelp/qcompressedhelpinfo.sip,sha256=sF1ukRTuZtnY9e2Fo3boAFycdaxKshd19W-vCiLbTDI,1522 |
||||
PyQt5/bindings/QtHelp/qhelpcontentwidget.sip,sha256=SjhgKIw-em7Vqzh9dhVgvTJiEHEiQHH92AwtbXjvvuw,2424 |
||||
PyQt5/bindings/QtHelp/qhelpengine.sip,sha256=LrIcO-FQu_be5bDOj9pYmKKeiHpNNdgIsghbpfKGCcc,1398 |
||||
PyQt5/bindings/QtHelp/qhelpenginecore.sip,sha256=lKFXlExDvYOxzD4vZoGDa21IVOn2s2qhl62lcAMrqBE,5469 |
||||
PyQt5/bindings/QtHelp/qhelpfilterdata.sip,sha256=lgVDCKo84e6bFy_3jlY-hVFfNzIU_p4-JpXV1fU3B9E,1498 |
||||
PyQt5/bindings/QtHelp/qhelpfilterengine.sip,sha256=T7PInj8Kq2N6X2aIr6jX85QPRX3bciPkh2Ct0hidAtM,2044 |
||||
PyQt5/bindings/QtHelp/qhelpfiltersettingswidget.sip,sha256=szahQnDRxbv9MQG7c63XUUeAi2F0GpyLetydJJ85lXk,1522 |
||||
PyQt5/bindings/QtHelp/qhelpindexwidget.sip,sha256=76idtcmMY1VKCLnrS8rF380DisS7J2173hzLhEjT4JM,2205 |
||||
PyQt5/bindings/QtHelp/qhelplink.sip,sha256=g222R-dHME74pWh4A_kSrpXisAncMTka-hZoHH19yfI,1108 |
||||
PyQt5/bindings/QtHelp/qhelpsearchengine.sip,sha256=SMKmvMFh8ccgwg1wqFEAl9jU4KSK_x6DPSirsneq9gI,2814 |
||||
PyQt5/bindings/QtHelp/qhelpsearchquerywidget.sip,sha256=MnFaEKmGzQl7eIdEB49qeXAzDGEyA9k6vls1T6q59NY,1914 |
||||
PyQt5/bindings/QtHelp/qhelpsearchresultwidget.sip,sha256=_LUHc4zGnHM6DkBdFf5H7b0xmx7YBPhh2kDDj4HeSXw,1257 |
||||
PyQt5/bindings/QtLocation/QtLocation.toml,sha256=ZuqsLF95KjvQn6qiJgL5iCLWm6JsytCWYZTl_yh2NXA,185 |
||||
PyQt5/bindings/QtLocation/QtLocationmod.sip,sha256=jHt3Fh9r1ja5ggLqPQu3iWerB1REIN5cdmC_F905wzQ,3199 |
||||
PyQt5/bindings/QtLocation/qgeocodereply.sip,sha256=uSECTmDHntlXGd1GtV84HqUCv6YVKEZson5v_GAQlGc,2409 |
||||
PyQt5/bindings/QtLocation/qgeocodingmanager.sip,sha256=aGYRom2CtPXqMoAgi7Y2KL5N9TXXjgpdG3VZEkHXmPw,1828 |
||||
PyQt5/bindings/QtLocation/qgeocodingmanagerengine.sip,sha256=8S4_80qBIM0n9tIW8hAQ0fLqj06_cL5VP40L77ztCAc,1900 |
||||
PyQt5/bindings/QtLocation/qgeomaneuver.sip,sha256=zcDSFD7Y7LcI7gcG4ooCQdukJvV2EwjPXiIvJ6TiYrU,2469 |
||||
PyQt5/bindings/QtLocation/qgeoroute.sip,sha256=yYfkxq1Xtf1GpwH02ahRKFrf5BlOrL6Q_JJCfuHAaVk,2655 |
||||
PyQt5/bindings/QtLocation/qgeoroutereply.sip,sha256=VFxr_IY-l5dixAMWIA-7ZwrtrMGlYpU0M2d-0PSe9WM,2140 |
||||
PyQt5/bindings/QtLocation/qgeorouterequest.sip,sha256=fboqLdK4Z4SmVfJZieP2ZWO7ydGGr5hgGTrBB3A5Om8,5481 |
||||
PyQt5/bindings/QtLocation/qgeoroutesegment.sip,sha256=Ys1wqkadz57XOUr6F0Xtov7ijfcjgRut_IxMEtYm15s,1849 |
||||
PyQt5/bindings/QtLocation/qgeoroutingmanager.sip,sha256=dh_OnfKYiRTMaVKQFzWnmEgJR2E3kiIW6ZIRxGV6GhQ,2208 |
||||
PyQt5/bindings/QtLocation/qgeoroutingmanagerengine.sip,sha256=l0Vbpbn7VoJvvD6ZQ_Gj0EHoxSKi4iMkwFI9UlWCg0E,2859 |
||||
PyQt5/bindings/QtLocation/qgeoserviceprovider.sip,sha256=oYlziLpNAbSd3j_Yd8yjFrLoUAU8HLN5-qXccuxG__Q,7498 |
||||
PyQt5/bindings/QtLocation/qlocation.sip,sha256=ntjkWiBu0-S1BJoG2dM1JlzEQYY7UZWSrtU3C6DMIsk,1417 |
||||
PyQt5/bindings/QtLocation/qplace.sip,sha256=eAs2rMX78FBqIOuy63eQe1SosdKctpM_ORZVanCEnA4,3368 |
||||
PyQt5/bindings/QtLocation/qplaceattribute.sip,sha256=DmKZnMNw47Wcegwqtf-rMJSN75CPPIDgZzVXWNPqiFQ,1602 |
||||
PyQt5/bindings/QtLocation/qplacecategory.sip,sha256=yYRS7_0HHiWXjQZceuRTTMapUMd_RXCJqzku7wa4aWc,1676 |
||||
PyQt5/bindings/QtLocation/qplacecontactdetail.sip,sha256=S_ccPM6JN1oqmB98jTn980CGiMTEA5BXaQRUbYwWOCE,1654 |
||||
PyQt5/bindings/QtLocation/qplacecontent.sip,sha256=Nr9Ix1fV1j-OZxS_JhJQODo11cnlcq57l8O9xvx7c_Y,1814 |
||||
PyQt5/bindings/QtLocation/qplacecontentreply.sip,sha256=3-L_UhjDSCiYsa8BFlf2_-s612XMRgwq1_JQNidBz50,1811 |
||||
PyQt5/bindings/QtLocation/qplacecontentrequest.sip,sha256=NOrznGSryfv9qsaowtcV5AAP0QBd9jncZhJgM-Czxks,1707 |
||||
PyQt5/bindings/QtLocation/qplacedetailsreply.sip,sha256=dUqc5YTHXK2_GEz0Mk6UkNbu_OecmXdbDUECEYHZD-k,1358 |
||||
PyQt5/bindings/QtLocation/qplaceeditorial.sip,sha256=-m75qYqBbGFsJdVMsSQWaUTr9CzjTrWwE8FCIh7VQdQ,1436 |
||||
PyQt5/bindings/QtLocation/qplaceicon.sip,sha256=degFOHaO4JDo6MuajtC0azbAsr4W5d8T0jUGSKgWs0o,1564 |
||||
PyQt5/bindings/QtLocation/qplaceidreply.sip,sha256=spch_59nsKgjSqGQNu8cOEQm2qDVgvQVWX2O-FRfDPg,1557 |
||||
PyQt5/bindings/QtLocation/qplaceimage.sip,sha256=zQnSczayoouMSSdjDW2pUM80zsYiQYaX2G9ln_v_6lQ,1413 |
||||
PyQt5/bindings/QtLocation/qplacemanager.sip,sha256=bZSVkFZQy2RBl0PkMBOmI_EQy8wfRMdSF0Yu3PzB0-g,2979 |
||||
PyQt5/bindings/QtLocation/qplacemanagerengine.sip,sha256=jj2R-1RCoQw1JuEa7BQhrJNOyZjSV8M6mIX5lD4L0FQ,3279 |
||||
PyQt5/bindings/QtLocation/qplacematchreply.sip,sha256=1qWQEuKD2yb9RYjoLqGjQ6MRWlHTmwGz0VXByg93l8w,1464 |
||||
PyQt5/bindings/QtLocation/qplacematchrequest.sip,sha256=J8zRW352-sUKc-vWiv8RFFmdBu7OViEH_WcIDvHRo_c,1647 |
||||
PyQt5/bindings/QtLocation/qplaceproposedsearchresult.sip,sha256=u_dyMPZCrN3nKwuU_1nONNKKeD4auibx36XkgVQ6o_8,1413 |
||||
PyQt5/bindings/QtLocation/qplaceratings.sip,sha256=yQyOktZ-oDI0a-H0HZpmSqwW4pNMSNj9v8AURHbObsA,1509 |
||||
PyQt5/bindings/QtLocation/qplacereply.sip,sha256=WwOQQPIPIamn0CrSFcqIkmpvPzfD-rtnS-13wiK3Tzg,2208 |
||||
PyQt5/bindings/QtLocation/qplaceresult.sip,sha256=R1RJ_zxj8uuKBUbdgBHROoMRNZY4rzrzTdcYlDkMJKY,1424 |
||||
PyQt5/bindings/QtLocation/qplacereview.sip,sha256=QV3TnMDN1MhSReBi6UL-dKXAy1qPlYxN2Cfmrw9ToyU,1636 |
||||
PyQt5/bindings/QtLocation/qplacesearchreply.sip,sha256=1q1L5GwZC23MpWJ_zbip4Op914QMY3pfLqaqZI2-gYk,1735 |
||||
PyQt5/bindings/QtLocation/qplacesearchrequest.sip,sha256=ADGCuBPPdUqpgJ64IsHMdxTFx1i52eb_83Vn4XvEu8Q,2337 |
||||
PyQt5/bindings/QtLocation/qplacesearchresult.sip,sha256=s_pgka8MeJZPxgXLlYb0-Q8Cyy0IhKij10MoP1e4zPU,1682 |
||||
PyQt5/bindings/QtLocation/qplacesearchsuggestionreply.sip,sha256=eFD4vADtb_cUFxbrT_tucyvpBMToRLyuRgYFyKgsw3Y,1431 |
||||
PyQt5/bindings/QtLocation/qplacesupplier.sip,sha256=wXhEyZlSFSx2_5tgkSNNzJoqtsXgvfy0HSgu4M-zBwY,1621 |
||||
PyQt5/bindings/QtLocation/qplaceuser.sip,sha256=VfAJh2xK4Da-piL7HLY8jHzeObcp6KakqZD_bXZlwI4,1418 |
||||
PyQt5/bindings/QtMultimedia/QtMultimedia.toml,sha256=MTOFpgEw-USTCox_ksOAA35Fx1ziXnK66H5jOSffWXs,187 |
||||
PyQt5/bindings/QtMultimedia/QtMultimediamod.sip,sha256=Ri3-_5qFZJFoS43eaBOQRe2yXpQKHCrbxRQwPtggItk,4600 |
||||
PyQt5/bindings/QtMultimedia/qabstractvideobuffer.sip,sha256=n24Ma5KJR49y2umA0AdEv5hNnl43C7y_BovGduTdLXQ,2558 |
||||
PyQt5/bindings/QtMultimedia/qabstractvideofilter.sip,sha256=ZwUlf6tbAbbUKEVKEuqBWeAQqtfwUa-SROAC4o-yYEc,1980 |
||||
PyQt5/bindings/QtMultimedia/qabstractvideosurface.sip,sha256=ukOhFn3HsiP9LS23wXIs1fVpw6XguK0jaeoSD7Mrqus,7903 |
||||
PyQt5/bindings/QtMultimedia/qaudio.sip,sha256=F9le0taDG41KqqSMDDOBA4C1noMIXKc_I1C3BOzvfZc,2067 |
||||
PyQt5/bindings/QtMultimedia/qaudiobuffer.sip,sha256=0TN7-6Uc2BbSucSAuNkvcjW330FfUCiCh27JQjozjtM,1599 |
||||
PyQt5/bindings/QtMultimedia/qaudiodecoder.sip,sha256=gzAtZe_dXWdwgyJ4My6E-R4oynjLAz60egGzvFYrRnI,2656 |
||||
PyQt5/bindings/QtMultimedia/qaudiodecodercontrol.sip,sha256=njTCpciQb4Qixw_lzzStuTfntAHq0J5vBG6kURbwLyo,2242 |
||||
PyQt5/bindings/QtMultimedia/qaudiodeviceinfo.sip,sha256=gqjveqAmByOhJ_o2WL6CKp_QGhgllEtA1qgpPl5cTVQ,2074 |
||||
PyQt5/bindings/QtMultimedia/qaudioencodersettingscontrol.sip,sha256=paMKQynLtjSBSfBkaP-hMKcc_kWzlCyoOkrrBCidjLw,1663 |
||||
PyQt5/bindings/QtMultimedia/qaudioformat.sip,sha256=f5Z8FYVCzjKuOMiR0hqaXLoReIFg-yCq-FoKHdJawSA,2337 |
||||
PyQt5/bindings/QtMultimedia/qaudioinput.sip,sha256=SIktSB1O-figmlFQxoNHnihKGSqeZdYRYFyDWOB8HIo,1996 |
||||
PyQt5/bindings/QtMultimedia/qaudioinputselectorcontrol.sip,sha256=bKdtBKiRdQnRvRIkG0qhMvhl4YdHlpamaTMrvoUxbAw,1656 |
||||
PyQt5/bindings/QtMultimedia/qaudiooutput.sip,sha256=tAJakK01scrbJR096MnMlxxIkU5jNZwiqTUkJNRRW4I,2073 |
||||
PyQt5/bindings/QtMultimedia/qaudiooutputselectorcontrol.sip,sha256=ZsrMNksNF_0E3VbV9J9p8gbJ8fA8nE-K39u1UwrT91c,1668 |
||||
PyQt5/bindings/QtMultimedia/qaudioprobe.sip,sha256=uXdMRZB9dUMgIRrEL-NDlL00tzc02iHf-r3Gm9NLGxM,1375 |
||||
PyQt5/bindings/QtMultimedia/qaudiorecorder.sip,sha256=P50DRvDz6ht8GOQcMnPgb0Z2Xic3OsaS3g45mCZRErc,1633 |
||||
PyQt5/bindings/QtMultimedia/qaudiorolecontrol.sip,sha256=tGW4cXo8WuCk0zGR5RFylNP7cfUFPXEsDC4p1kQ8nB0,1473 |
||||
PyQt5/bindings/QtMultimedia/qcamera.sip,sha256=-P56HWaHbTjLtEi_FhKYIl1r_GDGwZIEOdMLD0WFo6g,5926 |
||||
PyQt5/bindings/QtMultimedia/qcameracapturebufferformatcontrol.sip,sha256=m5Qdr-v5_OrjpdswfwOYN3wQqClVN8qNQbLahzdLGnY,1589 |
||||
PyQt5/bindings/QtMultimedia/qcameracapturedestinationcontrol.sip,sha256=704a9Ta7CPK4av8gT6GUkxSNYpL0u1JZt3pt3vyx3yE,1692 |
||||
PyQt5/bindings/QtMultimedia/qcameracontrol.sip,sha256=DPE7GuTXUBi8gccSzVkhsLF6M863LfUcIdNMV5PHBu0,2060 |
||||
PyQt5/bindings/QtMultimedia/qcameraexposure.sip,sha256=ltmLJBE6TYTBXPfISuhBWs5UNxqBn6H9ANfKKk0t1W8,4523 |
||||
PyQt5/bindings/QtMultimedia/qcameraexposurecontrol.sip,sha256=ZZkauuyosatfwdLIaPQvwiHynlILY_WQldrZzLWl7qg,2250 |
||||
PyQt5/bindings/QtMultimedia/qcamerafeedbackcontrol.sip,sha256=BdJiWexD2TNbA0nCqxXfaM-EI_Bsw6Q5RVHyTuUExo4,2009 |
||||
PyQt5/bindings/QtMultimedia/qcameraflashcontrol.sip,sha256=sBsZaPz2e7DeQ1ox4QyUzNJ8ezrPAwFYiqkGe6o2sms,1528 |
||||
PyQt5/bindings/QtMultimedia/qcamerafocus.sip,sha256=UMQ5_nk6JPQ-iquGV14PdTTIztdBJqptTTHle63p0qo,3314 |
||||
PyQt5/bindings/QtMultimedia/qcamerafocuscontrol.sip,sha256=1HKJgKGHWZhPIocwh2xo5HFnxtHtuguggPQQb5BbhF0,2072 |
||||
PyQt5/bindings/QtMultimedia/qcameraimagecapture.sip,sha256=3CqcQ8rL99r3itumAbV2HV6o9tPekpCqxSdie7f4VfI,3644 |
||||
PyQt5/bindings/QtMultimedia/qcameraimagecapturecontrol.sip,sha256=C70MnGpRGbT5suBjKnNXUYvK3jIWpuBoCFL4Le0Ho9g,1983 |
||||
PyQt5/bindings/QtMultimedia/qcameraimageprocessing.sip,sha256=O0vWe1OAifcThGSJxiqyezYNvubx45jUPGIYwg4-o8k,3154 |
||||
PyQt5/bindings/QtMultimedia/qcameraimageprocessingcontrol.sip,sha256=eq8bxN_DXhXwma3nKb5Ex-URunIYg-fGWOrkfDd9B3Y,2153 |
||||
PyQt5/bindings/QtMultimedia/qcamerainfo.sip,sha256=FZpas_t2mwa2Y_Gz5JNawF6uAaDzWWRN9Jfr2GyfuQ0,1694 |
||||
PyQt5/bindings/QtMultimedia/qcamerainfocontrol.sip,sha256=UgUAGIoYPWK9o1OLX3-bPMmc2ieMP1dS0NjnRpc7ams,1378 |
||||
PyQt5/bindings/QtMultimedia/qcameralockscontrol.sip,sha256=w7A3gQKR-hfYDvH9yOmf4Vbid2ZNRxro41eecZ9sBu8,1611 |
||||
PyQt5/bindings/QtMultimedia/qcameraviewfindersettings.sip,sha256=qudy3il8lSlNufuN7XTuPcy4741NbuyymXplco8GTJ8,2139 |
||||
PyQt5/bindings/QtMultimedia/qcameraviewfindersettingscontrol.sip,sha256=3unENKXrvXuDIWk--kixfI3MYQFG3GUNyJ1fVNeqi-o,2406 |
||||
PyQt5/bindings/QtMultimedia/qcamerazoomcontrol.sip,sha256=_Berr6x6cX4ndn9dI27uZi0a9ordKKArNhH6LiatvqI,1919 |
||||
PyQt5/bindings/QtMultimedia/qcustomaudiorolecontrol.sip,sha256=eXkrWKO54fnVys4eJPC2vw3cd2W4ZEEtAEboWxQlSpU,1519 |
||||
PyQt5/bindings/QtMultimedia/qimageencodercontrol.sip,sha256=oDw81AC9rwfh8FRwJ6G4nBTW0UvXTsLBDvdP2RTM5fw,1626 |
||||
PyQt5/bindings/QtMultimedia/qmediaaudioprobecontrol.sip,sha256=6MaFO7UevNc4hLu55WL910A5siaKRevgrSatqCtqpPY,1334 |
||||
PyQt5/bindings/QtMultimedia/qmediaavailabilitycontrol.sip,sha256=nornzcjg30SN2n2avc9Pmr5NZg04dtw3J3fH5F4-Y24,1416 |
||||
PyQt5/bindings/QtMultimedia/qmediabindableinterface.sip,sha256=6v52tIibGXZPpm0UzfzvwMZ1Q5614XPmg5Xa6EsGSsc,1267 |
||||
PyQt5/bindings/QtMultimedia/qmediacontainercontrol.sip,sha256=SZ2dVjG3C_OHhDiSCVIpO_brEsWIMRo6Y6pvhd3-t3o,1498 |
||||
PyQt5/bindings/QtMultimedia/qmediacontent.sip,sha256=iGoXd6yez4jlp8o15CEYOd6rYV4KffQnturQkEJRxd4,1870 |
||||
PyQt5/bindings/QtMultimedia/qmediacontrol.sip,sha256=7-Tk6HghZvmx95vmfenwKzFRtw77Vwo9FrRJXK503x0,1294 |
||||
PyQt5/bindings/QtMultimedia/qmediaencodersettings.sip,sha256=iWzpwCX64CXh_bqvZCvn51R-TfVjYsqAaNzfe9x_zCg,4158 |
||||
PyQt5/bindings/QtMultimedia/qmediagaplessplaybackcontrol.sip,sha256=1X1prIbvkFjsq07Qej-3gWkmKjFrVOiTuq7wIHHuvJ8,1698 |
||||
PyQt5/bindings/QtMultimedia/qmediametadata.sip,sha256=zywmhwsIKR2woxO6W71LTIP8HAtbzE4JqthTV7XXvlQ,3993 |
||||
PyQt5/bindings/QtMultimedia/qmedianetworkaccesscontrol.sip,sha256=mrT8hKZ7LmATR8dXCwiiFt0sY2Acdqr_k0KeHSZAv0w,1510 |
||||
PyQt5/bindings/QtMultimedia/qmediaobject.sip,sha256=PybY61rjzMKkYYm_XcQ3QAsvlTJHbTurhqCFknMXOks,2091 |
||||
PyQt5/bindings/QtMultimedia/qmediaplayer.sip,sha256=6HaJ15M2hGn2hOtoS20hYA_65EvUr9t2PUsUXNWbB0g,5106 |
||||
PyQt5/bindings/QtMultimedia/qmediaplayercontrol.sip,sha256=QXeMJFzEJrP0qLPTSbn441ueBjd34b57N7oYDqopsBM,2972 |
||||
PyQt5/bindings/QtMultimedia/qmediaplaylist.sip,sha256=CoIe8OcDqqTWNwpBXQHDeHdP7fYVkSACw6pK18Wr0kE,3559 |
||||
PyQt5/bindings/QtMultimedia/qmediarecorder.sip,sha256=shewg_d1L9FIuzRpurepCmWpmM2GH2oP0RgV1CEYyR8,4562 |
||||
PyQt5/bindings/QtMultimedia/qmediarecordercontrol.sip,sha256=fdwsOFWt4sCqU0sOsuMoF7u4DtIUwRvcqrdE0w6QAGw,2134 |
||||
PyQt5/bindings/QtMultimedia/qmediaresource.sip,sha256=cHotO3CcxfI1yoicJv9kaMOHMagg6zDWqMv1UDbGDSM,2337 |
||||
PyQt5/bindings/QtMultimedia/qmediaservice.sip,sha256=Wz_NSDrlVXOEXZt6iX-p9W5_tdKOT-ivNlE7siSlFuw,1305 |
||||
PyQt5/bindings/QtMultimedia/qmediastreamscontrol.sip,sha256=HJAUC66h3W8xs5jGJWvtUDPqO1XSWI82U1RhPXoNfD4,1762 |
||||
PyQt5/bindings/QtMultimedia/qmediatimerange.sip,sha256=lgX1SJ_MFrFVmTYlF-Szr53Wk33rXJg8vSovK0yj0GI,2967 |
||||
PyQt5/bindings/QtMultimedia/qmediavideoprobecontrol.sip,sha256=X1kvyP8MxIkB9_Tv_EwDltCdaj9EOBXemDqCCfuPXIE,1331 |
||||
PyQt5/bindings/QtMultimedia/qmetadatareadercontrol.sip,sha256=vh4Bnj_hT6_TMekDEjFWn89vQqooLIVYiKOBp3vvXRU,1573 |
||||
PyQt5/bindings/QtMultimedia/qmetadatawritercontrol.sip,sha256=xyI9VB2eq8LPDQDTVQ98bFSTS7xyASguTC6-Tw0ptn0,1735 |
||||
PyQt5/bindings/QtMultimedia/qmultimedia.sip,sha256=J36elHmaoLUIWvYuZbYHLRfFbUsctL5eWaEBFqyS8bk,1661 |
||||
PyQt5/bindings/QtMultimedia/qpymultimedia_qlist.sip,sha256=AbqrTxpaejsBEjPTGuSqeBv4jBU7Kas1-XooC2aIZOg,9462 |
||||
PyQt5/bindings/QtMultimedia/qradiodata.sip,sha256=AcL4Zve6oViEgbeUtthJuTajnRMqeKWSxNifE4u8E3M,3284 |
||||
PyQt5/bindings/QtMultimedia/qradiodatacontrol.sip,sha256=I19bFLBPgFeRIy769-dKJ1gy6c6zyQsPkNpXE5-lY_M,2076 |
||||
PyQt5/bindings/QtMultimedia/qradiotuner.sip,sha256=0M64qzZU1-azam_VYa-E2CAnnhI2RU0ivKDDSefe91Y,3392 |
||||
PyQt5/bindings/QtMultimedia/qradiotunercontrol.sip,sha256=qZgsCzYHZMCMk4JKGFcKfyL7hjcjiesr9qDCq2Inkts,3037 |
||||
PyQt5/bindings/QtMultimedia/qsound.sip,sha256=L12W09C_XV1J1x6a6bEYvps4PWjgVyP7RPTw8b-pxPk,1452 |
||||
PyQt5/bindings/QtMultimedia/qsoundeffect.sip,sha256=ZwW5lTf-dNEh9p1vXr4dFEDHlt7s954iU4yT5yTTZiI,2268 |
||||
PyQt5/bindings/QtMultimedia/qvideodeviceselectorcontrol.sip,sha256=1H52mlg0AK2ew6FcGJ1pLyFp2ecGlFsFDhrLmzfpO1M,1719 |
||||
PyQt5/bindings/QtMultimedia/qvideoencodersettingscontrol.sip,sha256=wP8hZ7Xf2UIvX9ExfNRkA4ZLsArDCNBg-pwyLT4xdYw,1785 |
||||
PyQt5/bindings/QtMultimedia/qvideoframe.sip,sha256=bgHho2bf21tD0Zu_Nu-LMh37uCKnex3JOlIqVBgo9pg,4494 |
||||
PyQt5/bindings/QtMultimedia/qvideoprobe.sip,sha256=6yP_OAjmwDwwB5JjiTRZHA4_vQPA5lA2cAlKg7TJKFQ,1372 |
||||
PyQt5/bindings/QtMultimedia/qvideorenderercontrol.sip,sha256=VvR1_T1ozqxoaALPeqs60BPxaodMKyKgzIwWLLLLkvo,1359 |
||||
PyQt5/bindings/QtMultimedia/qvideosurfaceformat.sip,sha256=P0BJuThhLiswUewQBiPSe68t_GzaGTtWD1deOqHBLH0,2933 |
||||
PyQt5/bindings/QtMultimedia/qvideowindowcontrol.sip,sha256=seUneAexkzMl4kgYnCfD1wSxztbQMZSA17_TTqXltDo,2307 |
||||
PyQt5/bindings/QtMultimediaWidgets/QtMultimediaWidgets.toml,sha256=5aszZH0lGWyVJ5x-jaf6N3Yg-spw838eXWToeDdEj0o,194 |
||||
PyQt5/bindings/QtMultimediaWidgets/QtMultimediaWidgetsmod.sip,sha256=2WbZqIwJYwGzzuKwsy2zBQY_uQbl0PCFj1LZmJhRJrU,2194 |
||||
PyQt5/bindings/QtMultimediaWidgets/qcameraviewfinder.sip,sha256=yEBtXOgDvvDldNx6Axh3u3OsWykkcWDwrlXZdaYhnr0,1434 |
||||
PyQt5/bindings/QtMultimediaWidgets/qgraphicsvideoitem.sip,sha256=tvaijTVXQfwwzpw8fWgP0JEP-cTnUyGcYTe9mgC_EG4,2301 |
||||
PyQt5/bindings/QtMultimediaWidgets/qvideowidget.sip,sha256=v8Ffn48EgmdV1cBXpYojIXIeAf3gTfw9qPnNTzWFu3g,3260 |
||||
PyQt5/bindings/QtMultimediaWidgets/qvideowidgetcontrol.sip,sha256=oLLJa5nBKD4d8Gqu-ia0F5XBG9rftSpOK4PdqITXWWA,2071 |
||||
PyQt5/bindings/QtNetwork/QtNetwork.toml,sha256=ZF8lIMEK7V3PFgZff-On4iUfUeoTnVNyQG_hWGmi4qM,184 |
||||
PyQt5/bindings/QtNetwork/QtNetworkmod.sip,sha256=D9-4dH2BmkbZwGq-1RDzIdqdigAeBJ16eIW53MAevWE,3184 |
||||
PyQt5/bindings/QtNetwork/qabstractnetworkcache.sip,sha256=3MzrpGhWzvjdfRjtKPU5ZQzyjYTh8wvPYkjnyEs06cQ,3069 |
||||
PyQt5/bindings/QtNetwork/qabstractsocket.sip,sha256=-yNVEBgeMRCJ3MUPXFYkCRRj8sfJEWdbi0vav31a3t4,10800 |
||||
PyQt5/bindings/QtNetwork/qauthenticator.sip,sha256=zELgNCBJG6rYoNtcopEYtdc0Oq-X3I9L1KjX5hXnRk0,1628 |
||||
PyQt5/bindings/QtNetwork/qdnslookup.sip,sha256=pLiI09iFA_L2TkXiyEUWcQbXetyCqQowcX5_3iqeyhU,4864 |
||||
PyQt5/bindings/QtNetwork/qhostaddress.sip,sha256=Y82TbyPFCvFtTzUYbAjsB5Cy6bvbxxxkpTCCO-EGsxc,6167 |
||||
PyQt5/bindings/QtNetwork/qhostinfo.sip,sha256=LJEde2G9I1bk0bX3z7oEC4kZdVzgmyqDuLDS1ybJR44,3099 |
||||
PyQt5/bindings/QtNetwork/qhstspolicy.sip,sha256=sLcIooTgT9eYq9c_9JMDqCBnyTtEACuYYsZpa7kcTvY,2174 |
||||
PyQt5/bindings/QtNetwork/qhttp2configuration.sip,sha256=9612cpERDQdq4T7lgjQ4ZtlL4qbL7si33zmBmTH3MuA,1987 |
||||
PyQt5/bindings/QtNetwork/qhttpmultipart.sip,sha256=tbguXB17vZj-sR7sqA0eqWFxbjxS-QNaBPmGq2wLRfU,2175 |
||||
PyQt5/bindings/QtNetwork/qlocalserver.sip,sha256=hXVR23lBaU7oDMEF6FJC4mke51052Zq3VLWe1swjudM,2436 |
||||
PyQt5/bindings/QtNetwork/qlocalsocket.sip,sha256=G64UcEpNKJP-PuJcY1TFiOTJQEVkSFiu893CBx-eWb8,4647 |
||||
PyQt5/bindings/QtNetwork/qnetworkaccessmanager.sip,sha256=WEb5cSprS9ajLLc7PRKO7ZHy7Cl_a5nKqsh9wYB8SVg,6052 |
||||
PyQt5/bindings/QtNetwork/qnetworkconfigmanager.sip,sha256=3tAPpKhMw41J1nefY_4dOXy5AAU5niBsRKOncr1m2HM,2584 |
||||
PyQt5/bindings/QtNetwork/qnetworkconfiguration.sip,sha256=YJAWRxOi0tauzwRRwYNwbNR-XruMfB8vU-1J5zupBQc,2906 |
||||
PyQt5/bindings/QtNetwork/qnetworkcookie.sip,sha256=-fOBaSSibsjSGjJfb7XIuG8wI0ssehdEAE1JO3CoaO8,2305 |
||||
PyQt5/bindings/QtNetwork/qnetworkcookiejar.sip,sha256=K2z7pXaJBS6aKXDTk2_dDYDYsf_-qq2MmfQLEyn73x0,1761 |
||||
PyQt5/bindings/QtNetwork/qnetworkdatagram.sip,sha256=qjSiFipeWTWh9b_KmykKCIwQRIw_U7NfM6tOh_dmveQ,2020 |
||||
PyQt5/bindings/QtNetwork/qnetworkdiskcache.sip,sha256=jef88IeiCs37q1OAgedTWoq25dG9bzBBtRuvlGLADOY,1931 |
||||
PyQt5/bindings/QtNetwork/qnetworkinterface.sip,sha256=Ou-K9e_YExeCvwvdb6htLYSghh4l3sVL9HW5-1pCeO4,4334 |
||||
PyQt5/bindings/QtNetwork/qnetworkproxy.sip,sha256=C9UCdSWA2N64ThLpRFhyeQJwPA77CU5pPvyM2mhn38Q,6066 |
||||
PyQt5/bindings/QtNetwork/qnetworkreply.sip,sha256=9oFEZDN6n3LtEEFjRto6QP38OYtJLCv7sITBgqqIl9I,5309 |
||||
PyQt5/bindings/QtNetwork/qnetworkrequest.sip,sha256=XyFg9jAGs2gMdPi1OdAt7jyVfyizqaZQUTvHv1XyW5Y,5549 |
||||
PyQt5/bindings/QtNetwork/qnetworksession.sip,sha256=L8Rj0whmjKByG_U_YBT-pU-pLqy6b4qQspZTeDh3vJI,3012 |
||||
PyQt5/bindings/QtNetwork/qocspresponse.sip,sha256=w9mJ3DZUAxae9B5DTiJTrJM4_66rkEYyJfNN9A5swWk,2264 |
||||
PyQt5/bindings/QtNetwork/qpassworddigestor.sip,sha256=CMIKWRevLNJNM_ykdvYH8VOOVhVuQPWfEVG0S8qjYzQ,1439 |
||||
PyQt5/bindings/QtNetwork/qpynetwork_qhash.sip,sha256=c7F9H4zIfAEjWRLhQRqbAWHOUUKsw_-k9QecR4e07uE,3590 |
||||
PyQt5/bindings/QtNetwork/qpynetwork_qmap.sip,sha256=EuLf5yvAe-PAIVuej_kNoecNIOpOIvnrI_T0vm6YpE8,5232 |
||||
PyQt5/bindings/QtNetwork/qssl.sip,sha256=qfJGwxo7Yi8ZP_jwkNalCktjAnltmiWFjpwvsR90IuE,2771 |
||||
PyQt5/bindings/QtNetwork/qsslcertificate.sip,sha256=oTeOwrb8fkHtTZKVcOwmw2Zwau835WLgiu13JC8mE44,3964 |
||||
PyQt5/bindings/QtNetwork/qsslcertificateextension.sip,sha256=0U6FvPHgEp85CYBvYJRBPTHobIq-LDHfxXJtSyCMMFI,1469 |
||||
PyQt5/bindings/QtNetwork/qsslcipher.sip,sha256=oUHQnBwCEGvjqe6h3MCDMS38jLxGedS2JwpwS9qxhwc,1769 |
||||
PyQt5/bindings/QtNetwork/qsslconfiguration.sip,sha256=Yfn1zZVK7ELjARyZ6v8N2yzsPR9nGzN7GeQkkrIsQDo,5450 |
||||
PyQt5/bindings/QtNetwork/qssldiffiehellmanparameters.sip,sha256=lXvrKPpD2IFfwDvTleL_72UaYBmV8vDEKuEDL8brkK0,2345 |
||||
PyQt5/bindings/QtNetwork/qsslellipticcurve.sip,sha256=p1CYlgRa44Z6hJyQCTNti5qhxta4QWlnDIHfr4D0nrk,1712 |
||||
PyQt5/bindings/QtNetwork/qsslerror.sip,sha256=FjxO2L6aCFAW5Xe9cM5l-QW92T6uG2txKCZP4BmAFdw,3206 |
||||
PyQt5/bindings/QtNetwork/qsslkey.sip,sha256=nbr4NqG5Ab0_EJg1TFC3rzyGlhbzP9n1BdimOguUKDI,2072 |
||||
PyQt5/bindings/QtNetwork/qsslpresharedkeyauthenticator.sip,sha256=P760AAE2vAid1MYRBgR8VdtJtXnG_qpEOw1IHqnIOgU,2006 |
||||
PyQt5/bindings/QtNetwork/qsslsocket.sip,sha256=K75KOF_QkgPtEGLRN_pY6sqGODnFBa15D8FBgpfvOCk,8303 |
||||
PyQt5/bindings/QtNetwork/qtcpserver.sip,sha256=dVjD0Ce2iCCJJgtjv9PdJ1UcI4RUG__3uPAqpKtrPVQ,2197 |
||||
PyQt5/bindings/QtNetwork/qtcpsocket.sip,sha256=USDXVVukSBjbM6WjabId_OGl6xwQ4l6eqUEmqOMvFQo,1166 |
||||
PyQt5/bindings/QtNetwork/qudpsocket.sip,sha256=UniWoIEJ4lBTDgXMMw30O7n6xC3tmp4mIJU5FivvLfE,3105 |
||||
PyQt5/bindings/QtNfc/QtNfc.toml,sha256=Vr2wajB4PKcC9imX3wMtrWr6P4u9ZqI-JFFm9A_4TBw,180 |
||||
PyQt5/bindings/QtNfc/QtNfcmod.sip,sha256=tFDFoweYzt8EO7aYZeAHDq6gqhPcJ_xhrXfnw38z7H8,2297 |
||||
PyQt5/bindings/QtNfc/qndeffilter.sip,sha256=X_jwD8KBcWKP-TJoWHabG2frEnfB_BsJ3cyWWqZTgiU,1766 |
||||
PyQt5/bindings/QtNfc/qndefmessage.sip,sha256=tklaX0jDbGSLs42BNumCPQ_-wKk4PNSaIyNUcvYJMgE,2252 |
||||
PyQt5/bindings/QtNfc/qndefnfcsmartposterrecord.sip,sha256=mFbdWFEhYlLwJLTd1Ltd4YabJjvbNkdAr4UFRMi5wvo,3441 |
||||
PyQt5/bindings/QtNfc/qndefnfctextrecord.sip,sha256=Ks5rHDtSZnxumowXgNQdDLGqzYCgxpBo92qyeoE-xjU,1520 |
||||
PyQt5/bindings/QtNfc/qndefnfcurirecord.sip,sha256=sTiYvrfm6uKWWdWVAZH-D-0pTrpJ0shrxo83AafczbE,1251 |
||||
PyQt5/bindings/QtNfc/qndefrecord.sip,sha256=u1Qh9PtyaOoQb45ks51HRiOkrk3owchOFYA1w371J1g,2605 |
||||
PyQt5/bindings/QtNfc/qnearfieldmanager.sip,sha256=nbXDzp9QohO1B-MdBY0tJ2auCdGXEVEHiC5jJOpqTWg,5384 |
||||
PyQt5/bindings/QtNfc/qnearfieldsharemanager.sip,sha256=7MRZLX52PHkNeAfShOGUHzsIs6hWXf1nleqi-xG3lYQ,2344 |
||||
PyQt5/bindings/QtNfc/qnearfieldsharetarget.sip,sha256=L9TjUAqIscLsxU8RGLF0itVmyb62v82IGCxjiPB3eZE,1550 |
||||
PyQt5/bindings/QtNfc/qnearfieldtarget.sip,sha256=Xx2pzYbdRbdDWuGI3Nra6PiWnBrUVwF-nlwHYm_uv0E,4233 |
||||
PyQt5/bindings/QtNfc/qqmlndefrecord.sip,sha256=D_DMMtRr7B5CSMWbqQy4Z7sRufMMVtcKSk5kq7V6vSY,1834 |
||||
PyQt5/bindings/QtOpenGL/QtOpenGL.toml,sha256=lKNQLg_6_YvW9MkycLFk3tXf8iiaSJ1qI-u2N9b_p54,183 |
||||
PyQt5/bindings/QtOpenGL/QtOpenGLmod.sip,sha256=buBes7T-ui-b3oadDeAE1ayYDtlJ1ONyQavWR5fM0HA,2039 |
||||
PyQt5/bindings/QtOpenGL/qgl.sip,sha256=0i5uuQWaQ-Ju7fHDCNg8E37ZfewAq6V8w9Ry8knTcYE,11047 |
||||
PyQt5/bindings/QtPositioning/QtPositioning.toml,sha256=hdolSHBEoh_kIEjNGfONo1cb_EU39DH4WKk5q6nvbCg,188 |
||||
PyQt5/bindings/QtPositioning/QtPositioningmod.sip,sha256=lMYwfCuFva17vJGPakv_CSMpJkdcr01ihjqFTOy4RcE,2387 |
||||
PyQt5/bindings/QtPositioning/qgeoaddress.sip,sha256=GcQiCfGcLKAVzJf82Zdv9Juub9XcKrNuxVIx_8ux_Ww,2045 |
||||
PyQt5/bindings/QtPositioning/qgeoareamonitorinfo.sip,sha256=rAhYujAre_HURjTAv-PJ5uxO-3YWCKJwv9NdZ8vQFoE,2088 |
||||
PyQt5/bindings/QtPositioning/qgeoareamonitorsource.sip,sha256=aUFAWwhOYf3C5auJb2Q316ny9KJLgxltwuvJlnGctdk,2971 |
||||
PyQt5/bindings/QtPositioning/qgeocircle.sip,sha256=FBsMiPzUzqI3VaQraC34xPTyNKuQnsE6VRTcjtADUew,1836 |
||||
PyQt5/bindings/QtPositioning/qgeocoordinate.sip,sha256=BMrQQTRF2w1eTxnuUeoAAIQcUnKaVvPwCi87OVlTdAc,2765 |
||||
PyQt5/bindings/QtPositioning/qgeolocation.sip,sha256=kUhYxAxG-U6yyZcgyvEv8A5Ci80MSWGvTv9pMgnpfS0,1748 |
||||
PyQt5/bindings/QtPositioning/qgeopath.sip,sha256=b3Zg2kjXV8UgnmCzQOCKq9WgE18Tzs9MTBtzvjXznf8,2322 |
||||
PyQt5/bindings/QtPositioning/qgeopolygon.sip,sha256=uQC9DD9sFwp8xXg_FrMC-7fD5rR8D9RAXSiDiLpyH10,2768 |
||||
PyQt5/bindings/QtPositioning/qgeopositioninfo.sip,sha256=gu_tZSmKDDi4cLJ8hQ-HZXjwK9YcJyNFadazfnk-OUg,2318 |
||||
PyQt5/bindings/QtPositioning/qgeopositioninfosource.sip,sha256=tAYqmmYuCFA7w-ogook2s9o1-CXOKjJUCiDZTT7QzoE,4504 |
||||
PyQt5/bindings/QtPositioning/qgeorectangle.sip,sha256=UR3AXMubd1r2f505MWtm4eNEG2p6Zd1Nw1mYJIw8qUo,2846 |
||||
PyQt5/bindings/QtPositioning/qgeosatelliteinfo.sip,sha256=bfcQnHXPZI0W-iSmQFaCBzBxkSwsMVLifOqcX6lSiuE,2321 |
||||
PyQt5/bindings/QtPositioning/qgeosatelliteinfosource.sip,sha256=igCENVoKKbukSAtp8Fonybrx0r0yttSsUcX5cYXKxZI,2666 |
||||
PyQt5/bindings/QtPositioning/qgeoshape.sip,sha256=6iFgwkR58mlVX5LG_6vYdlBj4zjEAlKhoU9G3AOSbzc,2684 |
||||
PyQt5/bindings/QtPositioning/qnmeapositioninfosource.sip,sha256=xkE8S3ZbbzMqAkKKxa6oqpVK3LcDfi66HJHxo_GAHwI,2315 |
||||
PyQt5/bindings/QtPrintSupport/QtPrintSupport.toml,sha256=iWixZb5IWcpYu_qgrwZ2R2FHnmNgMMDrzD461rpP-zg,189 |
||||
PyQt5/bindings/QtPrintSupport/QtPrintSupportmod.sip,sha256=VRJQVV2K6EvSXNJQYYehWx129PEWz7U5T7VDUpknk0A,2313 |
||||
PyQt5/bindings/QtPrintSupport/qabstractprintdialog.sip,sha256=IZdEiNSYzVnfyiO6N-S5uUy85ufMo25pf-DI8n4-l-Q,5150 |
||||
PyQt5/bindings/QtPrintSupport/qpagesetupdialog.sip,sha256=QPQl5u0XBA1Wukn6yM8S1PEOSbwBRYcWi7kWBXSI-g4,3359 |
||||
PyQt5/bindings/QtPrintSupport/qprintdialog.sip,sha256=vDtWhTyzCKIj5VongfK4zu765O9-yJ0gzwZYRFCjgUE,3748 |
||||
PyQt5/bindings/QtPrintSupport/qprintengine.sip,sha256=Ggw30LWXg1dNEX9eQ4cRaYeaP_QupoQ6wTqj3SE3OhY,2501 |
||||
PyQt5/bindings/QtPrintSupport/qprinter.sip,sha256=vr9OiQu5K-oBSH7Hr8_SMHmQvGo8RddShv-0POGJE7Y,5949 |
||||
PyQt5/bindings/QtPrintSupport/qprinterinfo.sip,sha256=aA3nas2bF_USPxOSLKLh500lAYJzU1yMbK0IueuV5GU,2754 |
||||
PyQt5/bindings/QtPrintSupport/qprintpreviewdialog.sip,sha256=lX9egB9EHx9z5S_A8tsf7ACX1eF9nqXc9IQ-FoQRoJA,2093 |
||||
PyQt5/bindings/QtPrintSupport/qprintpreviewwidget.sip,sha256=wMg4p5CA83w2t6-TbteWofQK6KtZlJSi8sgnTl7P8Fg,2688 |
||||
PyQt5/bindings/QtPrintSupport/qpyprintsupport_qlist.sip,sha256=4Tu3--nBj7zskiKpuLLGPj151GO44zqLVcpmBR1NWEk,7520 |
||||
PyQt5/bindings/QtQml/QtQml.toml,sha256=9KKgk4W55sb4lJj74glqMD5kheHRx99tHl7o9rlj2pw,180 |
||||
PyQt5/bindings/QtQml/QtQmlmod.sip,sha256=M29K3k_ydaVoP_Xdbq-BUwcdgEZGqIB4-yb4LhURZMY,2714 |
||||
PyQt5/bindings/QtQml/qjsengine.sip,sha256=aqjD0SAPpJChfQ2MUZiMhH5QrJ_cNpB70M1Ts_XGFrU,4536 |
||||
PyQt5/bindings/QtQml/qjsvalue.sip,sha256=jzSgkqMoM2knO1nDR7LhyMLs5XiZ9syz0AMupLd6szs,3271 |
||||
PyQt5/bindings/QtQml/qjsvalueiterator.sip,sha256=dd6OEeibq4h5X_ktHEuiKnh0Rkqg_RzdJbbz54E8sgw,1306 |
||||
PyQt5/bindings/QtQml/qmlattachedpropertiesobject.sip,sha256=ftoOMBAwhY_kLz7_LNRXDZiPPZuA2H9diX75luehq9A,1561 |
||||
PyQt5/bindings/QtQml/qmlregistertype.sip,sha256=vSsKQbL97QcEeMtdKKFMAIzFpK-7NbEDsziFp99hbdE,3663 |
||||
PyQt5/bindings/QtQml/qpyqmllistproperty.sip,sha256=tWZeDYFFWBrsqVdDlWo8O00SFb3lzs_IUVljeNAeEfo,1453 |
||||
PyQt5/bindings/QtQml/qqml.sip,sha256=pF-vOQBlObsOqEpwtm81Qxavu9QE7j9NYIlnd7i5-5s,1154 |
||||
PyQt5/bindings/QtQml/qqmlabstracturlinterceptor.sip,sha256=B6Owu1aKkJRMIy_SKx4Ka0dD-wWQr_Z2d1KIcBi4ROo,1423 |
||||
PyQt5/bindings/QtQml/qqmlapplicationengine.sip,sha256=1mvujln5fF_r3ZoEC3Mir_lyKxD4RitMIBDWDNY9TEw,1946 |
||||
PyQt5/bindings/QtQml/qqmlcomponent.sip,sha256=y2BlkORbyLXmdDZfHT6g9Zv5aDV6X3FAqL2K3XpH0fg,3092 |
||||
PyQt5/bindings/QtQml/qqmlcontext.sip,sha256=LobePNezIE864DDmf2ZJmXBIdLvuozzEccDh_p5SIKA,2030 |
||||
PyQt5/bindings/QtQml/qqmlengine.sip,sha256=_3d6G_ERv5gae5WmUfQkh_JhfWzp6k7zdy3gQ4vgl0I,6009 |
||||
PyQt5/bindings/QtQml/qqmlerror.sip,sha256=8lWA09fIvXDQfD7K0BbJiW2qWs-emlnS3VecrGvRppY,1654 |
||||
PyQt5/bindings/QtQml/qqmlexpression.sip,sha256=7EFIWXuZa1K67Cu1jeXLiDv-10MuKn6RC7dRFi6rR6k,1977 |
||||
PyQt5/bindings/QtQml/qqmlextensionplugin.sip,sha256=lBBYbxNik_eNgvE-ShOg2BYwFTRjB5rfMEQCPCH9mVI,1719 |
||||
PyQt5/bindings/QtQml/qqmlfileselector.sip,sha256=1e6vZddp9cUVYRCglw0Q5MrHy1dgQRTRpczZaMBslfw,1538 |
||||
PyQt5/bindings/QtQml/qqmlincubator.sip,sha256=cN0LakdgAZab2FU7m0dVcUstFaSu-yIa_ofwG3ESJBQ,2442 |
||||
PyQt5/bindings/QtQml/qqmllist.sip,sha256=hLJ5oFHrsFbBuIveBwQdg12ztMPtyVZrRun9aLlXNvc,1868 |
||||
PyQt5/bindings/QtQml/qqmlnetworkaccessmanagerfactory.sip,sha256=9eKdl_yJJ9Xs7onZ1LO-3auU1fEooUJO5VWuXs8N8xM,1231 |
||||
PyQt5/bindings/QtQml/qqmlparserstatus.sip,sha256=CYBG4_bvWyo4dTROjjRAcbIO3592euYl5ZLZlBjDM4w,1269 |
||||
PyQt5/bindings/QtQml/qqmlproperty.sip,sha256=PCS9i0nE4tiLCc52WQjAm1yi8ThkMZIc0aFczu6X2KI,4127 |
||||
PyQt5/bindings/QtQml/qqmlpropertymap.sip,sha256=ZS9aIxDL4VQGbI4n60WA8qSntstmkz-F8LB06_42dxM,1708 |
||||
PyQt5/bindings/QtQml/qqmlpropertyvaluesource.sip,sha256=tIAKSiqnlGhmwx9ca_CP4XfSABoxqD--BlkyaxruDQw,1287 |
||||
PyQt5/bindings/QtQml/qqmlscriptstring.sip,sha256=GzhFJM6rM506Cwshgp_hk9_Rjpv_dOcVOkIDKkjReWI,1546 |
||||
PyQt5/bindings/QtQuick/QtQuick.toml,sha256=qrW8PJ9kpmPlRzPCmjQstxkUsx-6h8mSQZULCufama0,182 |
||||
PyQt5/bindings/QtQuick/QtQuickmod.sip,sha256=bWvimTfszY9m6DNH5IaV1RipO1pwhBGZgFJOY6j5Ep0,2811 |
||||
PyQt5/bindings/QtQuick/qquickframebufferobject.sip,sha256=ssXDd-f-1GLlJpuivfT06Eq-4LTpI0FvYQumXuI_Jo4,2633 |
||||
PyQt5/bindings/QtQuick/qquickimageprovider.sip,sha256=RJialPboAwGm8z4dncmqCil8kXEJgwzYRlPEd5hGEU8,2982 |
||||
PyQt5/bindings/QtQuick/qquickitem.sip,sha256=LWuly5yEIXWSNMHKEjTyS37Q2LgtoTSU6PeEWymawZs,10071 |
||||
PyQt5/bindings/QtQuick/qquickitemgrabresult.sip,sha256=LRhTV6K1GmbqadHAqVwNsEMtpT1G8NyE4y2qIATrzAE,1487 |
||||
PyQt5/bindings/QtQuick/qquickpainteditem.sip,sha256=COnWdasWdYhwTlCQsnHBIw5qQc5MoRwjSpsC56USupI,3480 |
||||
PyQt5/bindings/QtQuick/qquickrendercontrol.sip,sha256=IKfwPzPT6hdTz-HaMKVY0wYC2GTVcQ19l3dsxjqPZcg,1781 |
||||
PyQt5/bindings/QtQuick/qquicktextdocument.sip,sha256=isI8bSYrZvBXHfzEmidDQSIllMdkAXusXBjtbkfPnFA,1285 |
||||
PyQt5/bindings/QtQuick/qquickview.sip,sha256=kXwGXENln9RCc-lHhI_BETdk1WCrFrNHQVkWF9X4dIQ,2445 |
||||
PyQt5/bindings/QtQuick/qquickwindow.sip,sha256=iYHeLd2ZIvxEKIlvvvxj-MRf663VwCZM5TGWZS_Ylhw,9221 |
||||
PyQt5/bindings/QtQuick/qsgabstractrenderer.sip,sha256=xyNHW0-xq2ZlqxtDDgJPP62ZL9H-oGVqEuXBdx1x5GI,2559 |
||||
PyQt5/bindings/QtQuick/qsgengine.sip,sha256=6x2xRvhvUio8occUGcIAambcEi2g4ZuyLMCXA0vIQlQ,2223 |
||||
PyQt5/bindings/QtQuick/qsgflatcolormaterial.sip,sha256=fIV7_aUi8fXGWUkZwZvPaAWOLczThFtUkYF5uC2Mv10,1370 |
||||
PyQt5/bindings/QtQuick/qsggeometry.sip,sha256=ojO_JH5AuRmA_cZMBkEHiun-7gb0fmDrhSH-u9BcLZo,12824 |
||||
PyQt5/bindings/QtQuick/qsgimagenode.sip,sha256=biVnWNPRTtmeHNvxg0X4xNMw93U0IyLmjkeoVWwZCew,2891 |
||||
PyQt5/bindings/QtQuick/qsgmaterial.sip,sha256=k5gAt2v_VAR2vFVyj6P40KADblAFBXOLocTgSVTiHzo,7874 |
||||
PyQt5/bindings/QtQuick/qsgmaterialrhishader.sip,sha256=PAw7-o9hV_VAOgOGQ6CVGwIwmANVPzx-DDkM3_LwUTU,4048 |
||||
PyQt5/bindings/QtQuick/qsgnode.sip,sha256=93n0f8LRmWAcurBuiWrYQAx_xSgcUFcnorpkC-ZHa4g,9134 |
||||
PyQt5/bindings/QtQuick/qsgrectanglenode.sip,sha256=nzePfS6AoGHzI0ZLXbmGotqfsPA_aSgBCDjtU7_U_Pk,1407 |
||||
PyQt5/bindings/QtQuick/qsgrendererinterface.sip,sha256=ZX_IxafrYcA_OS6s7LRdgBhgNxNdjNW-a0uFuXeRKNg,3601 |
||||
PyQt5/bindings/QtQuick/qsgrendernode.sip,sha256=QuYAEBk9w9ghLTLOAMh4lK-FrP11PJONaI51nO5n9NY,2784 |
||||
PyQt5/bindings/QtQuick/qsgsimplerectnode.sip,sha256=sTSqIRYbKitzSvYSogVhedX93TEWqxDy8HryCvCmpWU,1391 |
||||
PyQt5/bindings/QtQuick/qsgsimpletexturenode.sip,sha256=11dauYAwq1YzO3cJ9uxidNsISOMlJTgOTKAI03iwXNQ,2600 |
||||
PyQt5/bindings/QtQuick/qsgtexture.sip,sha256=lfIYaPFxjiCBarWoMp_Oebgknt_LUqDf-WPb5NUhnQI,3108 |
||||
PyQt5/bindings/QtQuick/qsgtexturematerial.sip,sha256=SsvaIrF98Qm7YbQADaTt1qkZOMHiqszafETLW3ROhJs,2226 |
||||
PyQt5/bindings/QtQuick/qsgtextureprovider.sip,sha256=h6LF1CBZylWT9YQ-vtsU0cHbtJHsQPgaS7qJP8_1V9k,1186 |
||||
PyQt5/bindings/QtQuick/qsgvertexcolormaterial.sip,sha256=T0l-4SKiN0TY9Pjc2VFAGc0JATINN4HXSrymrhLXrps,1317 |
||||
PyQt5/bindings/QtQuick3D/QtQuick3D.toml,sha256=r6sSiNXIx7mJhRaIyWLX7VFUmpPmm7SwxBgZZwFLLRM,184 |
||||
PyQt5/bindings/QtQuick3D/QtQuick3Dmod.sip,sha256=OWT3nJUNbdE8qLeXCEF0awKTZ6TZzkPpGFOwIpSQ-go,2099 |
||||
PyQt5/bindings/QtQuick3D/qquick3d.sip,sha256=nqmUoX5wlzYam45KQmVdKoZS4it0SnLtbxYGlg1g93w,1146 |
||||
PyQt5/bindings/QtQuick3D/qquick3dgeometry.sip,sha256=2ysmVDtI0GCPLNs_mgNLClj3aALHbSiVSshjY8E22lE,2989 |
||||
PyQt5/bindings/QtQuick3D/qquick3dobject.sip,sha256=INyi2ah_yRWYeNvMdjwFTM8iIa3rWW1WtrLL0H1xOQA,2186 |
||||
PyQt5/bindings/QtQuickWidgets/QtQuickWidgets.toml,sha256=zAMAGcoi9wu1gVJCYX9K-pz7EY08OuUMO_GNBM9zXsA,189 |
||||
PyQt5/bindings/QtQuickWidgets/QtQuickWidgetsmod.sip,sha256=Tb_-3QDHLWOCIL4_9vL5K-pdtqKJaTd6L9wDYJgkYxM,2126 |
||||
PyQt5/bindings/QtQuickWidgets/qquickwidget.sip,sha256=cdq2yg7xQsCejU1W84MhEsnijwbfIUZ1DosdHg37QjI,3740 |
||||
PyQt5/bindings/QtRemoteObjects/QtRemoteObjects.toml,sha256=jxSDs2-s5qA3o5VQHPgZhABvPj963sTJs7ItLWmqTGo,190 |
||||
PyQt5/bindings/QtRemoteObjects/QtRemoteObjectsmod.sip,sha256=raKGjjCUpbDpSxwNW_imU7YwSSAUnnfG1t_IAPsa7HU,2210 |
||||
PyQt5/bindings/QtRemoteObjects/qremoteobjectabstractitemmodelreplica.sip,sha256=1Qj4r4qMfXRe_qy5kUeH8fHM4T0gmBE-Hc5dnUsmyvc,2383 |
||||
PyQt5/bindings/QtRemoteObjects/qremoteobjectdynamicreplica.sip,sha256=NfCqr399t4JWBDutD6PkewKOBWeuXXCXCQDanEwJisY,1260 |
||||
PyQt5/bindings/QtRemoteObjects/qremoteobjectnode.sip,sha256=XbN7IPa1gT2EBwvBTOs6zB5YNhWjBFsyKSj0uQcpZYY,6707 |
||||
PyQt5/bindings/QtRemoteObjects/qremoteobjectregistry.sip,sha256=36AJRN0cW7rZtF3JF2qxu38WgPk8iS2IKm1r-HsAhzc,1473 |
||||
PyQt5/bindings/QtRemoteObjects/qremoteobjectreplica.sip,sha256=jMc62ggI593bJ5ew9ckw59KQZXO7szm_w_DjPf5m5RU,1770 |
||||
PyQt5/bindings/QtRemoteObjects/qtremoteobjectglobal.sip,sha256=F0DgO4b6N_RHKrzvmYdkFpK9ijslg1zmhyqHCR1JdMQ,2156 |
||||
PyQt5/bindings/QtSensors/QtSensors.toml,sha256=fMLVjbXYpIXmjZJXZrLjx4rj0wXFEE8HdIhh6taRYoM,184 |
||||
PyQt5/bindings/QtSensors/QtSensorsmod.sip,sha256=Rmmr81T7HnfhUWf3tZRaNOUURmKWkoJlx0-pk2g7Igg,2535 |
||||
PyQt5/bindings/QtSensors/qaccelerometer.sip,sha256=6SbDAIfJphrB_-FiWA-fqDPk1AqrdqYRYnS1Ls4HlyI,2118 |
||||
PyQt5/bindings/QtSensors/qaltimeter.sip,sha256=UCeWMLVrUyiY8GL09xaRUuFiAX-AvAI-EazEEQV28gY,1689 |
||||
PyQt5/bindings/QtSensors/qambientlightsensor.sip,sha256=T_-9xarJnl3KYT2TUd4kHmRDmJ-a509WFO2XpT9vVFU,1916 |
||||
PyQt5/bindings/QtSensors/qambienttemperaturesensor.sip,sha256=_lvbGAeFBRwFiFLO6yqS9F-4SDJ5A_3WBs2Sz_QA9cU,1869 |
||||
PyQt5/bindings/QtSensors/qcompass.sip,sha256=wQd1FCNzZls-Jr8eaiX1tJd1wTeIZrWXlQIwz3b7cew,1752 |
||||
PyQt5/bindings/QtSensors/qdistancesensor.sip,sha256=PhKmBluxDe_XVACJaYGi80Ao-pRAA4YdI5rtO4jjpvQ,1730 |
||||
PyQt5/bindings/QtSensors/qgyroscope.sip,sha256=72xZ4p2A2Kus3eA0MetNV1SZOuNa2YGAezMwFsdUCUo,1762 |
||||
PyQt5/bindings/QtSensors/qholstersensor.sip,sha256=ib1P96-9BWIq_iEo_-HKUbFhQdzCbBSJqsgCSxpA3no,1718 |
||||
PyQt5/bindings/QtSensors/qhumiditysensor.sip,sha256=GjtKuxjeu4m5ZGUx5dqcSv6OUjwo6DKXBOrW0mt1LlY,1767 |
||||
PyQt5/bindings/QtSensors/qirproximitysensor.sip,sha256=24SdBPD0dZV4ZZ40ekgAc4-BX3K6TtWJhPK0SsnYg6w,1778 |
||||
PyQt5/bindings/QtSensors/qlidsensor.sip,sha256=TYFm1OmU0gaLd-1lgXAeQu7My932UScyT7eFYirdfIQ,1789 |
||||
PyQt5/bindings/QtSensors/qlightsensor.sip,sha256=xNGZhDNitOeRw8lKOwnHGSjwpf4hsOlQme54ByEsBgU,1814 |
||||
PyQt5/bindings/QtSensors/qmagnetometer.sip,sha256=qY4EjMPl38e4P12oOSTyy3-Oz1vR1i54Ak66rxsoYVM,2048 |
||||
PyQt5/bindings/QtSensors/qorientationsensor.sip,sha256=5_vgcUi227xZTChHQEoM2nwRLW0emQkomqh96PnRBF0,1996 |
||||
PyQt5/bindings/QtSensors/qpressuresensor.sip,sha256=Gw6g3m6P3FQ72--saH0fCThI27GFr-bvxOIwkDJSXrs,1855 |
||||
PyQt5/bindings/QtSensors/qproximitysensor.sip,sha256=bo7DjUeKu4PGfoTnTTiKY2MMROKi0UPmfCPf1ISaQ1A,1732 |
||||
PyQt5/bindings/QtSensors/qrotationsensor.sip,sha256=-_Q7HXQeE15lw5Lkhj88YAsTH5uXMyiHfrHDmHyQEDQ,1879 |
||||
PyQt5/bindings/QtSensors/qsensor.sip,sha256=bmYYl59PX1CE3zFMi4BRz7B3gcfrkApcb8p9EFejZh0,8664 |
||||
PyQt5/bindings/QtSensors/qtapsensor.sip,sha256=_qBaVUxcxsMubaI0_v7zaBrEyyW31b7MrqB3SBvQI6I,2216 |
||||
PyQt5/bindings/QtSensors/qtiltsensor.sip,sha256=mX3Oh11m52ruJMMMAaNEmUHYxM6TKiP9vlK6_wiZM8c,1759 |
||||
PyQt5/bindings/QtSerialPort/QtSerialPort.toml,sha256=ALnG-i8tunkaoiqWyfXE5zHp8YMWDHvao1sLtixdA_M,187 |
||||
PyQt5/bindings/QtSerialPort/QtSerialPortmod.sip,sha256=8iO4hwxXSUZMeFxSzTqKmkOcqPNcvS_vw5s6fMLlGoE,2025 |
||||
PyQt5/bindings/QtSerialPort/qserialport.sip,sha256=LI6pYsLMqqbYgW_3hYkpVTQUsZr1ecJOXAb5qdYsDdo,9761 |
||||
PyQt5/bindings/QtSerialPort/qserialportinfo.sip,sha256=gjak6twHam-fPkUYGUz7sUnS9n897YUiWljIhhSCoqg,1897 |
||||
PyQt5/bindings/QtSql/QtSql.toml,sha256=fCiqbX1BWdk2FHp1kW_UoC4SBGCkfMRzAI5fnpygSF8,180 |
||||
PyQt5/bindings/QtSql/QtSqlmod.sip,sha256=QAFNiCAdUHCxOn0QRZST6dFStokpWM3qnWo_dywWBDM,2361 |
||||
PyQt5/bindings/QtSql/qsql.sip,sha256=b5KTOQdSFsLeH2buzEGraiQ-2TfXxiSf3KxqNcJu8s4,1690 |
||||
PyQt5/bindings/QtSql/qsqldatabase.sip,sha256=vt3pnnUDAb1-Duc6A6UA_GR_hydGkVrFQaePI13KXjs,3963 |
||||
PyQt5/bindings/QtSql/qsqldriver.sip,sha256=0-QghNOhyXrTxlw6yD4voAfJWT0OZpRz7Hd0L9NUJZQ,5168 |
||||
PyQt5/bindings/QtSql/qsqlerror.sip,sha256=I6ROhVF6ryDS6MHk-8EsMtKt4wMLaBFatewCPkXq43Q,2405 |
||||
PyQt5/bindings/QtSql/qsqlfield.sip,sha256=3e6jqsB8OkYf607PoAKtSxC4UsyCMoltFWYGR4vZgqU,2569 |
||||
PyQt5/bindings/QtSql/qsqlindex.sip,sha256=2FUijaK-f08O8w8bL6Ow7O3VfRtykJwrrDy9vPfr-7Y,1538 |
||||
PyQt5/bindings/QtSql/qsqlquery.sip,sha256=XqSW44ExkLcUjhH-GTUj_WIXDqU84aKuCS_Vw8AG9_I,3258 |
||||
PyQt5/bindings/QtSql/qsqlquerymodel.sip,sha256=EysfpNjuN-uUvRO2-fzIw7q_4y8jyyApZX9Rk685swM,3033 |
||||
PyQt5/bindings/QtSql/qsqlrecord.sip,sha256=Kx4KU8m_wURxP2m8eKxmMhjUft_l6toVvT8JObV9f2E,2345 |
||||
PyQt5/bindings/QtSql/qsqlrelationaldelegate.sip,sha256=C5ZGtP6eVNoBVGh04UdFl2-YwpGh8QS-8hmCjP8aEbw,1606 |
||||
PyQt5/bindings/QtSql/qsqlrelationaltablemodel.sip,sha256=hTG1r9T4rGN5iXvMTL7pWucEj9dTDYAVvS1g0r77zrU,2716 |
||||
PyQt5/bindings/QtSql/qsqlresult.sip,sha256=ncnUBGlHDYzNOroIesLEF8EbX_Nk5y6JHbaHqOw-qv8,3329 |
||||
PyQt5/bindings/QtSql/qsqltablemodel.sip,sha256=B259SttBH63dvKpbCAKIFTO52ROzgKRPofwSV-BMIa0,3871 |
||||
PyQt5/bindings/QtSql/qtsqlglobal.sip,sha256=PhAVk-wrkUXi2RxUiB-uP0p1Mcl_zz7nXpMFFQ-o6UU,1704 |
||||
PyQt5/bindings/QtSvg/QtSvg.toml,sha256=KsCUFKz1wOXmxeFYTflmVwh6IAWQRs2yZT7P3KUec8U,180 |
||||
PyQt5/bindings/QtSvg/QtSvgmod.sip,sha256=0lXMMSRa3rgnSej_Q5BnDdlzgAW8fe8PJgmKX3_5EhY,2123 |
||||
PyQt5/bindings/QtSvg/qgraphicssvgitem.sip,sha256=D44qXo4q3LspdmVqdzk-taz8PlluSXYDuYrrjgdmzYs,2046 |
||||
PyQt5/bindings/QtSvg/qsvggenerator.sip,sha256=hmBrqnvm65SYbVPPe6ASJw62aOFVx0-OFwfQJxA1C7o,1871 |
||||
PyQt5/bindings/QtSvg/qsvgrenderer.sip,sha256=kWK5nc19Ii4jg3dFyTqaX40zS-3EtvHk-pSoHYuhQCw,3341 |
||||
PyQt5/bindings/QtSvg/qsvgwidget.sip,sha256=Fl13Zm5UUVk2Phem72QWAkHrnqLTspETlfHybqWXOv4,1455 |
||||
PyQt5/bindings/QtTest/QtTest.toml,sha256=-bZhzeQvrw9V1H8_ZKC66VvW9oI76JhWOIHmYqgRCDE,181 |
||||
PyQt5/bindings/QtTest/QtTestmod.sip,sha256=nLge5gQR-_L0q17fo5QTuO7czjxWNdjkGApUxYkULug,2179 |
||||
PyQt5/bindings/QtTest/qabstractitemmodeltester.sip,sha256=ATbfX942LYoKOkEJyY9dmNSmtWgiEoX-lUDZXi9G7ZA,1702 |
||||
PyQt5/bindings/QtTest/qsignalspy.sip,sha256=TbdfhJ19Hy1Yk8YDLn3yPEcSvEfdhDrQIDuqmAjHdFs,3441 |
||||
PyQt5/bindings/QtTest/qtestcase.sip,sha256=hjtw38CA_caUvr52xF19Sgdxl0--cJOcIylxmZkiCaU,1082 |
||||
PyQt5/bindings/QtTest/qtestkeyboard.sip,sha256=TdXyc4NfrD8Uc9Bt511lnRBxxFNx-sEP6BC6e9XkTKs,3433 |
||||
PyQt5/bindings/QtTest/qtestmouse.sip,sha256=oEWNH_wheTMt2RSpZljEHlCd780mDYl_nsRufPZex60,2485 |
||||
PyQt5/bindings/QtTest/qtestsystem.sip,sha256=BPqO7JSrAPPTPtUCoOs2wdgnjBLF_Uz_JS6J8x066BM,1415 |
||||
PyQt5/bindings/QtTest/qtesttouch.sip,sha256=NnyixpsAUahk3S62EYzMTybCidX5NgZD1QHq5HorLCU,2849 |
||||
PyQt5/bindings/QtTextToSpeech/QtTextToSpeech.toml,sha256=Lj0sKos9lFrLakAZZSr6CHjSE6276ROvzBCX1eewTfo,189 |
||||
PyQt5/bindings/QtTextToSpeech/QtTextToSpeechmod.sip,sha256=D4uGTLtYP0uD8Nf-SUGYh4bUdsofeM98ZDS91xfjRGw,2024 |
||||
PyQt5/bindings/QtTextToSpeech/qtexttospeech.sip,sha256=Du40es_RJZ9d674frRWVP57ogyrXlBBZtGs_Xl4Iz-s,2864 |
||||
PyQt5/bindings/QtTextToSpeech/qvoice.sip,sha256=OoVzdNCVcs0DW_BfISQnnCyt1FvuMYXEPGZ_ravt3q0,1624 |
||||
PyQt5/bindings/QtWebChannel/QtWebChannel.toml,sha256=rPc9kebThOcxyyHGrFHHQXr0G9Nn0Kx0iafif1E9T0A,187 |
||||
PyQt5/bindings/QtWebChannel/QtWebChannelmod.sip,sha256=XJt4e17sk-wmrZ0NDUItW-_wG7HFWaGOT1oxkKMbIjI,2038 |
||||
PyQt5/bindings/QtWebChannel/qwebchannel.sip,sha256=LZgjJlLAzpk6xt-mZ0nNhPCjltj0U8eZVgvkmBGYvI0,2408 |
||||
PyQt5/bindings/QtWebChannel/qwebchannelabstracttransport.sip,sha256=PDHjmd78dI6doBOpf4C-8GIaWj8R1ddu5IT_SwqyixM,1467 |
||||
PyQt5/bindings/QtWebSockets/QtWebSockets.toml,sha256=OavowwJ7EbVhXxqaxVgivGLSFe68JQtYIw-aUflMGzg,187 |
||||
PyQt5/bindings/QtWebSockets/QtWebSocketsmod.sip,sha256=G93_3bJNtJ7M8A0oQPTRcgY_N2RKMTMlwvAmRELK3wU,2165 |
||||
PyQt5/bindings/QtWebSockets/qmaskgenerator.sip,sha256=tqhjnltKeESb5AW6XvnFHpn-75c7pKwkAA-zwpZWujo,1276 |
||||
PyQt5/bindings/QtWebSockets/qwebsocket.sip,sha256=lr_T8PP9d387RVB00us_0WYA8CI_e4Moitcy__DXT-s,5602 |
||||
PyQt5/bindings/QtWebSockets/qwebsocketcorsauthenticator.sip,sha256=_NSQuz8KXzyNXw_qjcaKTKjSbmnETTYlKh6UotKEJDY,1486 |
||||
PyQt5/bindings/QtWebSockets/qwebsocketprotocol.sip,sha256=Uw-g1AhkmJigPSyKRE5yoS7CRmWo5lWbyOLca21iwnw,1803 |
||||
PyQt5/bindings/QtWebSockets/qwebsocketserver.sip,sha256=izoo7TvVliP4MYIFJlbSGvSTgPJYexQfuMuJ0IPgzu0,3456 |
||||
PyQt5/bindings/QtWidgets/QtWidgets.toml,sha256=jrJoxVLZuEV_IUmA6b6F0MDXFhlM38MJ4IjVSRHoro4,184 |
||||
PyQt5/bindings/QtWidgets/QtWidgetsmod.sip,sha256=RzjUqU_6RLFoeecUJanEjNEHX0YT-rB_mDrHlumy5Tw,5379 |
||||
PyQt5/bindings/QtWidgets/qabstractbutton.sip,sha256=zYEmjx9z99Lubg9sCkxb9dhrBlH_W4aUmqgOwRVQuRU,2829 |
||||
PyQt5/bindings/QtWidgets/qabstractitemdelegate.sip,sha256=rIsM-OsthC2XxgiJVhZTcv5WeC8TXFHxOE6mVS8cSZc,2676 |
||||
PyQt5/bindings/QtWidgets/qabstractitemview.sip,sha256=hIcVHZo0j3kQV6dMMWzpNyMkhg8EVlNwGFl6HmdaP_g,10870 |
||||
PyQt5/bindings/QtWidgets/qabstractscrollarea.sip,sha256=7NwBP1A6rizZe5zchBgUYOpSbysg_OngYw5hf5OdWwM,3664 |
||||
PyQt5/bindings/QtWidgets/qabstractslider.sip,sha256=uKBWEZv6lAy2dlEXmrJaE0rxGQWICITgfzsuBQd5OpI,3107 |
||||
PyQt5/bindings/QtWidgets/qabstractspinbox.sip,sha256=NktYxCyCf-rmAEaDyzLbQwLUocfVkqVc3S5qxZZv8Fc,4336 |
||||
PyQt5/bindings/QtWidgets/qaction.sip,sha256=0JbLYrEJqWVQcKfUmPKRn8jQUoTWIX8Hx2pTHYkmb4M,4454 |
||||
PyQt5/bindings/QtWidgets/qactiongroup.sip,sha256=687hV-INSllEg1xGRBNtJIfFgsA7MbcDppIWT5DLuvM,2182 |
||||
PyQt5/bindings/QtWidgets/qapplication.sip,sha256=xbHQIRg-F8ygZ1rkTRf1kO2zhV5fp_WsPHvrkVT7Hm8,16292 |
||||
PyQt5/bindings/QtWidgets/qboxlayout.sip,sha256=dgeLVi3mf1ts9UCrpHst0Fyv-tQIpJmOaBuyLwPbdRs,4928 |
||||
PyQt5/bindings/QtWidgets/qbuttongroup.sip,sha256=KyHHq4tyWDAE1OdeojD0694nEdK0clO_9MJ3bBpvlBo,2162 |
||||
PyQt5/bindings/QtWidgets/qcalendarwidget.sip,sha256=BzPw-_Mxc_EKIqHFzsKg4Nj3QARTuJVl5o4SW04s6i8,4288 |
||||
PyQt5/bindings/QtWidgets/qcheckbox.sip,sha256=HQ3G7mUx5KgeGsht11Z0lwUiBiiJRIy7eCe6IfzG-Ao,1842 |
||||
PyQt5/bindings/QtWidgets/qcolordialog.sip,sha256=AEQTwcIwUC9EXIxM-qyhk_iYDIP05Wg4DWHFVbXH-28,3179 |
||||
PyQt5/bindings/QtWidgets/qcolumnview.sip,sha256=pdOkVRCArtkm-RYDWrQDOhvpsormgYmqCTE0gx2Rnu0,2937 |
||||
PyQt5/bindings/QtWidgets/qcombobox.sip,sha256=i8R9jHf-8ptIU_uXWE_W3uP0OkhPb7daIPRtHPHv2yE,6415 |
||||
PyQt5/bindings/QtWidgets/qcommandlinkbutton.sip,sha256=xN-MDexaq1K08wJsf-4zsZKqgoGrzaZ0JSjtvYomuO8,1702 |
||||
PyQt5/bindings/QtWidgets/qcommonstyle.sip,sha256=w8PXG8FmQTlfpF-irKHV8Z9dswWJjEZ5b_UU2LhyEVc,3191 |
||||
PyQt5/bindings/QtWidgets/qcompleter.sip,sha256=JQQruF8pFjN-iQPBPr0HaK0TbjFpzJ4oxjQZqz4gtqA,3458 |
||||
PyQt5/bindings/QtWidgets/qdatawidgetmapper.sip,sha256=IV_X50iSpvZ_GHj8uzOovgZCzKfpMSPhsoxztk4Sw1M,2506 |
||||
PyQt5/bindings/QtWidgets/qdatetimeedit.sip,sha256=Ix48MkRD4bK6NpQCuTxaf3mH_neRnmffAaf9597BDsc,5438 |
||||
PyQt5/bindings/QtWidgets/qdesktopwidget.sip,sha256=G1PISzR_FwUDfxPcjlx57cE3r_P5btKjaM-xkD93PSw,1961 |
||||
PyQt5/bindings/QtWidgets/qdial.sip,sha256=pPMZZtmtazS3-JANYZaTP1VKgM5ruY04quC2oFTjAu4,1911 |
||||
PyQt5/bindings/QtWidgets/qdialog.sip,sha256=rGwRwr10L7bFtDo016NJbZ7qYKDeuUH1qZO5KTUz5tA,3484 |
||||
PyQt5/bindings/QtWidgets/qdialogbuttonbox.sip,sha256=TgN50DO49TdVGMp-swb4p3gh-Ve--8mkE3UjYHf1oDE,3876 |
||||
PyQt5/bindings/QtWidgets/qdirmodel.sip,sha256=QLepcsp5FTySgijp1ehCQBrzPILh_OTGzYO-JBfoirg,3734 |
||||
PyQt5/bindings/QtWidgets/qdockwidget.sip,sha256=kUVrUYTKq8iuibYV0Q_6Gou4nS-DrB7RIAqANK5rVI8,2875 |
||||
PyQt5/bindings/QtWidgets/qdrawutil.sip,sha256=wyUqTUDjkvjL6QImtbImPy6-P9Bj6e52J568NjMGpRk,2769 |
||||
PyQt5/bindings/QtWidgets/qerrormessage.sip,sha256=FC02xmsrYPiDzss2AayzfGBJaKeP5g5Ld3EUpAjtnDc,1430 |
||||
PyQt5/bindings/QtWidgets/qfiledialog.sip,sha256=3C_EXERpD4Qthxv7eJvjKH6_6iQjfYkyPfmbba5VWbg,12962 |
||||
PyQt5/bindings/QtWidgets/qfileiconprovider.sip,sha256=uqLjf0wV3WrnlIFqRZAUEJV1Reb6UYu8FXq50OVs0HQ,2011 |
||||
PyQt5/bindings/QtWidgets/qfilesystemmodel.sip,sha256=jIT3X1ayZhBMRsDBm257Y9-_lXTiXCCffZ9IipQOJv4,5217 |
||||
PyQt5/bindings/QtWidgets/qfocusframe.sip,sha256=00ZVA-Qr08-FtBsEWeNMHje_id3ah5SWjIikieEavHY,1424 |
||||
PyQt5/bindings/QtWidgets/qfontcombobox.sip,sha256=6M3ybP7AwJFRp87nMv-C2i03-UVwqSXsAFndqox__Qs,1979 |
||||
PyQt5/bindings/QtWidgets/qfontdialog.sip,sha256=AWQkH0_romaFPUBUsbdI1zJ-fxNFfy9X-pDvhXCUmsE,3205 |
||||
PyQt5/bindings/QtWidgets/qformlayout.sip,sha256=uOQk8e2piWwwE1IH443Y9SBbfVFU7mwuGyX01Wme1DA,4846 |
||||
PyQt5/bindings/QtWidgets/qframe.sip,sha256=OOxceoQiIJ8IbFHEEy2MvjRkGR2Ii1VEi7qGVa0lP6k,2219 |
||||
PyQt5/bindings/QtWidgets/qgesture.sip,sha256=tsCGsa2-Y1AZ5QXZCaZzvXBr8luFmrAFBJvQuaxdeZo,5514 |
||||
PyQt5/bindings/QtWidgets/qgesturerecognizer.sip,sha256=6psBPcwGe98T_0_zWWo-GDpcIxSsJIErRi720-8e4DU,1907 |
||||
PyQt5/bindings/QtWidgets/qgraphicsanchorlayout.sip,sha256=nBUy8qskYytMVfhEnA_iUZNx7gBYacsoUL-SQcAlHkI,2807 |
||||
PyQt5/bindings/QtWidgets/qgraphicseffect.sip,sha256=1egHsvjPlTOyV_hT8OAv36wPI_qVl5BodT4YCV970Po,5416 |
||||
PyQt5/bindings/QtWidgets/qgraphicsgridlayout.sip,sha256=ihaFkxlshPOqeNB6XaUu1zIiyFAn1G_6x6dmhqyUbCQ,4307 |
||||
PyQt5/bindings/QtWidgets/qgraphicsitem.sip,sha256=jONt4i5Qd7AAT7VQXIehYPimfL4P_hEpGj25t689s2I,27666 |
||||
PyQt5/bindings/QtWidgets/qgraphicslayout.sip,sha256=4CdpekxyynyqDOESWStu344rt7_kCbpimYY3IfgyrsM,1775 |
||||
PyQt5/bindings/QtWidgets/qgraphicslayoutitem.sip,sha256=M5ehV5TR_siNyIWGZckOWctE-LM-6sbGI_5TcoVnxHQ,3163 |
||||
PyQt5/bindings/QtWidgets/qgraphicslinearlayout.sip,sha256=Hg6Dw3WA1HrNRZf8pPtPWQPljwUPRiRlfwiZ_LwAn4s,3229 |
||||
PyQt5/bindings/QtWidgets/qgraphicsproxywidget.sip,sha256=euiNETDmIXLinkLaIoNmULt91_869OtXj6OHIYQTmRs,4008 |
||||
PyQt5/bindings/QtWidgets/qgraphicsscene.sip,sha256=n8ms-LXklwRRbZ0ZKiTgd_4EW4IRgDsZ-vKHPT8yrk4,9311 |
||||
PyQt5/bindings/QtWidgets/qgraphicssceneevent.sip,sha256=voTp58QaUiDPQ4pusi7RZwmCCVimDhqSH4YwhSbNpK8,6855 |
||||
PyQt5/bindings/QtWidgets/qgraphicstransform.sip,sha256=Lsc1Mmpv11POlPu7KSt3dzEJyHOpQOLDcmvJwVN_kzs,2528 |
||||
PyQt5/bindings/QtWidgets/qgraphicsview.sip,sha256=fsKe3tx9qgGLPRY0_IZJmr2ybSle4xipJ6VAgDuwUMc,8610 |
||||
PyQt5/bindings/QtWidgets/qgraphicswidget.sip,sha256=GCLfvHU8Xo7Sc7T71esIY2vDbzVPPNDNwIeLEOz5AUc,5617 |
||||
PyQt5/bindings/QtWidgets/qgridlayout.sip,sha256=s07rRXW1i7UXsvvcfTm5e_xJnabSqT_11hpmgFqBM_g,5681 |
||||
PyQt5/bindings/QtWidgets/qgroupbox.sip,sha256=XpaL2gGTvqiMwEMHLxtY9tPZ-fHS9w0PBS-gCsXV5Mk,2176 |
||||
PyQt5/bindings/QtWidgets/qheaderview.sip,sha256=G_P3UMwnsjWfJ-lFlCL7djC5gfKK2IUk1ZLoCn2LM0Y,7206 |
||||
PyQt5/bindings/QtWidgets/qinputdialog.sip,sha256=6wA_fVwnp7nJlT2hGTKo9JtMC6TkQ6qulq10ETtlWOg,5919 |
||||
PyQt5/bindings/QtWidgets/qitemdelegate.sip,sha256=_-tZAkddSy4UzklJpXIRnI9ayzF3IBaCEwSb8oh-IaE,2982 |
||||
PyQt5/bindings/QtWidgets/qitemeditorfactory.sip,sha256=LuwhFy2wFlyg_FqmAnbt2qj0Z2p79cXjYT43kvUkmMs,1849 |
||||
PyQt5/bindings/QtWidgets/qkeyeventtransition.sip,sha256=5XpBWAHNt_BXaJdVxuf8FegX74PAWcsyKv4fe08McRc,1600 |
||||
PyQt5/bindings/QtWidgets/qkeysequenceedit.sip,sha256=LVXxnZId_i_VxBQu9jC_gtWEW7EdJ_LeUWaaPetQjtk,1734 |
||||
PyQt5/bindings/QtWidgets/qlabel.sip,sha256=iuE7zSqc65b4r1toN4tSEaIajBvF-vKv5aHD1ZXWcq8,3275 |
||||
PyQt5/bindings/QtWidgets/qlayout.sip,sha256=aAyibihpO0rdonjpc0SIoEqxaCsl4JF1UThnLO7JJSw,6040 |
||||
PyQt5/bindings/QtWidgets/qlayoutitem.sip,sha256=a27U0iEX0TCVb-U1NY-g6XI5vuae4W6fq1HpKII4WiI,3769 |
||||
PyQt5/bindings/QtWidgets/qlcdnumber.sip,sha256=A2UgGqnmBK8NCaE3DY7ek9pAxjoQ_iI8eSD40ZiRtSg,2460 |
||||
PyQt5/bindings/QtWidgets/qlineedit.sip,sha256=nzbqp921giMPvQml8KtzTG56CQO7CnvQ4JV8Y1gkBxE,5603 |
||||
PyQt5/bindings/QtWidgets/qlistview.sip,sha256=DOx8yIq1OcJrbjaLHa-McXZviMYq448c6xGFvDmdpFs,5183 |
||||
PyQt5/bindings/QtWidgets/qlistwidget.sip,sha256=BPpmEXPNBQqTeHUcSt270UWD6urOC_scPGIMg_Nifeg,7456 |
||||
PyQt5/bindings/QtWidgets/qmaccocoaviewcontainer.sip,sha256=JY1T8aqwiO2YSwocLOq5EhnyivvNYPVo3CT5_mrUrqQ,1467 |
||||
PyQt5/bindings/QtWidgets/qmainwindow.sip,sha256=Z6Ozf1BqDFmh4khK9qWbL_rxC7-VEsNB-v2OT389wNE,5032 |
||||
PyQt5/bindings/QtWidgets/qmdiarea.sip,sha256=kIhNVRYk8fQ2TqNRiqGM_5ZpaYwlImNaSMpS2npQTC4,4384 |
||||
PyQt5/bindings/QtWidgets/qmdisubwindow.sip,sha256=FngU-_UbR2F5o6C3Nhj1g6FmUiriWX4elPqbzYK7DqI,4286 |
||||
PyQt5/bindings/QtWidgets/qmenu.sip,sha256=mUJ5ePwaFhEWHf1QN7cu9afAPxUFNfagqY_jAE3VAiw,6226 |
||||
PyQt5/bindings/QtWidgets/qmenubar.sip,sha256=1SOFmW4yisxGzy1APecYhUnGZ9O-VpQ5XFbg6CwEB0o,3626 |
||||
PyQt5/bindings/QtWidgets/qmessagebox.sip,sha256=cxyE30IYijxqfu_-SpxlNwe10PQx7lAL2ZPBjE9v5_k,6668 |
||||
PyQt5/bindings/QtWidgets/qmouseeventtransition.sip,sha256=GKCL8rcWXMcw4psnnYOneEr9MlE9DR7l7iYmGYwmFzs,1751 |
||||
PyQt5/bindings/QtWidgets/qopenglwidget.sip,sha256=zCQy0lmo8JUk-vnUbPrz_Jg7eZ-DMHUQ30HYrgPuluw,2463 |
||||
PyQt5/bindings/QtWidgets/qplaintextedit.sip,sha256=W1SZ3ytVzfieEcDR7f5hBvBeNal1O4n2AHE0GyAq24A,7961 |
||||
PyQt5/bindings/QtWidgets/qprogressbar.sip,sha256=xCkjDu8D3YpzyuIIAzGgc44hwls_0Vzm9u6B7jf5gkc,2312 |
||||
PyQt5/bindings/QtWidgets/qprogressdialog.sip,sha256=Mb6OdCwKySS0efTweaPWb4osJORp1sPcvARPu_dfQ90,2988 |
||||
PyQt5/bindings/QtWidgets/qproxystyle.sip,sha256=RBqfwdQYLH5KJ7xMlTi-alyYF3qOmKxhabaW1EPuLfI,4008 |
||||
PyQt5/bindings/QtWidgets/qpushbutton.sip,sha256=ztPT9XYx3OHTDmaBs6VcQgUTY1kaheE9vmiJuHNhfqI,2223 |
||||
PyQt5/bindings/QtWidgets/qpywidgets_qlist.sip,sha256=o2tLKjHGWJ-yv7q3IXCotQOfhQ8pXUl53K6ZsQeYZck,3094 |
||||
PyQt5/bindings/QtWidgets/qradiobutton.sip,sha256=bKIfim3rbJWE2qdAxcAHXks-fNrjtWf_B2wz4F71JP8,1589 |
||||
PyQt5/bindings/QtWidgets/qrubberband.sip,sha256=vDIaxEMhQIt-dTvNrDzd1yNdHSWl0gDclNYqZCJRS5w,1840 |
||||
PyQt5/bindings/QtWidgets/qscrollarea.sip,sha256=LIVWKsG83rIrkkxFH0zzZayaj2Tvl8pyAKNVtme2Oqc,1969 |
||||
PyQt5/bindings/QtWidgets/qscrollbar.sip,sha256=2b8x2Jk2AnURv0AzgNpy08IVTbYgjhGu46I5yGZB3BI,1811 |
||||
PyQt5/bindings/QtWidgets/qscroller.sip,sha256=gESVcPgA4ZJYSC_JHz9itTbu0p8z2PXygrdWnVSWzHY,3018 |
||||
PyQt5/bindings/QtWidgets/qscrollerproperties.sip,sha256=0gTRmZFIytNNJkDRSO-WT1lZTGTSY7hylrqOCNWGoHw,2565 |
||||
PyQt5/bindings/QtWidgets/qshortcut.sip,sha256=5VGpXvVZJX1vEZp8whieooyzMpvd7ycJ-OTCtu0lonA,3632 |
||||
PyQt5/bindings/QtWidgets/qsizegrip.sip,sha256=DvLuW1LG0fg8NhXBU4UBxcQMka4FGIO0wnYEodAGpV8,1685 |
||||
PyQt5/bindings/QtWidgets/qsizepolicy.sip,sha256=BKzpwawGWLeqdVq7vlDcPF1SsvroegDYRoRBu0AIKto,3563 |
||||
PyQt5/bindings/QtWidgets/qslider.sip,sha256=GLDwYmTeOxhfSjnW3OEjQmr62YMrsMpfP78mXSdif4I,1970 |
||||
PyQt5/bindings/QtWidgets/qspinbox.sip,sha256=sX_y8VLcDZaSVp6kISxSBc8gAmIFiez0ocVxcCsBVKc,3687 |
||||
PyQt5/bindings/QtWidgets/qsplashscreen.sip,sha256=07aVnpgyJh4Yrg-Wi6vpXcUJjXq3_kBB26gEAmkdFm8,2027 |
||||
PyQt5/bindings/QtWidgets/qsplitter.sip,sha256=ztz4wn_Ij9nx-2H4UuBFk8uCQ0-OXS3w0pueXQCenYs,3551 |
||||
PyQt5/bindings/QtWidgets/qstackedlayout.sip,sha256=QqTA_lBM4ECwImxbYnTJLKcy_0ykbqoaJlu4a7tBQIc,3795 |
||||
PyQt5/bindings/QtWidgets/qstackedwidget.sip,sha256=12niM6LrSJNPl-9NqGySdgjxmzE-9QR00UXShNOpFGc,1707 |
||||
PyQt5/bindings/QtWidgets/qstatusbar.sip,sha256=7dLKCIGXhrYUVoD5NIjeEJqvwQ7F0prWajARDlH6fHA,2011 |
||||
PyQt5/bindings/QtWidgets/qstyle.sip,sha256=Qr19jkmkwIYjzDFaimv7fxXcRVMOp6__x3LTDn7kftg,24187 |
||||
PyQt5/bindings/QtWidgets/qstyleditemdelegate.sip,sha256=l_qK10H5i3Yfne4Ezhj7hJnrzl4EKwG9POzwcZ4Q41c,2472 |
||||
PyQt5/bindings/QtWidgets/qstylefactory.sip,sha256=z2BtxJnOXo4nznKQxF5_c0lC_XyL9pVVtGW5-kJXlyM,1154 |
||||
PyQt5/bindings/QtWidgets/qstyleoption.sip,sha256=RxZAm1x7a-aor0AtOrkyEfK80qDLKb-GM5j-8HpCzug,21855 |
||||
PyQt5/bindings/QtWidgets/qstylepainter.sip,sha256=WgRrr-Wffr6WpppZuJ5LD3JvAhCDmWxhsJ5SnFDuZ08,1773 |
||||
PyQt5/bindings/QtWidgets/qsystemtrayicon.sip,sha256=FE7wMoi4-UsiUEsSFqabfTTEd6QPzyUaEWZvZyVku1Y,2419 |
||||
PyQt5/bindings/QtWidgets/qtabbar.sip,sha256=yhTg6P3ToZNoY1NUCm4zfwnsaREPZNlzcEd6kVoHmmM,5616 |
||||
PyQt5/bindings/QtWidgets/qtableview.sip,sha256=6fFP4d4ZOYGcjactenyjydPAieSqrdlsCmZ16Xqj9r4,4956 |
||||
PyQt5/bindings/QtWidgets/qtablewidget.sip,sha256=mAqiRcfc1y7fPG3Od-t4NFOiW7kPFin-G9OB3hPYHKg,9296 |
||||
PyQt5/bindings/QtWidgets/qtabwidget.sip,sha256=6M4eYOvUR-0aczdtxrdgP6RiFu02c16ZwQ1Ys8L-eOE,4504 |
||||
PyQt5/bindings/QtWidgets/qtextbrowser.sip,sha256=YSTlVffjyYk76AmKb-olWBRPhrwP6GoiCOLEE_-0kpQ,2960 |
||||
PyQt5/bindings/QtWidgets/qtextedit.sip,sha256=z1oPK3Ym0bLHZv5Ql5CbPwS5br2h6GvF6GERiGky1Dc,8203 |
||||
PyQt5/bindings/QtWidgets/qtoolbar.sip,sha256=gveKwnsZk34kDbu7aLZhXc7CigvHkqfyrSIUz8RruwU,4342 |
||||
PyQt5/bindings/QtWidgets/qtoolbox.sip,sha256=k6QyJrkQmjfoFSsTYFKqZ8mChXsu9HE0qkNHED53Ask,2479 |
||||
PyQt5/bindings/QtWidgets/qtoolbutton.sip,sha256=YnDqd194jRmsKa8jJ_AH2LTI-qE2kYj7DCMSqdGshq8,2560 |
||||
PyQt5/bindings/QtWidgets/qtooltip.sip,sha256=edOP1Svlbe6PZsNdJHInN2Dz-MRU9dM_hlRk4Ug-4ws,1630 |
||||
PyQt5/bindings/QtWidgets/qtreeview.sip,sha256=LKSj2hDzRRo3aGuiLMm_pC8C0K_Q7vyBH0F7bOCFjLo,6708 |
||||
PyQt5/bindings/QtWidgets/qtreewidget.sip,sha256=sOT2GcIW4exbAcxcMCNo0pKxpNltbLcXc0_ub8kGXtc,10487 |
||||
PyQt5/bindings/QtWidgets/qtreewidgetitemiterator.sip,sha256=3nneXd98cPAbqtIcam6dl3eNeGIy6IdNj1HRQWZEfRI,2362 |
||||
PyQt5/bindings/QtWidgets/qundogroup.sip,sha256=VogjZz-NDAfaHxx6rzswTlzDO7MmoHjaSDw0-HiOtSQ,2103 |
||||
PyQt5/bindings/QtWidgets/qundostack.sip,sha256=HzclBkflZIV_MvgjCmg0AChuz4xEb9gOBudOTzfPji0,3169 |
||||
PyQt5/bindings/QtWidgets/qundoview.sip,sha256=u3klStEaG6iMilNJGBi0kY-ER8lhXk07fJzfocIGQ8Q,1641 |
||||
PyQt5/bindings/QtWidgets/qwhatsthis.sip,sha256=yZ-YyWhA306PKvLlkdzhsNDzzpLj5RjKV6-hGIZoVCU,1391 |
||||
PyQt5/bindings/QtWidgets/qwidget.sip,sha256=e8D32CYVhQu6gxcY4w298ZYEquMWmYND3rqk3Z5Spb0,15862 |
||||
PyQt5/bindings/QtWidgets/qwidgetaction.sip,sha256=-Cs5u9ZfQRTNAElORHPtNk7xkujrshz12Bm4ncyfCwM,1670 |
||||
PyQt5/bindings/QtWidgets/qwizard.sip,sha256=tMavTblgRtLSTJjK1-S_FqoLR8tkPjOMp4TRxd1hH4s,7984 |
||||
PyQt5/bindings/QtWinExtras/QtWinExtras.toml,sha256=F4ZZzvJH6CqE6ADBUhHTEQQ581MID-Y24I3UwVcDT44,186 |
||||
PyQt5/bindings/QtWinExtras/QtWinExtrasmod.sip,sha256=OE5UFQVQoEpbnZb1YD4WyifrVHYIHtpJ8RYlcHaLZOQ,2198 |
||||
PyQt5/bindings/QtWinExtras/qwinfunctions.sip,sha256=ceBLC_4_vsehs80pdB_HdI-f2_6oo7byqOoXn7yMJpc,4424 |
||||
PyQt5/bindings/QtWinExtras/qwinjumplist.sip,sha256=KjARRaFxV6e6JGpg18Sxq3WGUSsbpCATrJwrlfgZ0u4,2492 |
||||
PyQt5/bindings/QtWinExtras/qwinjumplistcategory.sip,sha256=eZ90hUOv-Rzv1eAD3X25q5cC6viC9EyrHDLgpbMYNtE,2135 |
||||
PyQt5/bindings/QtWinExtras/qwinjumplistitem.sip,sha256=Lta4TYqQLfEZosqyMmxwH96TqcvuvnPPSjlQlT8Z59c,1844 |
||||
PyQt5/bindings/QtWinExtras/qwintaskbarbutton.sip,sha256=A8MUo-ktCrHxRFGOEmQvkbP7nxbNSp8tyipVMlTHutg,1644 |
||||
PyQt5/bindings/QtWinExtras/qwintaskbarprogress.sip,sha256=AH0CiqmZRe50nN1sLCgiq0d0J7H75oDNuU4wQFbcAio,1923 |
||||
PyQt5/bindings/QtWinExtras/qwinthumbnailtoolbar.sip,sha256=2zE9cR-YA5AhSGJap7TCoAn5rdFwvv53xMim3vw4JIM,2111 |
||||
PyQt5/bindings/QtWinExtras/qwinthumbnailtoolbutton.sip,sha256=Q1ZRUMWrzxEB7vz9EAGuN5vry188ULjJAZdpO_Nf35o,1824 |
||||
PyQt5/bindings/QtXml/QtXml.toml,sha256=Gc6SUYZLcIPqr8MSBJ34JS4b_GxKbG76mqWOjnIeLXA,180 |
||||
PyQt5/bindings/QtXml/QtXmlmod.sip,sha256=1EhgjRofn0n8s9lTnEft9yvT5BOK-kJezFtjdjHdhqw,1986 |
||||
PyQt5/bindings/QtXml/qdom.sip,sha256=2MFDudirMSMYl4y52URzs0QQJGlY0zA-LI3JDq4WwkQ,14855 |
||||
PyQt5/bindings/QtXml/qxml.sip,sha256=XKzVrU5QD2N8k9YltaHwPiXBTOrZNlBn7b90vb4X4us,12460 |
||||
PyQt5/bindings/QtXmlPatterns/QtXmlPatterns.toml,sha256=KSDnRoNqGwTvI39T6WqmkaT0D3BiMudfFfBwipg4WqI,188 |
||||
PyQt5/bindings/QtXmlPatterns/QtXmlPatternsmod.sip,sha256=P3EWxkillGLUNK1YaiFFvmWAHZh6zW6Vb-uhCz7KlZ4,2436 |
||||
PyQt5/bindings/QtXmlPatterns/qabstractmessagehandler.sip,sha256=uPv5bMRq34vR__VVjDCsgNZJsmquOmf6TQZps3pRX44,2196 |
||||
PyQt5/bindings/QtXmlPatterns/qabstracturiresolver.sip,sha256=GziuKj7QZcD9rKfSOD6118WYjHmYb-nhWou5hjjrdes,1283 |
||||
PyQt5/bindings/QtXmlPatterns/qabstractxmlnodemodel.sip,sha256=fYWjjn8xwA93ialA3fxQQNaT6-u6allcGLP9Oybs_zc,4353 |
||||
PyQt5/bindings/QtXmlPatterns/qabstractxmlreceiver.sip,sha256=RtiTx2W_Zfjr7LLWW0RUP1-1EvE-COYnL8ohk5WnPTY,1881 |
||||
PyQt5/bindings/QtXmlPatterns/qsimplexmlnodemodel.sip,sha256=OYyl26PBmiFoa_UowofkKI2QM2f7ShfsTkr7sTYDvV0,1619 |
||||
PyQt5/bindings/QtXmlPatterns/qsourcelocation.sip,sha256=oTdgOzNOtA23GYV8kkTl91ViXld4JQYdU7NPRavrMi0,1659 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlformatter.sip,sha256=pt08qIzUoO3ls7eTaJ-kQScG4uaA48seTnN2Jqdz-Kw,1779 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlname.sip,sha256=ldrCZAin0Xc9gyKFchxFLheeIx9jz_olYh5CT9SJceg,1860 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlnamepool.sip,sha256=IbXc794HDQI1FCYBraMwprfj1ixV0gRf0FNIP-VUDvw,1157 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlquery.sip,sha256=5CLcwY06Cdvzm04jsKOFQAfvEH_sQtGthRG8pp53Vho,4503 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlresultitems.sip,sha256=0Xisjo9k8OTOKunat0MVxOWGkYYr5wJHUOInbOW5HZk,1274 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlschema.sip,sha256=EH1UiAmG-875fNaNRQiLivuUwF1qBR2lRMxgHUftzTc,1928 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlschemavalidator.sip,sha256=Qg6B8YACgW2mTuBngUd7w3Q4Dkgb5wTwMiSj4F1gAog,2485 |
||||
PyQt5/bindings/QtXmlPatterns/qxmlserializer.sip,sha256=TrOe7_B5vODZBIeuLDccZs94CvjGXSpZ8f5P3nuEJSQ,1905 |
||||
PyQt5/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
PyQt5/pylupdate.pyd,sha256=s_ib6_7cfVEMmzSDYqMv-GHRRW4oVYdR0ishskkYomo,118272 |
||||
PyQt5/pylupdate_main.py,sha256=UNJLs4cD_O6MaiRJ3qhX5OtJo9NDNXUAitmYltIhBo4,7620 |
||||
PyQt5/pyrcc.pyd,sha256=-v6eiltRbgfkAGDM0Caf_dbsNvTTY1xa04ryPnc7u44,49664 |
||||
PyQt5/pyrcc_main.py,sha256=iZopJ7gIoor5QEGeCNSHfjtdytb7D6d8L-iyxTYkB6k,5558 |
||||
PyQt5/sip.pyi,sha256=Dk5b_YPq4Cz0KcUp1CUwGY6nD01DkdCmzvHUSRQo36A,4061 |
||||
PyQt5/uic/Compiler/__init__.py,sha256=aE4HiuHgvVn0Y2pMHZ3u_NWkceQ2nLRvbiVENSo_n6o,1024 |
||||
PyQt5/uic/Compiler/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/compiler.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/indenter.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/misc.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/proxy_metaclass.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/qobjectcreator.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/__pycache__/qtproxies.cpython-39.pyc,, |
||||
PyQt5/uic/Compiler/compiler.py,sha256=THKgZNBUh198NkAh1hLHPsDEMeSLRdOiEKFNvVKfv14,4768 |
||||
PyQt5/uic/Compiler/indenter.py,sha256=Z2NZ9Koezh5UjmTAsA0tw4IO3rczWYi0okT4pT4M-X8,2819 |
||||
PyQt5/uic/Compiler/misc.py,sha256=Wytpj0Y0TUiLdB2JIot3-UdtOJnpo-mnKF9OWQpTCu4,2433 |
||||
PyQt5/uic/Compiler/proxy_metaclass.py,sha256=ou_MjXc_yCksa7cFCVUU3ap7FuqJ2XcoWkxXuc4z90c,4424 |
||||
PyQt5/uic/Compiler/qobjectcreator.py,sha256=aQjKwR_EXjAhMHR8f9xWcYniDqcgPdMTWwlV8gIBgCs,6083 |
||||
PyQt5/uic/Compiler/qtproxies.py,sha256=Ie9yPzHtnzuT_0dNx8JxBJGkKb-AGzm0WVmLcLnPYBg,16785 |
||||
PyQt5/uic/Loader/__init__.py,sha256=aE4HiuHgvVn0Y2pMHZ3u_NWkceQ2nLRvbiVENSo_n6o,1024 |
||||
PyQt5/uic/Loader/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/uic/Loader/__pycache__/loader.cpython-39.pyc,, |
||||
PyQt5/uic/Loader/__pycache__/qobjectcreator.cpython-39.pyc,, |
||||
PyQt5/uic/Loader/loader.py,sha256=IafHQG6x-dNDeTlgnk1NRKYo2WolIpp2wiIWVvi2Ngc,2924 |
||||
PyQt5/uic/Loader/qobjectcreator.py,sha256=AhFPTityPrbXXvE5qT80RL-1HQm_G5za8k2dIaik0s0,5172 |
||||
PyQt5/uic/__init__.py,sha256=vLZ9hk0Q1xNbu_eRSMsW5Fh5MO0luSwGgNzv1-Jvmqk,9749 |
||||
PyQt5/uic/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/driver.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/exceptions.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/icon_cache.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/objcreator.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/properties.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/pyuic.cpython-39.pyc,, |
||||
PyQt5/uic/__pycache__/uiparser.cpython-39.pyc,, |
||||
PyQt5/uic/driver.py,sha256=rkJDwJ6q0LmkzebDdrKXpKOjujKdYwiKmkXcMrGHG7Y,4797 |
||||
PyQt5/uic/exceptions.py,sha256=UNMuvcB7CGpzo5xiscd4XkIBGDdFeVRefMAAEbnDFQI,2332 |
||||
PyQt5/uic/icon_cache.py,sha256=-0uZWAMKjtFFUu7t46p0W_QWKsH3oTrfwrsQGQO05fw,5181 |
||||
PyQt5/uic/objcreator.py,sha256=OBi31Sd9nUSz1N_-Zd0MVhizaBxQhVH_6HgXYW2hwKE,6133 |
||||
PyQt5/uic/port_v2/__init__.py,sha256=aE4HiuHgvVn0Y2pMHZ3u_NWkceQ2nLRvbiVENSo_n6o,1024 |
||||
PyQt5/uic/port_v2/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/uic/port_v2/__pycache__/as_string.cpython-39.pyc,, |
||||
PyQt5/uic/port_v2/__pycache__/ascii_upper.cpython-39.pyc,, |
||||
PyQt5/uic/port_v2/__pycache__/proxy_base.cpython-39.pyc,, |
||||
PyQt5/uic/port_v2/__pycache__/string_io.cpython-39.pyc,, |
||||
PyQt5/uic/port_v2/as_string.py,sha256=3IhYbMHh21r3YX6vQJdb0Tos8SpBrEE-4EH2XslLW00,1475 |
||||
PyQt5/uic/port_v2/ascii_upper.py,sha256=aQXz9NOJV-N0TemZAQCEhDDbEMC1OKLvu1CrFNh7hc0,1358 |
||||
PyQt5/uic/port_v2/proxy_base.py,sha256=KVreC8vsv0abQoBSD0JLk3K3cZ7Ss8L67dnaq-yB8UM,1250 |
||||
PyQt5/uic/port_v2/string_io.py,sha256=SSNcCxPdS7sMp2ss02LYJH3xykSvBlHkjI1iPMIybFE,1157 |
||||
PyQt5/uic/port_v3/__init__.py,sha256=aE4HiuHgvVn0Y2pMHZ3u_NWkceQ2nLRvbiVENSo_n6o,1024 |
||||
PyQt5/uic/port_v3/__pycache__/__init__.cpython-39.pyc,, |
||||
PyQt5/uic/port_v3/__pycache__/as_string.cpython-39.pyc,, |
||||
PyQt5/uic/port_v3/__pycache__/ascii_upper.cpython-39.pyc,, |
||||
PyQt5/uic/port_v3/__pycache__/proxy_base.cpython-39.pyc,, |
||||
PyQt5/uic/port_v3/__pycache__/string_io.cpython-39.pyc,, |
||||
PyQt5/uic/port_v3/as_string.py,sha256=zZEiip9rho2hdR4PdXQwaDz3_kOEElVHLigkJVzgcco,1452 |
||||
PyQt5/uic/port_v3/ascii_upper.py,sha256=0p8D2pJvCgV9RVQ-RYplmvYBLr6AoKyxHnB6zGd1XnY,1352 |
||||
PyQt5/uic/port_v3/proxy_base.py,sha256=VNQziWGRH_RidXAYjxRE6dPnU6nUkPkATsd1DO0DeOk,1230 |
||||
PyQt5/uic/port_v3/string_io.py,sha256=IsSj_y5e1A2y9RY4W-okaRBJLNjxGIy8QQoEJ4natxM,1084 |
||||
PyQt5/uic/properties.py,sha256=3x91MRS8UAloXsLhXW8-_D98IhCWOe2ukyKp2UDj7T4,18284 |
||||
PyQt5/uic/pyuic.py,sha256=s89Cbdt49-02VZLkDLk8ThB12oWwhVQsCo1nhXoETm0,3646 |
||||
PyQt5/uic/uiparser.py,sha256=XJ_JpQr_6UrLMHT82SZ7LhioVcPDw-bEmWgqgJsKSRI,39202 |
||||
PyQt5/uic/widget-plugins/__pycache__/qaxcontainer.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qscintilla.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qtcharts.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qtprintsupport.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qtquickwidgets.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qtwebenginewidgets.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/__pycache__/qtwebkit.cpython-39.pyc,, |
||||
PyQt5/uic/widget-plugins/qaxcontainer.py,sha256=-WDgC3ybkhcywE_w0bN_XrgblBAwN_YxjPbARa_PGWo,1590 |
||||
PyQt5/uic/widget-plugins/qscintilla.py,sha256=iJZIrvdewEA75r5Q1DzQdqz1qj4bgme2KRlIficZG5U,1586 |
||||
PyQt5/uic/widget-plugins/qtcharts.py,sha256=q1uT3rWEoJQuthXBQ7kx0R6pJGGfkwS_v9E2ZvIit3c,1595 |
||||
PyQt5/uic/widget-plugins/qtprintsupport.py,sha256=roTHKhHuFHwzipIysAEhMouEZ5b8KEzNJqvWfUChSqM,1621 |
||||
PyQt5/uic/widget-plugins/qtquickwidgets.py,sha256=fkGfmJORCA_62t3RksL2afSUyMZwBqfVtPJzXXnydQo,1595 |
||||
PyQt5/uic/widget-plugins/qtwebenginewidgets.py,sha256=0xjMUv83_8pv18GISyC2rzc3kZ4LVu-Aw9boA5SvoKs,1601 |
||||
PyQt5/uic/widget-plugins/qtwebkit.py,sha256=nnByrPhnew7v8mfS502IXU5fE3XghYouMzBn0GtGXUo,2558 |
||||
@ -0,0 +1,4 @@ |
||||
Wheel-Version: 1.0 |
||||
Generator: sip-wheel 6.6.2 |
||||
Root-Is-Purelib: false |
||||
Tag: cp37-abi3-win_amd64 |
||||
@ -0,0 +1,4 @@ |
||||
[console_scripts] |
||||
pylupdate5=PyQt5.pylupdate_main:main |
||||
pyrcc5=PyQt5.pyrcc_main:main |
||||
pyuic5=PyQt5.uic.pyuic:main |
||||
@ -0,0 +1,105 @@ |
||||
# The PEP 484 type hints stub file for the QAxContainer module. |
||||
# |
||||
# Generated by SIP 6.6.2 |
||||
# |
||||
# Copyright (c) 2022 Riverbank Computing Limited <info@riverbankcomputing.com> |
||||
# |
||||
# This file is part of PyQt5. |
||||
# |
||||
# This file may be used under the terms of the GNU General Public License |
||||
# version 3.0 as published by the Free Software Foundation and appearing in |
||||
# the file LICENSE included in the packaging of this file. Please review the |
||||
# following information to ensure the GNU General Public License version 3.0 |
||||
# requirements will be met: http://www.gnu.org/copyleft/gpl.html. |
||||
# |
||||
# If you do not wish to use this file under the terms of the GPL version 3.0 |
||||
# then you may purchase a commercial license. For more information contact |
||||
# info@riverbankcomputing.com. |
||||
# |
||||
# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
||||
# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
||||
|
||||
|
||||
import typing |
||||
|
||||
import PyQt5.sip |
||||
|
||||
from PyQt5 import QtWidgets |
||||
|
||||
# Support for QDate, QDateTime and QTime. |
||||
import datetime |
||||
|
||||
# Convenient type aliases. |
||||
PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal] |
||||
PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal] |
||||
|
||||
# Convenient aliases for complicated OpenGL types. |
||||
PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float], |
||||
PyQt5.sip.Buffer, None] |
||||
PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int], |
||||
typing.Sequence[float], PyQt5.sip.Buffer, int, None] |
||||
|
||||
|
||||
class QAxBase(PyQt5.sip.simplewrapper): |
||||
|
||||
@typing.overload |
||||
def __init__(self) -> None: ... |
||||
@typing.overload |
||||
def __init__(self, a0: 'QAxBase') -> None: ... |
||||
|
||||
def setClassContext(self, classContext: int) -> None: ... |
||||
def classContext(self) -> int: ... |
||||
def disableEventSink(self) -> None: ... |
||||
def disableClassInfo(self) -> None: ... |
||||
def disableMetaObject(self) -> None: ... |
||||
def setControl(self, a0: str) -> bool: ... |
||||
def clear(self) -> None: ... |
||||
def exception(self, a0: int, a1: str, a2: str, a3: str) -> None: ... |
||||
def propertyChanged(self, a0: str) -> None: ... |
||||
def signal(self, a0: str, a1: int, a2: PyQt5.sip.voidptr) -> None: ... |
||||
def asVariant(self) -> typing.Any: ... |
||||
def verbs(self) -> typing.List[str]: ... |
||||
def isNull(self) -> bool: ... |
||||
def setPropertyWritable(self, a0: str, a1: bool) -> None: ... |
||||
def propertyWritable(self, a0: str) -> bool: ... |
||||
def generateDocumentation(self) -> str: ... |
||||
def setPropertyBag(self, a0: typing.Dict[str, typing.Any]) -> None: ... |
||||
def propertyBag(self) -> typing.Dict[str, typing.Any]: ... |
||||
@typing.overload |
||||
def querySubObject(self, a0: str, a1: typing.Iterable[typing.Any]) -> 'QAxObject': ... |
||||
@typing.overload |
||||
def querySubObject(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> 'QAxObject': ... |
||||
@typing.overload |
||||
def dynamicCall(self, a0: str, a1: typing.Iterable[typing.Any]) -> typing.Any: ... |
||||
@typing.overload |
||||
def dynamicCall(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> typing.Any: ... |
||||
def control(self) -> str: ... |
||||
|
||||
|
||||
class QAxObject(QtCore.QObject, QAxBase): |
||||
|
||||
@typing.overload |
||||
def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ... |
||||
@typing.overload |
||||
def __init__(self, a0: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ... |
||||
|
||||
def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ... |
||||
def doVerb(self, a0: str) -> bool: ... |
||||
|
||||
|
||||
class QAxWidget(QtWidgets.QWidget, QAxBase): |
||||
|
||||
@typing.overload |
||||
def __init__(self, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ... |
||||
@typing.overload |
||||
def __init__(self, a0: str, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ... |
||||
|
||||
def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ... |
||||
def translateKeyEvent(self, a0: int, a1: int) -> bool: ... |
||||
def resizeEvent(self, a0: QtGui.QResizeEvent) -> None: ... |
||||
def changeEvent(self, a0: QtCore.QEvent) -> None: ... |
||||
def createHostWindow(self, a0: bool) -> bool: ... |
||||
def minimumSizeHint(self) -> QtCore.QSize: ... |
||||
def sizeHint(self) -> QtCore.QSize: ... |
||||
def doVerb(self, a0: str) -> bool: ... |
||||
def clear(self) -> None: ... |
||||