RohanVashisht commited on
Commit
fc9f03c
·
verified ·
1 Parent(s): 4dfdd67

Delete libraries

Browse files
libraries/fits/pants_lib.py DELETED
@@ -1,63 +0,0 @@
1
- from dataclasses import dataclass
2
-
3
- @dataclass
4
- class PantsMeasurements:
5
- waist: float # in cm
6
- hips: float # in cm
7
- leg_length: float # in cm
8
-
9
- def determine_fit(measurements: PantsMeasurements) -> str:
10
- """
11
- Determine the general fit for pants based on waist, hips, and leg length measurements.
12
-
13
- The algorithm uses two ratios:
14
- - Waist-to-Hips Ratio: Lower ratios typically suggest a more tapered (slim) waist.
15
- - Leg-to-Hips Ratio: Higher values indicate longer legs relative to hip size.
16
-
17
- Assumed thresholds for demonstration purposes:
18
- - Slim Fit: if waist/hips < 0.80 and leg_length/hips >= 1.15
19
- - Regular Fit: if 0.80 <= waist/hips <= 0.90 and 1.05 <= leg_length/hips < 1.15
20
- - Loose Fit: otherwise
21
-
22
- Args:
23
- measurements (PantsMeasurements): The measurements for waist, hips, and leg length.
24
-
25
- Returns:
26
- str: A recommendation of 'Slim Fit', 'Regular Fit', or 'Loose Fit'.
27
- """
28
- waist_to_hip = measurements.waist / measurements.hips
29
- leg_to_hip = measurements.leg_length / measurements.hips
30
-
31
- if waist_to_hip < 0.80 and leg_to_hip >= 1.15:
32
- return "Slim Fit"
33
- elif 0.80 <= waist_to_hip <= 0.90 and 1.05 <= leg_to_hip < 1.15:
34
- return "Regular Fit"
35
- else:
36
- return "Loose Fit"
37
-
38
- def get_fit(waist: float, hips: float, leg_length: float) -> str:
39
- """
40
- Get a fit recommendation for pants based on input measurements.
41
-
42
- Args:
43
- waist (float): Waist measurement in cm.
44
- hips (float): Hip measurement in cm.
45
- leg_length (float): Leg length measurement in cm.
46
-
47
- Returns:
48
- str: The recommended pants fit category.
49
- """
50
- measurements = PantsMeasurements(waist=waist, hips=hips, leg_length=leg_length)
51
- return determine_fit(measurements)
52
-
53
- if __name__ == "__main__":
54
- try:
55
- waist_input = float(input("Enter your waist measurement (cm): "))
56
- hips_input = float(input("Enter your hip measurement (cm): "))
57
- leg_length_input = float(input("Enter your leg length measurement (cm): "))
58
- except ValueError:
59
- print("Please enter valid numeric values.")
60
- exit(1)
61
-
62
- recommended_fit = get_fit(waist_input, hips_input, leg_length_input)
63
- print(f"Based on your measurements, your recommended fit for pants is: {recommended_fit}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libraries/fits/shirts_lib.py DELETED
@@ -1,67 +0,0 @@
1
- from dataclasses import dataclass
2
-
3
- @dataclass
4
- class BodyMeasurements:
5
- shoulder: float # in cm
6
- chest: float # in cm
7
- waist: float # in cm
8
-
9
- def determine_fit(measurements: BodyMeasurements) -> str:
10
- """
11
- Determine the general fit based on shoulder, chest, and waist measurements.
12
-
13
- The algorithm uses two simple ratios:
14
- - waist-to-chest ratio: a lower ratio suggests a more tapered torso (slim fit).
15
- - chest-to-shoulder ratio: a higher ratio suggests a broader chest relative to the shoulder,
16
- which is often associated with a slimmer profile.
17
-
18
- Thresholds (assumed for demonstration purposes):
19
- - Slim Fit: waist/chest < 0.85 and chest/shoulder >= 1.45
20
- - Regular Fit: waist/chest between 0.85 and 0.95 and chest/shoulder between 1.3 and 1.45
21
- - Loose Fit: any measurements outside the above ranges
22
-
23
- Args:
24
- measurements (BodyMeasurements): User measurements in centimeters.
25
-
26
- Returns:
27
- str: A recommendation of 'Slim Fit', 'Regular Fit', or 'Loose Fit'.
28
- """
29
- # Calculate ratios
30
- waist_chest_ratio = measurements.waist / measurements.chest
31
- chest_shoulder_ratio = measurements.chest / measurements.shoulder
32
-
33
- # Determine fit based on ratio thresholds
34
- if waist_chest_ratio < 0.85 and chest_shoulder_ratio >= 1.45:
35
- return "Slim Fit"
36
- elif 0.85 <= waist_chest_ratio <= 0.95 and 1.3 <= chest_shoulder_ratio < 1.45:
37
- return "Regular Fit"
38
- else:
39
- return "Loose Fit"
40
-
41
- def get_fit(shoulder: float, chest: float, waist: float) -> str:
42
- """
43
- Get a fit recommendation based on input measurements.
44
-
45
- Args:
46
- shoulder (float): Shoulder measurement in cm.
47
- chest (float): Chest measurement in cm.
48
- waist (float): Waist measurement in cm.
49
-
50
- Returns:
51
- str: The recommended fit category.
52
- """
53
- measurements = BodyMeasurements(shoulder=shoulder, chest=chest, waist=waist)
54
- return determine_fit(measurements)
55
-
56
- if __name__ == "__main__":
57
- # Example interactive usage:
58
- try:
59
- shoulder_input = float(input("Enter your shoulder measurement (cm): "))
60
- chest_input = float(input("Enter your chest measurement (cm): "))
61
- waist_input = float(input("Enter your waist measurement (cm): "))
62
- except ValueError:
63
- print("Please enter valid numeric values.")
64
- exit(1)
65
-
66
- recommended_fit = get_fit(shoulder_input, chest_input, waist_input)
67
- print(f"Based on your measurements, your recommended fit is: {recommended_fit}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libraries/sizes/pants_lib.py DELETED
@@ -1,119 +0,0 @@
1
- from typing import List, Dict, Tuple
2
- from dataclasses import dataclass
3
- import json
4
- from enum import Enum
5
-
6
- class SizeLabel(Enum):
7
- XS = 1
8
- S = 2
9
- M = 3
10
- L = 4
11
- XL = 5
12
- XXL = 6
13
-
14
- @dataclass
15
- class SizeRange:
16
- label: str
17
- waist: List[int]
18
- hip: List[int]
19
- length: List[int]
20
-
21
- @dataclass
22
- class Brand:
23
- brand: str
24
- sizes: List[SizeRange]
25
-
26
- def load_size_data() -> List[Brand]:
27
- """Load and parse the size data from JSON."""
28
- with open('./data/size_data_pants.json', 'r') as f:
29
- data = json.load(f)
30
-
31
- brands = []
32
- for brand_data in data:
33
- sizes = []
34
- for size in brand_data['sizes']:
35
- sizes.append(SizeRange(
36
- label=size['label'],
37
- waist=size['waist'],
38
- hip=size['hip'],
39
- length=size['length']
40
- ))
41
- brands.append(Brand(brand=brand_data['brand'], sizes=sizes))
42
- return brands
43
-
44
- def find_size_category(measurement: int, ranges: List[List[int]]) -> List[int]:
45
- """Find matching size indices for a given measurement."""
46
- return [i for i, (min_val, max_val) in enumerate(ranges) if min_val <= measurement <= max_val]
47
-
48
- def get_best_size(brand_name: str, waist: int, hip: int, length: int) -> Tuple[str, Dict[str, str]]:
49
- """
50
- Determine the best size for given measurements and brand.
51
-
52
- Args:
53
- brand_name (str): Name of the brand
54
- waist (int): Waist measurement in cm
55
- hip (int): Hip measurement in cm
56
- length (int): Pants length in cm
57
-
58
- Returns:
59
- Tuple[str, Dict[str, str]]: Recommended size label and detailed fit information
60
- """
61
- brands = load_size_data()
62
-
63
- brand = next((b for b in brands if b.brand.lower() == brand_name.lower()), None)
64
- if not brand:
65
- raise ValueError(f"Brand '{brand_name}' not found")
66
-
67
- waist_ranges = [size.waist for size in brand.sizes]
68
- hip_ranges = [size.hip for size in brand.sizes]
69
- length_ranges = [size.length for size in brand.sizes]
70
-
71
- waist_sizes = find_size_category(waist, waist_ranges)
72
- hip_sizes = find_size_category(hip, hip_ranges)
73
- length_sizes = find_size_category(length, length_ranges)
74
-
75
- if not waist_sizes or not hip_sizes or not length_sizes:
76
- measurements_info = {
77
- "waist": "too small" if waist < waist_ranges[0][0] else "too large" if waist > waist_ranges[-1][1] else "ok",
78
- "hip": "too small" if hip < hip_ranges[0][0] else "too large" if hip > hip_ranges[-1][1] else "ok",
79
- "length": "too short" if length < length_ranges[0][0] else "too long" if length > length_ranges[-1][1] else "ok"
80
- }
81
- return "No exact fit", measurements_info
82
-
83
- all_indices = waist_sizes + hip_sizes + length_sizes
84
- avg_size_index = round(sum(all_indices) / len(all_indices))
85
-
86
- recommended_size = brand.sizes[avg_size_index].label
87
-
88
- fit_info = {
89
- "waist": "perfect" if avg_size_index in waist_sizes else "tight" if avg_size_index > max(waist_sizes) else "loose",
90
- "hip": "perfect" if avg_size_index in hip_sizes else "tight" if avg_size_index > max(hip_sizes) else "loose",
91
- "length": "perfect" if avg_size_index in length_sizes else "short" if avg_size_index > max(length_sizes) else "long"
92
- }
93
-
94
- return recommended_size, fit_info
95
-
96
- def print_size_recommendation(brand: str, waist: int, hip: int, length: int) -> None:
97
- """
98
- Print a formatted size recommendation.
99
-
100
- Args:
101
- brand (str): Brand name
102
- waist (int): Waist measurement in cm
103
- hip (int): Hip measurement in cm
104
- length (int): Pants length in cm
105
- """
106
- try:
107
- size, fit_info = get_best_size(brand, waist, hip, length)
108
- print(f"\nSize Recommendation for {brand}:")
109
- print(f"Recommended size: {size}")
110
- print("\nFit Details:")
111
- print(f"Waist: {fit_info['waist']}")
112
- print(f"Hip: {fit_info['hip']}")
113
- print(f"Length: {fit_info['length']}")
114
- except ValueError as e:
115
- print(f"Error: {str(e)}")
116
-
117
- # Example usage
118
- if __name__ == "__main__":
119
- print_size_recommendation("Zara", 80, 95, 105)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libraries/sizes/shirts_lib.py DELETED
@@ -1,131 +0,0 @@
1
- from typing import List, Dict, Union, Tuple
2
- from dataclasses import dataclass
3
- import json
4
- from enum import Enum
5
-
6
- class SizeLabel(Enum):
7
- XS = 1
8
- S = 2
9
- M = 3
10
- L = 4
11
- XL = 5
12
- XXL = 6
13
-
14
- @dataclass
15
- class SizeRange:
16
- label: str
17
- chest: List[int]
18
- waist: List[int]
19
- shoulder: List[int]
20
-
21
- @dataclass
22
- class Brand:
23
- brand: str
24
- sizes: List[SizeRange]
25
-
26
- def load_size_data() -> List[Brand]:
27
- """Load and parse the size data from JSON."""
28
- with open('./data/size_data_shirts.json', 'r') as f:
29
- data = json.load(f)
30
-
31
- brands = []
32
- for brand_data in data:
33
- sizes = []
34
- for size in brand_data['sizes']:
35
- sizes.append(SizeRange(
36
- label=size['label'],
37
- chest=size['chest'],
38
- waist=size['waist'],
39
- shoulder=size['shoulder']
40
- ))
41
- brands.append(Brand(brand=brand_data['brand'], sizes=sizes))
42
- return brands
43
-
44
- def find_size_category(measurement: int, ranges: List[List[int]]) -> List[int]:
45
- """Find matching size indices for a given measurement."""
46
- matching_sizes = []
47
- for i, (min_val, max_val) in enumerate(ranges):
48
- if min_val <= measurement <= max_val:
49
- matching_sizes.append(i)
50
- return matching_sizes
51
-
52
- def get_best_size(brand_name: str, chest: int, waist: int, shoulder: int) -> Tuple[str, Dict[str, str]]:
53
- """
54
- Determine the best size for given measurements and brand.
55
-
56
- Args:
57
- brand_name (str): Name of the brand (e.g., "Zara", "H&M", "Dior")
58
- chest (int): Chest measurement in centimeters
59
- waist (int): Waist measurement in centimeters
60
- shoulder (int): Shoulder measurement in centimeters
61
-
62
- Returns:
63
- Tuple[str, Dict[str, str]]: Recommended size label and detailed fit information
64
- """
65
- brands = load_size_data()
66
-
67
- # Find the brand
68
- brand = next((b for b in brands if b.brand.lower() == brand_name.lower()), None)
69
- if not brand:
70
- raise ValueError(f"Brand '{brand_name}' not found")
71
-
72
- # Get all size ranges for the brand
73
- chest_ranges = [size.chest for size in brand.sizes]
74
- waist_ranges = [size.waist for size in brand.sizes]
75
- shoulder_ranges = [size.shoulder for size in brand.sizes]
76
-
77
- # Find matching sizes for each measurement
78
- chest_sizes = find_size_category(chest, chest_ranges)
79
- waist_sizes = find_size_category(waist, waist_ranges)
80
- shoulder_sizes = find_size_category(shoulder, shoulder_ranges)
81
-
82
- # If any measurement doesn't fit in any range
83
- if not chest_sizes or not waist_sizes or not shoulder_sizes:
84
- measurements_info = {
85
- "chest": "too small" if chest < chest_ranges[0][0] else "too large" if chest > chest_ranges[-1][1] else "ok",
86
- "waist": "too small" if waist < waist_ranges[0][0] else "too large" if waist > waist_ranges[-1][1] else "ok",
87
- "shoulder": "too small" if shoulder < shoulder_ranges[0][0] else "too large" if shoulder > shoulder_ranges[-1][1] else "ok"
88
- }
89
- return "No exact fit", measurements_info
90
-
91
- # Calculate the average size index
92
- all_indices = chest_sizes + waist_sizes + shoulder_sizes
93
- avg_size_index = round(sum(all_indices) / len(all_indices))
94
-
95
- # Get the recommended size label
96
- recommended_size = brand.sizes[avg_size_index].label
97
-
98
- # Prepare detailed fit information
99
- fit_info = {
100
- "chest": "perfect" if avg_size_index in chest_sizes else "tight" if avg_size_index > max(chest_sizes) else "loose",
101
- "waist": "perfect" if avg_size_index in waist_sizes else "tight" if avg_size_index > max(waist_sizes) else "loose",
102
- "shoulder": "perfect" if avg_size_index in shoulder_sizes else "tight" if avg_size_index > max(shoulder_sizes) else "loose"
103
- }
104
-
105
- return recommended_size, fit_info
106
-
107
- def print_size_recommendation(brand: str, chest: int, waist: int, shoulder: int) -> None:
108
- """
109
- Print a formatted size recommendation.
110
-
111
- Args:
112
- brand (str): Brand name
113
- chest (int): Chest measurement in cm
114
- waist (int): Waist measurement in cm
115
- shoulder (int): Shoulder measurement in cm
116
- """
117
- try:
118
- size, fit_info = get_best_size(brand, chest, waist, shoulder)
119
- print(f"\nSize Recommendation for {brand}:")
120
- print(f"Recommended size: {size}")
121
- print("\nFit Details:")
122
- print(f"Chest: {fit_info['chest']}")
123
- print(f"Waist: {fit_info['waist']}")
124
- print(f"Shoulder: {fit_info['shoulder']}")
125
- except ValueError as e:
126
- print(f"Error: {str(e)}")
127
-
128
- # Example usage
129
- if __name__ == "__main__":
130
- # Example measurements
131
- print_size_recommendation("Zara", 95, 80, 43) # Example measurements