velmurugan1122 commited on
Commit
0ccccb9
·
1 Parent(s): 02fae25

initial commit

Browse files
Dockerfile ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
2
+ # you will also find guides on how best to write your Dockerfile
3
+
4
+ FROM python:3.9
5
+
6
+ RUN useradd -m -u 1000 user
7
+ USER user
8
+ ENV PATH="/home/user/.local/bin:$PATH"
9
+
10
+ WORKDIR /app
11
+
12
+ COPY --chown=user ./requirements.txt requirements.txt
13
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
14
+
15
+ COPY --chown=user . /app
16
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from routes.population_routes import router # Corrected import
3
+
4
+ app = FastAPI()
5
+
6
+ # Include the router from continent_routes.py
7
+ app.include_router(router)
8
+
data/world_population.csv ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Country,Capital,Continent,Population,Area
2
+ China,Beijing,Asia,1425887337,9706961
3
+ India,New Delhi,Asia,1417173173,3287590
4
+ United States,"Washington, D.C.",North America,338289857,9372610
5
+ Indonesia,Jakarta,Asia,275501339,1904569
6
+ Pakistan,Islamabad,Asia,235824862,881912
7
+ Nigeria,Abuja,Africa,218541212,923768
8
+ Brazil,Brasilia,South America,215313498,8515767
9
+ Bangladesh,Dhaka,Asia,171186372,147570
10
+ Russia,Moscow,Europe,144713314,17098242
11
+ Mexico,Mexico City,North America,127504125,1964375
12
+ Japan,Tokyo,Asia,123951692,377930
13
+ Ethiopia,Addis Ababa,Africa,123379924,1104300
14
+ Philippines,Manila,Asia,115559009,342353
15
+ Egypt,Cairo,Africa,110990103,1002450
16
+ DR Congo,Kinshasa,Africa,99010212,2344858
17
+ Vietnam,Hanoi,Asia,98186856,331212
18
+ Iran,Tehran,Asia,88550570,1648195
19
+ Turkey,Ankara,Asia,85341241,783562
20
+ Germany,Berlin,Europe,83369843,357114
21
+ Thailand,Bangkok,Asia,71697030,513120
22
+ United Kingdom,London,Europe,67508936,242900
23
+ Tanzania,Dodoma,Africa,65497748,945087
24
+ France,Paris,Europe,64626628,551695
25
+ South Africa,Pretoria,Africa,59893885,1221037
26
+ Italy,Rome,Europe,59037474,301336
27
+ Myanmar,Nay Pyi Taw,Asia,54179306,676578
28
+ Kenya,Nairobi,Africa,54027487,580367
29
+ Colombia,Bogota,South America,51874024,1141748
30
+ South Korea,Seoul,Asia,51815810,100210
31
+ Spain,Madrid,Europe,47558630,505992
32
+ Uganda,Kampala,Africa,47249585,241550
33
+ Sudan,Khartoum,Africa,46874204,1886068
34
+ Argentina,Buenos Aires,South America,45510318,2780400
35
+ Algeria,Algiers,Africa,44903225,2381741
36
+ Iraq,Baghdad,Asia,44496122,438317
37
+ Afghanistan,Kabul,Asia,41128771,652230
38
+ Poland,Warsaw,Europe,39857145,312679
39
+ Ukraine,Kiev,Europe,39701739,603500
40
+ Canada,Ottawa,North America,38454327,9984670
41
+ Morocco,Rabat,Africa,37457971,446550
42
+ Saudi Arabia,Riyadh,Asia,36408820,2149690
43
+ Angola,Luanda,Africa,35588987,1246700
44
+ Uzbekistan,Tashkent,Asia,34627652,447400
45
+ Peru,Lima,South America,34049588,1285216
46
+ Malaysia,Kuala Lumpur,Asia,33938221,330803
47
+ Yemen,Sanaa,Asia,33696614,527968
48
+ Ghana,Accra,Africa,33475870,238533
49
+ Mozambique,Maputo,Africa,32969517,801590
50
+ Nepal,Kathmandu,Asia,30547580,147181
51
+ Madagascar,Antananarivo,Africa,29611714,587041
52
+ Venezuela,Caracas,South America,28301696,916445
53
+ Ivory Coast,Yamoussoukro,Africa,28160542,322463
54
+ Cameroon,Yaounde,Africa,27914536,475442
55
+ Niger,Niamey,Africa,26207977,1267000
56
+ Australia,Canberra,Oceania,26177413,7692024
57
+ North Korea,Pyongyang,Asia,26069416,120538
58
+ Taiwan,Taipei,Asia,23893394,36193
59
+ Burkina Faso,Ouagadougou,Africa,22673762,272967
60
+ Mali,Bamako,Africa,22593590,1240192
61
+ Syria,Damascus,Asia,22125249,185180
62
+ Sri Lanka,Colombo,Asia,21832143,65610
63
+ Malawi,Lilongwe,Africa,20405317,118484
64
+ Zambia,Lusaka,Africa,20017675,752612
65
+ Romania,Bucharest,Europe,19659267,238391
66
+ Chile,Santiago,South America,19603733,756102
67
+ Kazakhstan,Nursultan,Asia,19397998,2724900
68
+ Ecuador,Quito,South America,18001000,276841
69
+ Guatemala,Guatemala City,North America,17843908,108889
70
+ Chad,N'Djamena,Africa,17723315,1284000
71
+ Somalia,Mogadishu,Africa,17597511,637657
72
+ Netherlands,Amsterdam,Europe,17564014,41850
73
+ Senegal,Dakar,Africa,17316449,196722
74
+ Cambodia,Phnom Penh,Asia,16767842,181035
75
+ Zimbabwe,Harare,Africa,16320537,390757
76
+ Guinea,Conakry,Africa,13859341,245857
77
+ Rwanda,Kigali,Africa,13776698,26338
78
+ Benin,Porto-Novo,Africa,13352864,112622
79
+ Burundi,Bujumbura,Africa,12889576,27834
80
+ Tunisia,Tunis,Africa,12356117,163610
81
+ Bolivia,Sucre,South America,12224110,1098581
82
+ Belgium,Brussels,Europe,11655930,30528
83
+ Haiti,Port-au-Prince,North America,11584996,27750
84
+ Jordan,Amman,Asia,11285869,89342
85
+ Dominican Republic,Santo Domingo,North America,11228821,48671
86
+ Cuba,Havana,North America,11212191,109884
87
+ South Sudan,Juba,Africa,10913164,619745
88
+ Sweden,Stockholm,Europe,10549347,450295
89
+ Czech Republic,Prague,Europe,10493986,78865
90
+ Honduras,Tegucigalpa,North America,10432860,112492
91
+ Greece,Athens,Europe,10384971,131990
92
+ Azerbaijan,Baku,Asia,10358074,86600
93
+ Portugal,Lisbon,Europe,10270865,92090
94
+ Papua New Guinea,Port Moresby,Oceania,10142619,462840
95
+ Hungary,Budapest,Europe,9967308,93028
96
+ Tajikistan,Dushanbe,Asia,9952787,143100
97
+ Belarus,Minsk,Europe,9534954,207600
98
+ United Arab Emirates,Abu Dhabi,Asia,9441129,83600
99
+ Israel,Jerusalem,Asia,9038309,20770
100
+ Austria,Vienna,Europe,8939617,83871
101
+ Togo,Lomé,Africa,8848699,56785
102
+ Switzerland,Bern,Europe,8740472,41284
103
+ Sierra Leone,Freetown,Africa,8605718,71740
104
+ Laos,Vientiane,Asia,7529475,236800
105
+ Hong Kong,Hong Kong,Asia,7488865,1104
106
+ Serbia,Belgrade,Europe,7221365,88361
107
+ Nicaragua,Managua,North America,6948392,130373
108
+ Libya,Tripoli,Africa,6812341,1759540
109
+ Bulgaria,Sofia,Europe,6781953,110879
110
+ Paraguay,Asunción,South America,6780744,406752
111
+ Kyrgyzstan,Bishkek,Asia,6630623,199951
112
+ Turkmenistan,Ashgabat,Asia,6430770,488100
113
+ El Salvador,San Salvador,North America,6336392,21041
114
+ Singapore,Singapore,Asia,5975689,710
115
+ Republic of the Congo,Brazzaville,Africa,5970424,342000
116
+ Denmark,Copenhagen,Europe,5882261,43094
117
+ Slovakia,Bratislava,Europe,5643453,49037
118
+ Central African Republic,Bangui,Africa,5579144,622984
119
+ Finland,Helsinki,Europe,5540745,338424
120
+ Lebanon,Beirut,Asia,5489739,10452
121
+ Norway,Oslo,Europe,5434319,323802
122
+ Liberia,Monrovia,Africa,5302681,111369
123
+ Palestine,Ramallah,Asia,5250072,6220
124
+ New Zealand,Wellington,Oceania,5185288,270467
125
+ Costa Rica,San José,North America,5180829,51100
126
+ Ireland,Dublin,Europe,5023109,70273
127
+ Mauritania,Nouakchott,Africa,4736139,1030700
128
+ Oman,Muscat,Asia,4576298,309500
129
+ Panama,Panama City,North America,4408581,75417
130
+ Kuwait,Kuwait City,Asia,4268873,17818
131
+ Croatia,Zagreb,Europe,4030358,56594
132
+ Georgia,Tbilisi,Asia,3744385,69700
133
+ Eritrea,Asmara,Africa,3684032,117600
134
+ Uruguay,Montevideo,South America,3422794,181034
135
+ Mongolia,Ulaanbaatar,Asia,3398366,1564110
136
+ Moldova,Chisinau,Europe,3272996,33846
137
+ Puerto Rico,San Juan,North America,3252407,8870
138
+ Bosnia and Herzegovina,Sarajevo,Europe,3233526,51209
139
+ Albania,Tirana,Europe,2842321,28748
140
+ Jamaica,Kingston,North America,2827377,10991
141
+ Armenia,Yerevan,Asia,2780469,29743
142
+ Lithuania,Vilnius,Europe,2750055,65300
143
+ Gambia,Banjul,Africa,2705992,10689
144
+ Qatar,Doha,Asia,2695122,11586
145
+ Botswana,Gaborone,Africa,2630296,582000
146
+ Namibia,Windhoek,Africa,2567012,825615
147
+ Gabon,Libreville,Africa,2388992,267668
148
+ Lesotho,Maseru,Africa,2305825,30355
149
+ Slovenia,Ljubljana,Europe,2119844,20273
150
+ Guinea-Bissau,Bissau,Africa,2105566,36125
151
+ North Macedonia,Skopje,Europe,2093599,25713
152
+ Latvia,Riga,Europe,1850651,64559
153
+ Equatorial Guinea,Malabo,Africa,1674908,28051
154
+ Trinidad and Tobago,Port-of-Spain,North America,1531044,5130
155
+ Bahrain,Manama,Asia,1472233,765
156
+ Timor-Leste,Dili,Asia,1341296,14874
157
+ Estonia,Tallinn,Europe,1326062,45227
158
+ Mauritius,Port Louis,Africa,1299469,2040
159
+ Cyprus,Nicosia,Europe,1251488,9251
160
+ Eswatini,Mbabane,Africa,1201670,17364
161
+ Djibouti,Djibouti,Africa,1120849,23200
162
+ Reunion,Saint-Denis,Africa,974052,2511
163
+ Fiji,Suva,Oceania,929766,18272
164
+ Comoros,Moroni,Africa,836774,1862
165
+ Guyana,Georgetown,South America,808726,214969
166
+ Bhutan,Thimphu,Asia,782455,38394
167
+ Solomon Islands,Honiara,Oceania,724273,28896
168
+ Macau,Concelho de Macau,Asia,695168,30
169
+ Luxembourg,Luxembourg,Europe,647599,2586
170
+ Montenegro,Podgorica,Europe,627082,13812
171
+ Suriname,Paramaribo,South America,618040,163820
172
+ Cape Verde,Praia,Africa,593149,4033
173
+ Western Sahara,El Aaiún,Africa,575986,266000
174
+ Malta,Valletta,Europe,533286,316
175
+ Maldives,Malé,Asia,523787,300
176
+ Brunei,Bandar Seri Begawan,Asia,449002,5765
177
+ Bahamas,Nassau,North America,409984,13943
178
+ Belize,Belmopan,North America,405272,22966
179
+ Guadeloupe,Basse-Terre,North America,395752,1628
180
+ Iceland,Reykjavík,Europe,372899,103000
181
+ Martinique,Fort-de-France,North America,367507,1128
182
+ Vanuatu,Port-Vila,Oceania,326740,12189
183
+ Mayotte,Mamoudzou,Africa,326101,374
184
+ French Polynesia,Papeete,Oceania,306279,4167
185
+ French Guiana,Cayenne,South America,304557,83534
186
+ New Caledonia,Nouméa,Oceania,289950,18575
187
+ Barbados,Bridgetown,North America,281635,430
188
+ Sao Tome and Principe,São Tomé,Africa,227380,964
189
+ Samoa,Apia,Oceania,222382,2842
190
+ Curacao,Willemstad,North America,191163,444
191
+ Saint Lucia,Castries,North America,179857,616
192
+ Guam,Hagåtña,Oceania,171774,549
193
+ Kiribati,Tarawa,Oceania,131232,811
194
+ Grenada,Saint George's,North America,125438,344
195
+ Micronesia,Palikir,Oceania,114164,702
196
+ Jersey,Saint Helier,Europe,110778,116
197
+ Seychelles,Victoria,Africa,107118,452
198
+ Tonga,Nuku‘alofa,Oceania,106858,747
199
+ Aruba,Oranjestad,North America,106445,180
200
+ Saint Vincent and the Grenadines,Kingstown,North America,103948,389
201
+ United States Virgin Islands,Charlotte Amalie,North America,99465,347
202
+ Antigua and Barbuda,Saint John’s,North America,93763,442
203
+ Isle of Man,Douglas,Europe,84519,572
204
+ Andorra,Andorra la Vella,Europe,79824,468
205
+ Dominica,Roseau,North America,72737,751
206
+ Cayman Islands,George Town,North America,68706,264
207
+ Bermuda,Hamilton,North America,64184,54
208
+ Guernsey,Saint Peter Port,Europe,63301,78
209
+ Greenland,Nuuk,North America,56466,2166086
210
+ Faroe Islands,Tórshavn,Europe,53090,1393
211
+ Northern Mariana Islands,Saipan,Oceania,49551,464
212
+ Saint Kitts and Nevis,Basseterre,North America,47657,261
213
+ Turks and Caicos Islands,Cockburn Town,North America,45703,948
214
+ American Samoa,Pago Pago,Oceania,44273,199
215
+ Sint Maarten,Philipsburg,North America,44175,34
216
+ Marshall Islands,Majuro,Oceania,41569,181
217
+ Liechtenstein,Vaduz,Europe,39327,160
218
+ Monaco,Monaco,Europe,36469,2
219
+ San Marino,San Marino,Europe,33660,61
220
+ Gibraltar,Gibraltar,Europe,32649,6
221
+ Saint Martin,Marigot,North America,31791,53
222
+ British Virgin Islands,Road Town,North America,31305,151
223
+ Palau,Ngerulmud,Oceania,18055,459
224
+ Cook Islands,Avarua,Oceania,17011,236
225
+ Anguilla,The Valley,North America,15857,91
226
+ Nauru,Yaren,Oceania,12668,21
227
+ Wallis and Futuna,Mata-Utu,Oceania,11572,142
228
+ Tuvalu,Funafuti,Oceania,11312,26
229
+ Saint Barthelemy,Gustavia,North America,10967,21
230
+ Saint Pierre and Miquelon,Saint-Pierre,North America,5862,242
231
+ Montserrat,Brades,North America,4390,102
232
+ Falkland Islands,Stanley,South America,3780,12173
233
+ Niue,Alofi,Oceania,1934,260
234
+ Tokelau,Nukunonu,Oceania,1871,12
235
+ Vatican City,Vatican City,Europe,510,1
database/__pycache__/continent.cpython-313.pyc ADDED
Binary file (381 Bytes). View file
 
database/continent.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+
3
+
4
+
5
+ # def read_country_data(file_path: str):
6
+ # return pd.read_csv(file_path)
7
+
8
+ path_world = "c:/Users/velu/Downloads/world_population.csv"
9
+
10
+ def read_country_data(path_world):
11
+ # Read the CSV file into a DataFrame
12
+ df = pd.read_csv(path_world)
13
+ return df
logs/__pycache__/logging_config.cpython-313.pyc ADDED
Binary file (776 Bytes). View file
 
logs/app.log ADDED
The diff for this file is too large to render. See raw diff
 
logs/logging_config.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ def setup_logger():
4
+ logging.basicConfig(filename="logs/app.log",
5
+ level=logging.INFO,
6
+ format="%(asctime)s - %(levelname)s - %(message)s")
7
+ return logging.getLogger(__name__)
models/__pycache__/continent.cpython-313.pyc ADDED
Binary file (394 Bytes). View file
 
models/__pycache__/validation_population.cpython-313.pyc ADDED
Binary file (725 Bytes). View file
 
models/continent.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ import pandas as pd
2
+
3
+ def read_country_data(path_world):
4
+ """Reads CSV data into a Pandas DataFrame"""
5
+ return pd.read_csv(path_world)
models/validation_population.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+ class ContinentPopulationStats(BaseModel):
4
+ continent: str
5
+ max_population: int
6
+ min_population: int
7
+ avg_population: float
8
+ max_population_country: str
9
+ min_population_country: str
10
+ avg_population_country: str
11
+
12
+
13
+ # import os
14
+ # import sys
15
+
16
+ # src_directory = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..","population"))
17
+ # sys.path.append(src_directory)
18
+ # from streamlit_app.app import hell
19
+
20
+
21
+ # print(hell())
requirements.txt ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ annotated-types==0.7.0
2
+ anyio==4.8.0
3
+ certifi==2024.12.14
4
+ click==8.1.8
5
+ colorama==0.4.6
6
+ dnspython==2.7.0
7
+ email_validator==2.2.0
8
+ fastapi==0.115.6
9
+ fastapi-cli==0.0.7
10
+ h11==0.14.0
11
+ httpcore==1.0.7
12
+ httptools==0.6.4
13
+ httpx==0.28.1
14
+ idna==3.10
15
+ Jinja2==3.1.5
16
+ markdown-it-py==3.0.0
17
+ MarkupSafe==3.0.2
18
+ mdurl==0.1.2
19
+ numpy==2.2.2
20
+ pandas==2.2.3
21
+ pydantic==2.10.5
22
+ pydantic_core==2.27.2
23
+ Pygments==2.19.1
24
+ python-dateutil==2.9.0.post0
25
+ python-dotenv==1.0.1
26
+ python-multipart==0.0.20
27
+ pytz==2024.2
28
+ PyYAML==6.0.2
29
+ rich==13.9.4
30
+ rich-toolkit==0.13.2
31
+ shellingham==1.5.4
32
+ six==1.17.0
33
+ sniffio==1.3.1
34
+ starlette==0.41.3
35
+ typer==0.15.1
36
+ typing_extensions==4.12.2
37
+ tzdata==2025.1
38
+ uvicorn==0.34.0
39
+ watchfiles==1.0.4
40
+ websockets==14.2
routes/__pycache__/population_routes.cpython-313.pyc ADDED
Binary file (2.91 kB). View file
 
routes/population_routes.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException
2
+ import logging
3
+ import pandas as pd
4
+ from models.continent import read_country_data
5
+ from models.validation_population import ContinentPopulationStats
6
+
7
+ router = APIRouter()
8
+
9
+ logging.basicConfig(filename="logs/app.log", level=logging.INFO)
10
+ logger = logging.getLogger(__name__)
11
+
12
+ DATA_PATH = "data/world_population.csv"
13
+ countries_df = read_country_data(DATA_PATH)
14
+ logger.info("✅ Data loaded successfully from CSV.")
15
+
16
+ def get_continent_countries(continent_name: str):
17
+ filtered_countries = countries_df[countries_df["Continent"].str.lower() == continent_name.lower()]
18
+ if filtered_countries.empty:
19
+ logger.warning(f"⚠️ Continent '{continent_name}' not found.")
20
+ raise HTTPException(status_code=404, detail=f"Continent '{continent_name}' not found.")
21
+ return filtered_countries
22
+
23
+ @router.get("/continent/{continent_name}", response_model=ContinentPopulationStats)
24
+ def get_continent_population_data(continent_name: str):
25
+ try:
26
+ continent_countries = get_continent_countries(continent_name)
27
+
28
+ max_pop_country = continent_countries.loc[continent_countries["Population"].idxmax()]
29
+ min_pop_country = continent_countries.loc[continent_countries["Population"].idxmin()]
30
+ avg_population = continent_countries["Population"].mean()
31
+ avg_pop_country = continent_countries.iloc[(continent_countries["Population"] - avg_population).abs().idxmin()]
32
+
33
+ return {
34
+ "continent": continent_name,
35
+ "max_population": int(max_pop_country["Population"]),
36
+ "min_population": int(min_pop_country["Population"]),
37
+ "avg_population": round(avg_population, 2),
38
+ "max_population_country": max_pop_country["Country"],
39
+ "min_population_country": min_pop_country["Country"],
40
+ "avg_population_country": avg_pop_country["Country"]
41
+ }
42
+ except Exception as e:
43
+ logger.error(f"❌ Error: {str(e)}")
44
+ raise HTTPException(status_code=500, detail="Internal Server Error")