DjPractLelo 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- djpractlelo-0.1.2/DjPractLelo/resource_loader.py +23 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/acyclic_graph.py +18 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/attributes.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/audio-to-horus.py +23 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/average.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/averaging.py +21 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/balance_sheet.csv +11 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/balance_sheet.py +10 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/billboard_content.py +16 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/binning.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/cassandra.txt +15 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/clustering_warehouse.py +14 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/color_srgb.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/csv-to-horus.py +14 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data-attribute.py +14 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data-binning.py +25 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data-pattern.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data-pattern.py +22 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data-process.csv +8 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/data.csv +8 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/delivery_route.py +5 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/error_management.csv +16 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/error_management.py +18 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/fixer-uti.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/fixer-utility.py +21 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/forex_planner.py +7 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/generate_data.py +49 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/generate_gml.csv +10 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/generate_gml.py +10 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/json-to-horus.py +12 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/logging.py +22 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/mysql-to-horus.py +23 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/network_routing.py +23 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/organize_data.py +33 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/organizing_data.csv +7 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/outlier-detect.py +25 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/outlier.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/packing_option.py +15 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/payroll_generation.py +12 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/picture-to-horus.py +14 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/power-bi.txt +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/practical_manual.docx +0 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/shipping_route.py +18 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/time_data_vault.py +54 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/transform_data.csv +6 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/transform_data.py +38 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/video-to-horus.py +23 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/warehouse_location.py +14 -0
- djpractlelo-0.1.2/DjPractLelo/resources/data_science/xml-to-horus.py +20 -0
- djpractlelo-0.1.2/DjPractLelo/resources/soft_computing/practical_manual.docx +0 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/DjPractLelo.egg-info/PKG-INFO +3 -3
- djpractlelo-0.1.2/DjPractLelo.egg-info/SOURCES.txt +59 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/DjPractLelo.egg-info/top_level.txt +1 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/PKG-INFO +3 -3
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/pyproject.toml +15 -2
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/setup.py +2 -2
- djpractlelo-0.1.0/DjPractLelo/main.py +0 -0
- djpractlelo-0.1.0/DjPractLelo.egg-info/SOURCES.txt +0 -10
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/DjPractLelo/__init__.py +0 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/DjPractLelo.egg-info/dependency_links.txt +0 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/LICENCE +0 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/README.md +0 -0
- {djpractlelo-0.1.0 → djpractlelo-0.1.2}/setup.cfg +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from importlib.resources import files
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
def list_files(directory: str, extension: str) -> list[Path]:
|
|
5
|
+
"""
|
|
6
|
+
List all files with a given extension in a resources subdirectory.
|
|
7
|
+
|
|
8
|
+
:param directory: "data_science" or "soft_computing"
|
|
9
|
+
:param extension: ".csv", ".txt", etc.
|
|
10
|
+
:return: list of Path objects
|
|
11
|
+
"""
|
|
12
|
+
base = files("DjPractLelo") / "resources" / directory
|
|
13
|
+
return [p for p in base.iterdir() if p.suffix == extension]
|
|
14
|
+
|
|
15
|
+
def get_manual(directory: str, filename: str) -> Path:
|
|
16
|
+
"""
|
|
17
|
+
Get a specific .docx file in a given resources subdirectory.
|
|
18
|
+
|
|
19
|
+
:param directory: "data_science" or "soft_computing"
|
|
20
|
+
:param filename: e.g., "my_manual.docx" or "another.docx"
|
|
21
|
+
:return: Path object
|
|
22
|
+
"""
|
|
23
|
+
return files("DjPractLelo") / "resources" / directory / filename
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import networkx as nx
|
|
2
|
+
|
|
3
|
+
G = nx.DiGraph()
|
|
4
|
+
|
|
5
|
+
G.add_edge("Start", "Process1")
|
|
6
|
+
G.add_edge("Process1", "Process2")
|
|
7
|
+
G.add_edge("Process2", "Process3")
|
|
8
|
+
G.add_edge("Process3", "End")
|
|
9
|
+
G.add_edge("Start", "ProcessA")
|
|
10
|
+
G.add_edge("ProcessA", "ProcessB")
|
|
11
|
+
G.add_edge("ProcessB", "End")
|
|
12
|
+
|
|
13
|
+
print("Edges:", G.edges())
|
|
14
|
+
|
|
15
|
+
if nx.is_directed_acyclic_graph(G):
|
|
16
|
+
print("Graph is Acyclic")
|
|
17
|
+
else:
|
|
18
|
+
print("Graph has a Cycle")
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from mutagen import File
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
def audio_to_horus(filename):
|
|
5
|
+
try:
|
|
6
|
+
audio = File(filename)
|
|
7
|
+
if not audio:
|
|
8
|
+
print("Unsupported or invalid audio format.")
|
|
9
|
+
return
|
|
10
|
+
print(f"filename: {os.path.basename(filename)}")
|
|
11
|
+
if audio.info:
|
|
12
|
+
if hasattr(audio.info, 'length'):
|
|
13
|
+
print(f"duration (sec): {round(audio.info.length, 2)}")
|
|
14
|
+
if hasattr(audio.info, 'bitrate'):
|
|
15
|
+
print(f"bitrate: {audio.info.bitrate}")
|
|
16
|
+
if hasattr(audio.info, 'sample_rate'):
|
|
17
|
+
print(f"sample_rate: {audio.info.sample_rate}")
|
|
18
|
+
if hasattr(audio.info, 'channels'):
|
|
19
|
+
print(f"channels: {audio.info.channels}")
|
|
20
|
+
|
|
21
|
+
except Exception as e:
|
|
22
|
+
print("An error occurred:", str(e))
|
|
23
|
+
audio_to_horus("audio.mp3")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
total = 0
|
|
4
|
+
count = 0
|
|
5
|
+
data = []
|
|
6
|
+
|
|
7
|
+
with open("average.csv") as f:
|
|
8
|
+
reader = csv.DictReader(f)
|
|
9
|
+
for r in reader:
|
|
10
|
+
data.append(r)
|
|
11
|
+
if r["Salary"] != "":
|
|
12
|
+
total += int(r["Salary"])
|
|
13
|
+
count += 1
|
|
14
|
+
|
|
15
|
+
print("\n----- ORIGINAL DATA -----")
|
|
16
|
+
for r in data:
|
|
17
|
+
print(r)
|
|
18
|
+
|
|
19
|
+
average = total / count
|
|
20
|
+
|
|
21
|
+
print("\nAverage Salary:", average)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Item,Amount,Date,Category
|
|
2
|
+
Rent,-1000,2025-01-01,Expense
|
|
3
|
+
Salary,5000,2025-01-05,Income
|
|
4
|
+
Utilities,-200,2025-01-10,Expense
|
|
5
|
+
Sales,7000,2025-01-15,Income
|
|
6
|
+
Refund,-50,2025-01-18,Expense
|
|
7
|
+
Bonus,1000,2025-01-20,Income
|
|
8
|
+
Supplies,-300,2025-01-22,Expense
|
|
9
|
+
Investment,2000,2025-01-25,Income
|
|
10
|
+
Maintenance,-150,2025-01-28,Expense
|
|
11
|
+
Consulting,4000,2025-01-30,Income
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
data = {
|
|
4
|
+
"Location": ["City", "Highway", "Mall", "Station", "Airport", "Park", "Market"],
|
|
5
|
+
"Visitors": [5000, 9000, 3000, 7000, 10000, 4000, 8500],
|
|
6
|
+
"Ad": ["Food", "Cars", "Clothing", "Mobile", "Travel", "Soft Drinks", "Electronics"]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
df = pd.DataFrame(data)
|
|
10
|
+
print(df)
|
|
11
|
+
|
|
12
|
+
# Select high traffic locations
|
|
13
|
+
selected = df[df["Visitors"] > 6000]
|
|
14
|
+
|
|
15
|
+
print("\nSelected Billboard Content")
|
|
16
|
+
print(selected)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
steps to install cassandra:
|
|
2
|
+
1)Pull the Cassandra Docker Image: cmnd (docker pull cassandra:latest)
|
|
3
|
+
2)Run cassandra in docker:(docker run --name cassandra-db -p 9042:9042 -d cassandra)
|
|
4
|
+
3)Checking if cassandra is running or not: (docker ps)
|
|
5
|
+
|
|
6
|
+
Now access the cassandra database shell inside docker container:-
|
|
7
|
+
1)Accessing shell: (docker exec -it cassandra-db cqlsh)
|
|
8
|
+
2)Describe keyspaces (database): (describe keyspaces;)
|
|
9
|
+
3)Create keyspace: (create keyspaces db-name with replication={'class':'SimpleStrategy','replication_factor':1};)
|
|
10
|
+
4)Use the keyspace(database): (use db-name;)
|
|
11
|
+
5)Create table: (create table employee(id UUID PRIMARY KEY, name text, age int);)
|
|
12
|
+
6)Insert data: (INSER INTO employee(id, name, age) VALUES (uuid(),'ABC', 20);)
|
|
13
|
+
7)Fetch data: (select * from employee;)
|
|
14
|
+
8)Update data: (UPDATE employee SET name = 'new-value' WHERE id = 123e4567-e89b-12d3-a456-426614174000 AND created_at = '2025-01-01 10:00:00';)
|
|
15
|
+
9)Delete data: (DELETE FROM employee WHERE id = 123e4567-e89b-12d3-a456-426614174000 AND created_at = '2025-01-01 10:00:00';)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from sklearn.cluster import KMeans
|
|
3
|
+
|
|
4
|
+
data = {
|
|
5
|
+
"X": [10, 12, 30, 32, 15, 35, 11, 29, 31],
|
|
6
|
+
"Y": [20, 22, 40, 42, 25, 45, 19, 39, 41]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
df = pd.DataFrame(data)
|
|
10
|
+
|
|
11
|
+
kmeans = KMeans(n_clusters=2, n_init=10)
|
|
12
|
+
df["Cluster"] = kmeans.fit_predict(df)
|
|
13
|
+
|
|
14
|
+
print(df)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
def csv_to_horus(filename, delimiter=','):
|
|
4
|
+
try:
|
|
5
|
+
with open(filename, mode='r') as file:
|
|
6
|
+
reader = csv.DictReader(file, delimiter=delimiter)
|
|
7
|
+
for row in reader:
|
|
8
|
+
for field, value in row.items():
|
|
9
|
+
print(f"{field}: {value}")
|
|
10
|
+
except FileNotFoundError:
|
|
11
|
+
print("Error: File not found.")
|
|
12
|
+
except Exception as e:
|
|
13
|
+
print("An error occurred:", str(e))
|
|
14
|
+
csv_to_horus('color_srgb.csv')
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
data = pd.read_csv("attributes.csv")
|
|
3
|
+
|
|
4
|
+
print("\n----- Students with Marks >= 80 -----")
|
|
5
|
+
print(data[data["Marks"] >= 80])
|
|
6
|
+
|
|
7
|
+
print("\n----- Marks Statistics -----")
|
|
8
|
+
print("Maximum Marks:", data["Marks"].max())
|
|
9
|
+
print("Minimum Marks:", data["Marks"].min())
|
|
10
|
+
|
|
11
|
+
print("\n----- Department-wise Student Count -----")
|
|
12
|
+
print(data["Department"].value_counts())
|
|
13
|
+
|
|
14
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
data = []
|
|
4
|
+
|
|
5
|
+
with open("binning.csv") as f:
|
|
6
|
+
reader = csv.DictReader(f)
|
|
7
|
+
data = list(reader)
|
|
8
|
+
|
|
9
|
+
print("\n----- ORIGINAL DATA -----")
|
|
10
|
+
for r in data:
|
|
11
|
+
print(r)
|
|
12
|
+
|
|
13
|
+
for r in data:
|
|
14
|
+
age = int(r["Age"])
|
|
15
|
+
|
|
16
|
+
if age < 30:
|
|
17
|
+
r["Age_Group"] = "Young"
|
|
18
|
+
elif age <= 45:
|
|
19
|
+
r["Age_Group"] = "Adult"
|
|
20
|
+
else:
|
|
21
|
+
r["Age_Group"] = "Senior"
|
|
22
|
+
|
|
23
|
+
print("\n----- DATA AFTER BINNING -----")
|
|
24
|
+
for r in data:
|
|
25
|
+
print(r)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
data = []
|
|
4
|
+
|
|
5
|
+
with open("data-pattern.csv") as f:
|
|
6
|
+
reader = csv.DictReader(f)
|
|
7
|
+
for r in reader:
|
|
8
|
+
data.append(r)
|
|
9
|
+
|
|
10
|
+
print("\n----- ORIGINAL DATA -----")
|
|
11
|
+
for r in data:
|
|
12
|
+
print(r)
|
|
13
|
+
|
|
14
|
+
print("\n----- Students in IT Department -----")
|
|
15
|
+
for r in data:
|
|
16
|
+
if r["Department"] == "IT":
|
|
17
|
+
print(r)
|
|
18
|
+
|
|
19
|
+
print("\n----- Students Whose Names Start with 'A' -----")
|
|
20
|
+
for r in data:
|
|
21
|
+
if r["Name"].startswith("A"):
|
|
22
|
+
print(r)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Name,Age,City,Score,Department
|
|
2
|
+
Alice,25,New York,85,HR
|
|
3
|
+
Bob,,London,70,Sales
|
|
4
|
+
Charlie,30,Paris,92,Marketing
|
|
5
|
+
Alice,25,New York,85,HR
|
|
6
|
+
David,abc,Tokyo,60,IT
|
|
7
|
+
Eve,35,London,78,Sales
|
|
8
|
+
Frank,40,Berlin,95,Marketing
|
|
9
|
+
Grace,28,,88,HR
|
|
10
|
+
Heidi,32,Rome,75,IT
|
|
11
|
+
Ivan,xyz,Madrid,50,Sales
|
|
12
|
+
Jack,22,Sydney,80,HR
|
|
13
|
+
Karen,,Dubai,72,Marketing
|
|
14
|
+
Liam,45,Toronto,91,IT
|
|
15
|
+
Mia,31,London,65,Sales
|
|
16
|
+
Noah,29,Paris,89,HR
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
# Load data
|
|
4
|
+
df = pd.read_csv("error_management.csv")
|
|
5
|
+
print("Original Data")
|
|
6
|
+
print(df)
|
|
7
|
+
|
|
8
|
+
# Fill missing values
|
|
9
|
+
df.fillna(0, inplace=True)
|
|
10
|
+
|
|
11
|
+
# Remove duplicate rows
|
|
12
|
+
df.drop_duplicates(inplace=True)
|
|
13
|
+
|
|
14
|
+
# Convert numeric column safely
|
|
15
|
+
df["Age"] = pd.to_numeric(df["Age"], errors="coerce")
|
|
16
|
+
|
|
17
|
+
print("\nCleaned Data")
|
|
18
|
+
print(df)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
file_name = "fixer-uti.csv"
|
|
4
|
+
data = []
|
|
5
|
+
with open(file_name, 'r') as file:
|
|
6
|
+
reader = csv.DictReader(file)
|
|
7
|
+
headers = reader.fieldnames
|
|
8
|
+
|
|
9
|
+
for row in reader:
|
|
10
|
+
data.append(row)
|
|
11
|
+
|
|
12
|
+
print("\n----- ORIGINAL DATA -----")
|
|
13
|
+
for row in data:
|
|
14
|
+
print(row)
|
|
15
|
+
for row in data:
|
|
16
|
+
for col in headers:
|
|
17
|
+
if row[col] == "":
|
|
18
|
+
row[col] = "NA"
|
|
19
|
+
print("\n----- FIXED DATA (Missing Values Filled with NA) -----")
|
|
20
|
+
for row in data:
|
|
21
|
+
print(row)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
import random
|
|
3
|
+
|
|
4
|
+
# ----------------------------------
|
|
5
|
+
# STEP 1: Define Number of Records
|
|
6
|
+
# ----------------------------------
|
|
7
|
+
record_count = 12
|
|
8
|
+
|
|
9
|
+
# ----------------------------------
|
|
10
|
+
# STEP 2: Define Attribute Pools
|
|
11
|
+
# ----------------------------------
|
|
12
|
+
names = ["Amit", "Neha", "Ravi", "Pooja", "Ankit", "Kiran"]
|
|
13
|
+
departments = ["IT", "HR", "Finance", "Sales"]
|
|
14
|
+
|
|
15
|
+
# ----------------------------------
|
|
16
|
+
# STEP 3: Initialize Data Structure
|
|
17
|
+
# ----------------------------------
|
|
18
|
+
data = {
|
|
19
|
+
"Emp_ID": [],
|
|
20
|
+
"Emp_Name": [],
|
|
21
|
+
"Department": [],
|
|
22
|
+
"Age": [],
|
|
23
|
+
"Monthly_Salary": []
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# ----------------------------------
|
|
27
|
+
# STEP 4: Generate Data Records
|
|
28
|
+
# ----------------------------------
|
|
29
|
+
for i in range(record_count):
|
|
30
|
+
data["Emp_ID"].append(1001 + i)
|
|
31
|
+
data["Emp_Name"].append(random.choice(names))
|
|
32
|
+
data["Department"].append(random.choice(departments))
|
|
33
|
+
data["Age"].append(random.randint(22, 45))
|
|
34
|
+
data["Monthly_Salary"].append(random.randint(25000, 60000))
|
|
35
|
+
|
|
36
|
+
# ----------------------------------
|
|
37
|
+
# STEP 5: Create DataFrame
|
|
38
|
+
# ----------------------------------
|
|
39
|
+
df = pd.DataFrame(data)
|
|
40
|
+
|
|
41
|
+
print("----- GENERATED DATA -----")
|
|
42
|
+
print(df)
|
|
43
|
+
|
|
44
|
+
# ----------------------------------
|
|
45
|
+
# STEP 6: Store Data in CSV
|
|
46
|
+
# ----------------------------------
|
|
47
|
+
df.to_csv("employee_generated_data.csv", index=False)
|
|
48
|
+
|
|
49
|
+
print("\nData successfully generated and stored in CSV file")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
# Load JSON file
|
|
4
|
+
with open("course.json", "r") as file:
|
|
5
|
+
data = json.load(file)
|
|
6
|
+
|
|
7
|
+
# Display HORUS format in IDLE
|
|
8
|
+
for course in data["courses"]:
|
|
9
|
+
print(f"Name:- {course['course_name']}")
|
|
10
|
+
print(f"Duration:- {course['duration']}")
|
|
11
|
+
print(f"Average Fee:- {course['average_fee']}")
|
|
12
|
+
print(f"Future Scope:- {course['future_scope']}\n")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
|
|
4
|
+
csv_file = "data.csv"
|
|
5
|
+
|
|
6
|
+
def log(level, message):
|
|
7
|
+
print(f"{datetime.now()} | {level} | {message}")
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
df = pd.read_csv(csv_file)
|
|
11
|
+
log("INFO", f"{csv_file} loaded successfully")
|
|
12
|
+
|
|
13
|
+
if df.isnull().values.any():
|
|
14
|
+
log("WARNING", "Null values detected in CSV file")
|
|
15
|
+
else:
|
|
16
|
+
log("INFO", "No null values found")
|
|
17
|
+
|
|
18
|
+
except FileNotFoundError:
|
|
19
|
+
log("ERROR", f"{csv_file} not found")
|
|
20
|
+
|
|
21
|
+
except Exception as e:
|
|
22
|
+
log("ERROR", str(e))
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import mysql.connector
|
|
2
|
+
|
|
3
|
+
db_config = {
|
|
4
|
+
"host": "localhost",
|
|
5
|
+
"user": "root",
|
|
6
|
+
"password": "123456",
|
|
7
|
+
"database": "mscit"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
conn = mysql.connector.connect(**db_config)
|
|
11
|
+
cursor = conn.cursor()
|
|
12
|
+
query = "SELECT name, contactNo, address FROM users"
|
|
13
|
+
cursor.execute(query)
|
|
14
|
+
|
|
15
|
+
rows = cursor.fetchall()
|
|
16
|
+
|
|
17
|
+
print("NAME| CONTACTNO| ADDRESS")
|
|
18
|
+
|
|
19
|
+
for row in rows:
|
|
20
|
+
name, contact, address = row
|
|
21
|
+
print(f"{name}| {contact}| {address}")
|
|
22
|
+
cursor.close()
|
|
23
|
+
conn.close()
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import networkx as nx
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
|
|
4
|
+
G = nx.Graph()
|
|
5
|
+
|
|
6
|
+
routers = [
|
|
7
|
+
("Router1", "Router2"),
|
|
8
|
+
("Router2", "Router3"),
|
|
9
|
+
("Router3", "Router4"),
|
|
10
|
+
("Router4", "Router1"),
|
|
11
|
+
("Router1", "Router5"),
|
|
12
|
+
("Router5", "Router2"),
|
|
13
|
+
("Router3", "Router6"),
|
|
14
|
+
("Router6", "Router4")
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
G.add_edges_from(routers)
|
|
18
|
+
|
|
19
|
+
print("Routers:", G.nodes())
|
|
20
|
+
print("Connections:", G.edges())
|
|
21
|
+
|
|
22
|
+
nx.draw(G, with_labels=True, node_size=2000)
|
|
23
|
+
plt.show()
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
# ----------------------------------
|
|
4
|
+
# STEP 1: Load CSV File
|
|
5
|
+
# ----------------------------------
|
|
6
|
+
df = pd.read_csv("organizing_data.csv")
|
|
7
|
+
|
|
8
|
+
print("----- ORIGINAL DATA -----")
|
|
9
|
+
print(df)
|
|
10
|
+
|
|
11
|
+
# ----------------------------------
|
|
12
|
+
# STEP 2: Sort Data by Price
|
|
13
|
+
# ----------------------------------
|
|
14
|
+
sorted_data = df.sort_values(by="Price", ascending=False)
|
|
15
|
+
|
|
16
|
+
print("\n----- SORTED BY PRICE (HIGH TO LOW) -----")
|
|
17
|
+
print(sorted_data)
|
|
18
|
+
|
|
19
|
+
# ----------------------------------
|
|
20
|
+
# STEP 3: Group Data by City
|
|
21
|
+
# ----------------------------------
|
|
22
|
+
city_group = df.groupby("City")["Quantity"].sum()
|
|
23
|
+
|
|
24
|
+
print("\n----- TOTAL QUANTITY SOLD PER CITY -----")
|
|
25
|
+
print(city_group)
|
|
26
|
+
|
|
27
|
+
# ----------------------------------
|
|
28
|
+
# STEP 4: Group Data by Product
|
|
29
|
+
# ----------------------------------
|
|
30
|
+
product_group = df.groupby("Product")["Quantity"].sum()
|
|
31
|
+
|
|
32
|
+
print("\n----- TOTAL QUANTITY SOLD PER PRODUCT -----")
|
|
33
|
+
print(product_group)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
|
|
3
|
+
data = []
|
|
4
|
+
salaries = []
|
|
5
|
+
|
|
6
|
+
with open("outlier.csv") as f:
|
|
7
|
+
reader = csv.DictReader(f)
|
|
8
|
+
for r in reader:
|
|
9
|
+
data.append(r)
|
|
10
|
+
salaries.append(int(r["Salary"]))
|
|
11
|
+
|
|
12
|
+
# calculate mean
|
|
13
|
+
mean = sum(salaries) / len(salaries)
|
|
14
|
+
|
|
15
|
+
# threshold for outlier
|
|
16
|
+
threshold = mean * 1.5
|
|
17
|
+
|
|
18
|
+
print("\n----- ORIGINAL DATA -----")
|
|
19
|
+
for r in data:
|
|
20
|
+
print(r)
|
|
21
|
+
|
|
22
|
+
print("\n----- OUTLIERS -----")
|
|
23
|
+
for r in data:
|
|
24
|
+
if int(r["Salary"]) > threshold:
|
|
25
|
+
print(r)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
data = {
|
|
4
|
+
"Option": ["BoxA", "BoxB", "BoxC", "BoxD", "BoxE", "BoxF", "BoxG"],
|
|
5
|
+
"Cost": [120, 100, 150, 90, 110, 85, 130]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
df = pd.DataFrame(data)
|
|
9
|
+
print(df)
|
|
10
|
+
|
|
11
|
+
best_index = df["Cost"].idxmin()
|
|
12
|
+
df.drop(best_index, inplace=True)
|
|
13
|
+
|
|
14
|
+
print("\nAfter Removing Best Option")
|
|
15
|
+
print(df)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
data = {
|
|
4
|
+
"Name": ["A", "B", "C", "D", "E", "F", "G"],
|
|
5
|
+
"Hours": [160, 170, 150, 180, 165, 175, 155],
|
|
6
|
+
"Rate": [200, 180, 220, 190, 210, 205, 195]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
df = pd.DataFrame(data)
|
|
10
|
+
df["Salary"] = df["Hours"] * df["Rate"]
|
|
11
|
+
|
|
12
|
+
print(df)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from PIL import Image
|
|
2
|
+
|
|
3
|
+
def image_info_to_horus(filename):
|
|
4
|
+
try:
|
|
5
|
+
with Image.open(filename) as img:
|
|
6
|
+
print(f"Filename: {filename}")
|
|
7
|
+
print(f"Format: {img.format}")
|
|
8
|
+
print(f"Mode: {img.mode}")
|
|
9
|
+
print(f"Size: {img.size[0]} x {img.size[1]} pixels")
|
|
10
|
+
except FileNotFoundError:
|
|
11
|
+
print("Error: File not found.")
|
|
12
|
+
except Exception as e:
|
|
13
|
+
print("An error occurred:", str(e))
|
|
14
|
+
image_info_to_horus("uni.jpg")
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
1) open power bi
|
|
2
|
+
2) click "get data from other sources"
|
|
3
|
+
3) select the data source (any csv file)
|
|
4
|
+
4) click on load the data
|
|
5
|
+
5) select the data columns to be displayed on the visuals(top right corner, there will be data columns)
|
|
6
|
+
6) select visualizations of your choice (pie chart / line chart)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import networkx as nx
|
|
2
|
+
|
|
3
|
+
G = nx.Graph()
|
|
4
|
+
|
|
5
|
+
G.add_weighted_edges_from([
|
|
6
|
+
("India", "Dubai", 4),
|
|
7
|
+
("Dubai", "USA", 6),
|
|
8
|
+
("India", "UK", 8),
|
|
9
|
+
("UK", "USA", 3),
|
|
10
|
+
("Dubai", "UK", 2),
|
|
11
|
+
("India", "Germany", 7),
|
|
12
|
+
("Germany", "USA", 5),
|
|
13
|
+
("UK", "Canada", 10),
|
|
14
|
+
("Canada", "USA", 4)
|
|
15
|
+
])
|
|
16
|
+
|
|
17
|
+
route = nx.shortest_path(G, "India", "USA", weight="weight")
|
|
18
|
+
print("Best Shipping Route:", route)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
pd.set_option("display.max_columns", None)
|
|
6
|
+
pd.set_option("display.width", None)
|
|
7
|
+
|
|
8
|
+
# ----------------------------------
|
|
9
|
+
# STEP 1: Generate Unique Time ID
|
|
10
|
+
# ----------------------------------
|
|
11
|
+
time_id = str(uuid.uuid4())
|
|
12
|
+
|
|
13
|
+
# ----------------------------------
|
|
14
|
+
# STEP 2: Create Time Hub
|
|
15
|
+
# ----------------------------------
|
|
16
|
+
time_hub = pd.DataFrame({
|
|
17
|
+
"Time_ID": [time_id]
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
print("----- TIME HUB -----")
|
|
21
|
+
print(time_hub)
|
|
22
|
+
|
|
23
|
+
# ----------------------------------
|
|
24
|
+
# STEP 3: Capture Current Time
|
|
25
|
+
# ----------------------------------
|
|
26
|
+
current_time = datetime.now()
|
|
27
|
+
|
|
28
|
+
# ----------------------------------
|
|
29
|
+
# STEP 4: Create Time Satellite
|
|
30
|
+
# ----------------------------------
|
|
31
|
+
time_satellite = pd.DataFrame({
|
|
32
|
+
"Time_ID": [time_id],
|
|
33
|
+
"Date": [current_time.strftime("%Y-%m-%d")],
|
|
34
|
+
"Time": [current_time.strftime("%H:%M:%S")],
|
|
35
|
+
"Day": [current_time.strftime("%A")],
|
|
36
|
+
"Month": [current_time.strftime("%B")],
|
|
37
|
+
"Year": [current_time.year]
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
print("\n----- TIME SATELLITE -----")
|
|
41
|
+
print(time_satellite)
|
|
42
|
+
|
|
43
|
+
# ----------------------------------
|
|
44
|
+
# STEP 5: Create Time Link
|
|
45
|
+
# ----------------------------------
|
|
46
|
+
time_link = pd.DataFrame({
|
|
47
|
+
"Link_ID": [str(uuid.uuid4())],
|
|
48
|
+
"Time_ID": [time_id],
|
|
49
|
+
"Event_Type": ["User Login"],
|
|
50
|
+
"System": ["Application Server"]
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
print("\n----- TIME LINK -----")
|
|
54
|
+
print(time_link)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
# ----------------------------------
|
|
4
|
+
# STEP 1: Load CSV Data
|
|
5
|
+
# ----------------------------------
|
|
6
|
+
df = pd.read_csv("transform_data.csv")
|
|
7
|
+
|
|
8
|
+
print("----- ORIGINAL DATA -----")
|
|
9
|
+
print(df)
|
|
10
|
+
|
|
11
|
+
# ----------------------------------
|
|
12
|
+
# STEP 2: Handle Missing Values
|
|
13
|
+
# ----------------------------------
|
|
14
|
+
df["HoursWorked"].fillna(df["HoursWorked"].mean(), inplace=True)
|
|
15
|
+
|
|
16
|
+
# ----------------------------------
|
|
17
|
+
# STEP 3: Data Transformation
|
|
18
|
+
# ----------------------------------
|
|
19
|
+
|
|
20
|
+
# Calculate Salary
|
|
21
|
+
df["Salary"] = df["HoursWorked"] * df["RatePerHour"]
|
|
22
|
+
|
|
23
|
+
# Add Bonus (10% of Salary)
|
|
24
|
+
df["Bonus"] = df["Salary"] * 0.10
|
|
25
|
+
|
|
26
|
+
# Calculate Total Pay
|
|
27
|
+
df["TotalPay"] = df["Salary"] + df["Bonus"]
|
|
28
|
+
|
|
29
|
+
# Convert Names to Uppercase
|
|
30
|
+
df["Name"] = df["Name"].str.upper()
|
|
31
|
+
|
|
32
|
+
# Categorize Salary Level
|
|
33
|
+
df["SalaryCategory"] = df["Salary"].apply(
|
|
34
|
+
lambda x: "High" if x >= 35000 else "Medium"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
print("\n----- TRANSFORMED DATA -----")
|
|
38
|
+
print(df)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import cv2
|
|
2
|
+
|
|
3
|
+
# Read video file
|
|
4
|
+
file = "video.mp4"
|
|
5
|
+
cap = cv2.VideoCapture(file)
|
|
6
|
+
|
|
7
|
+
# Extract video metadata
|
|
8
|
+
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
|
|
9
|
+
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
|
10
|
+
fps = round(cap.get(cv2.CAP_PROP_FPS), 2)
|
|
11
|
+
frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
|
|
12
|
+
duration = round(frames / fps, 2)
|
|
13
|
+
|
|
14
|
+
cap.release()
|
|
15
|
+
|
|
16
|
+
# Display in HORUS format (IDLE output)
|
|
17
|
+
print("VIDEO")
|
|
18
|
+
print(f"Filename: {file}")
|
|
19
|
+
print(f"Width: {width}")
|
|
20
|
+
print(f"Height: {height}")
|
|
21
|
+
print(f"FPS: {fps}")
|
|
22
|
+
print(f"Total Frames: {frames}")
|
|
23
|
+
print(f"Duration(sec): {duration}")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
|
|
3
|
+
data = {
|
|
4
|
+
"City": ["A", "B", "C", "D", "E", "F", "G", "H"],
|
|
5
|
+
"Demand": [200, 500, 300, 450, 600, 250, 700, 350]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
df = pd.DataFrame(data)
|
|
9
|
+
print(df)
|
|
10
|
+
|
|
11
|
+
best = df.loc[df["Demand"].idxmax()]
|
|
12
|
+
|
|
13
|
+
print("\nBest Warehouse Location")
|
|
14
|
+
print(best)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import xml.etree.ElementTree as ET
|
|
2
|
+
|
|
3
|
+
def xml_to_horus(filename):
|
|
4
|
+
try:
|
|
5
|
+
tree = ET.parse(filename)
|
|
6
|
+
root = tree.getroot()
|
|
7
|
+
for record in root:
|
|
8
|
+
for element in record:
|
|
9
|
+
print(f"{element.tag}: {element.text}")
|
|
10
|
+
print("\n")
|
|
11
|
+
|
|
12
|
+
except FileNotFoundError:
|
|
13
|
+
print("Error: File not found.")
|
|
14
|
+
except ET.ParseError:
|
|
15
|
+
print("Error: Failed to parse XML. Make sure it's well-formed.")
|
|
16
|
+
except Exception as e:
|
|
17
|
+
print("An error occurred:", str(e))
|
|
18
|
+
|
|
19
|
+
# Example usage
|
|
20
|
+
xml_to_horus('basic.xml')
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: DjPractLelo
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: My first Python package
|
|
5
|
-
Author:
|
|
6
|
-
Author-email:
|
|
5
|
+
Author: DjPractVala
|
|
6
|
+
Author-email: DjPractVala <youremail@example.com>
|
|
7
7
|
License: MIT
|
|
8
8
|
Project-URL: Homepage, https://github.com/yourusername/my-package
|
|
9
9
|
Requires-Python: >=3.8
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
LICENCE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.py
|
|
5
|
+
DjPractLelo/__init__.py
|
|
6
|
+
DjPractLelo/resource_loader.py
|
|
7
|
+
DjPractLelo.egg-info/PKG-INFO
|
|
8
|
+
DjPractLelo.egg-info/SOURCES.txt
|
|
9
|
+
DjPractLelo.egg-info/dependency_links.txt
|
|
10
|
+
DjPractLelo.egg-info/top_level.txt
|
|
11
|
+
DjPractLelo/resources/data_science/acyclic_graph.py
|
|
12
|
+
DjPractLelo/resources/data_science/attributes.csv
|
|
13
|
+
DjPractLelo/resources/data_science/audio-to-horus.py
|
|
14
|
+
DjPractLelo/resources/data_science/average.csv
|
|
15
|
+
DjPractLelo/resources/data_science/averaging.py
|
|
16
|
+
DjPractLelo/resources/data_science/balance_sheet.csv
|
|
17
|
+
DjPractLelo/resources/data_science/balance_sheet.py
|
|
18
|
+
DjPractLelo/resources/data_science/billboard_content.py
|
|
19
|
+
DjPractLelo/resources/data_science/binning.csv
|
|
20
|
+
DjPractLelo/resources/data_science/cassandra.txt
|
|
21
|
+
DjPractLelo/resources/data_science/clustering_warehouse.py
|
|
22
|
+
DjPractLelo/resources/data_science/color_srgb.csv
|
|
23
|
+
DjPractLelo/resources/data_science/csv-to-horus.py
|
|
24
|
+
DjPractLelo/resources/data_science/data-attribute.py
|
|
25
|
+
DjPractLelo/resources/data_science/data-binning.py
|
|
26
|
+
DjPractLelo/resources/data_science/data-pattern.csv
|
|
27
|
+
DjPractLelo/resources/data_science/data-pattern.py
|
|
28
|
+
DjPractLelo/resources/data_science/data-process.csv
|
|
29
|
+
DjPractLelo/resources/data_science/data.csv
|
|
30
|
+
DjPractLelo/resources/data_science/delivery_route.py
|
|
31
|
+
DjPractLelo/resources/data_science/error_management.csv
|
|
32
|
+
DjPractLelo/resources/data_science/error_management.py
|
|
33
|
+
DjPractLelo/resources/data_science/fixer-uti.csv
|
|
34
|
+
DjPractLelo/resources/data_science/fixer-utility.py
|
|
35
|
+
DjPractLelo/resources/data_science/forex_planner.py
|
|
36
|
+
DjPractLelo/resources/data_science/generate_data.py
|
|
37
|
+
DjPractLelo/resources/data_science/generate_gml.csv
|
|
38
|
+
DjPractLelo/resources/data_science/generate_gml.py
|
|
39
|
+
DjPractLelo/resources/data_science/json-to-horus.py
|
|
40
|
+
DjPractLelo/resources/data_science/logging.py
|
|
41
|
+
DjPractLelo/resources/data_science/mysql-to-horus.py
|
|
42
|
+
DjPractLelo/resources/data_science/network_routing.py
|
|
43
|
+
DjPractLelo/resources/data_science/organize_data.py
|
|
44
|
+
DjPractLelo/resources/data_science/organizing_data.csv
|
|
45
|
+
DjPractLelo/resources/data_science/outlier-detect.py
|
|
46
|
+
DjPractLelo/resources/data_science/outlier.csv
|
|
47
|
+
DjPractLelo/resources/data_science/packing_option.py
|
|
48
|
+
DjPractLelo/resources/data_science/payroll_generation.py
|
|
49
|
+
DjPractLelo/resources/data_science/picture-to-horus.py
|
|
50
|
+
DjPractLelo/resources/data_science/power-bi.txt
|
|
51
|
+
DjPractLelo/resources/data_science/practical_manual.docx
|
|
52
|
+
DjPractLelo/resources/data_science/shipping_route.py
|
|
53
|
+
DjPractLelo/resources/data_science/time_data_vault.py
|
|
54
|
+
DjPractLelo/resources/data_science/transform_data.csv
|
|
55
|
+
DjPractLelo/resources/data_science/transform_data.py
|
|
56
|
+
DjPractLelo/resources/data_science/video-to-horus.py
|
|
57
|
+
DjPractLelo/resources/data_science/warehouse_location.py
|
|
58
|
+
DjPractLelo/resources/data_science/xml-to-horus.py
|
|
59
|
+
DjPractLelo/resources/soft_computing/practical_manual.docx
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: DjPractLelo
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: My first Python package
|
|
5
|
-
Author:
|
|
6
|
-
Author-email:
|
|
5
|
+
Author: DjPractVala
|
|
6
|
+
Author-email: DjPractVala <youremail@example.com>
|
|
7
7
|
License: MIT
|
|
8
8
|
Project-URL: Homepage, https://github.com/yourusername/my-package
|
|
9
9
|
Requires-Python: >=3.8
|
|
@@ -4,15 +4,28 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "DjPractLelo"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "My first Python package"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.7"
|
|
11
11
|
license = {text = "MIT"}
|
|
12
12
|
authors = [
|
|
13
|
-
{name = "
|
|
13
|
+
{name = "DjPractVala", email = "youremail@example.com"}
|
|
14
14
|
]
|
|
15
15
|
dependencies = []
|
|
16
16
|
|
|
17
17
|
[project.urls]
|
|
18
18
|
Homepage = "https://github.com/yourusername/my-package"
|
|
19
|
+
|
|
20
|
+
[tool.setuptools]
|
|
21
|
+
include-package-data = true
|
|
22
|
+
|
|
23
|
+
[tool.setuptools.packages.find]
|
|
24
|
+
where = ["."]
|
|
25
|
+
|
|
26
|
+
[tool.setuptools.package-data]
|
|
27
|
+
DjPractLelo = [
|
|
28
|
+
"resources/**/*.csv",
|
|
29
|
+
"resources/**/*.docx",
|
|
30
|
+
"resources/**/*.txt"
|
|
31
|
+
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|