Kabila22 commited on
Commit
feedc0f
·
1 Parent(s): 0c1c7f6

Second commit

Browse files
.DS_Store ADDED
Binary file (6.15 kB). View file
 
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"]
__init__.py ADDED
File without changes
__pycache__/__init__.cpython-313.pyc ADDED
Binary file (124 Bytes). View file
 
__pycache__/main.cpython-313.pyc ADDED
Binary file (683 Bytes). View file
 
api/__pycache__/routes.cpython-313.pyc ADDED
Binary file (644 Bytes). View file
 
api/routes.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ from new.services.population import get_continent_population
3
+ from new.models.schemas import ContinentPopulationResponse
4
+
5
+ router = APIRouter()
6
+
7
+ @router.get("/continent/{continent_name}", response_model=ContinentPopulationResponse)
8
+ def continent_population(continent_name: str):
9
+ return get_continent_population(continent_name)
app.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from new.api.routes import router
3
+ from new.utils.logger import logger
4
+ import new
5
+
6
+ app = FastAPI()
7
+
8
+ # Include routes
9
+ app.include_router(router)
10
+
11
+ @app.get("/")
12
+ def home():
13
+ logger.info("Accessed home endpoint.")
14
+ return {"message": "Welcome to the World Population API"}
logs/app.log ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ # Path to the logs directory
4
+ log_dir = "logs"
5
+ os.makedirs(log_dir, exist_ok=True) # Create the folder if it doesn't exist
6
+ 2025-02-07 21:06:23,364 - ERROR - Error loading CSV: [Errno 2] No such file or directory: 'data/world_population.csv'
7
+ 2025-02-07 21:08:17,879 - INFO - CSV file loaded successfully.
8
+ 2025-02-07 21:08:17,915 - INFO - Will watch for changes in these directories: ['D:\\pydantic\\new']
9
+ 2025-02-07 21:08:17,920 - INFO - Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
10
+ 2025-02-07 21:08:17,923 - INFO - Started reloader process [25348] using WatchFiles
11
+ 2025-02-07 21:08:21,018 - INFO - CSV file loaded successfully.
12
+ 2025-02-07 21:08:21,030 - INFO - Started server process [37976]
13
+ 2025-02-07 21:08:21,039 - INFO - Waiting for application startup.
14
+ 2025-02-07 21:08:21,043 - INFO - Application startup complete.
15
+ 2025-02-07 21:08:29,496 - INFO - Accessed home endpoint.
16
+ 2025-02-07 21:08:47,547 - INFO - Fetching data for continent: Asia
17
+ 2025-02-07 21:09:22,367 - INFO - Accessed home endpoint.
18
+ 2025-02-07 21:09:49,382 - INFO - 1 change detected
19
+ 2025-02-07 21:09:49,760 - INFO - 1 change detected
20
+ 2025-02-07 21:10:17,752 - INFO - Shutting down
21
+ 2025-02-07 21:10:17,860 - INFO - Waiting for application shutdown.
22
+ 2025-02-07 21:10:17,863 - INFO - Application shutdown complete.
23
+ 2025-02-07 21:10:17,865 - INFO - Finished server process [37976]
24
+ 2025-02-07 21:10:18,297 - INFO - Stopping reloader process [25348]
25
+ 2025-02-07 21:10:24,405 - INFO - CSV file loaded successfully.
26
+ 2025-02-07 21:10:24,442 - INFO - Will watch for changes in these directories: ['D:\\pydantic\\new']
27
+ 2025-02-07 21:10:24,445 - INFO - Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
28
+ 2025-02-07 21:10:24,448 - INFO - Started reloader process [27472] using WatchFiles
29
+ 2025-02-07 21:10:27,357 - INFO - CSV file loaded successfully.
30
+ 2025-02-07 21:10:27,362 - INFO - Started server process [48848]
31
+ 2025-02-07 21:10:27,370 - INFO - Waiting for application startup.
32
+ 2025-02-07 21:10:27,373 - INFO - Application startup complete.
33
+ 2025-02-07 21:32:06,543 - INFO - 1 change detected
34
+ 2025-02-07 21:32:06,638 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
35
+ 2025-02-07 21:32:06,877 - INFO - Shutting down
36
+ 2025-02-07 21:32:07,124 - INFO - Waiting for application shutdown.
37
+ 2025-02-07 21:32:07,213 - INFO - Application shutdown complete.
38
+ 2025-02-07 21:32:07,233 - INFO - Finished server process [48848]
39
+ 2025-02-07 21:32:08,725 - INFO - 1 change detected
40
+ 2025-02-07 21:32:09,087 - INFO - 1 change detected
41
+ 2025-02-07 21:32:09,092 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
42
+ 2025-02-07 21:32:13,038 - INFO - 1 change detected
43
+ 2025-02-07 21:32:13,040 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
44
+ 2025-02-07 21:32:14,210 - INFO - 1 change detected
45
+ 2025-02-07 21:32:16,888 - INFO - 1 change detected
46
+ 2025-02-07 21:32:17,252 - INFO - 1 change detected
47
+ 2025-02-07 21:32:22,092 - INFO - 1 change detected
48
+ 2025-02-07 21:32:22,094 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
49
+ 2025-02-07 21:32:25,459 - INFO - 1 change detected
50
+ 2025-02-07 21:32:25,816 - INFO - 1 change detected
51
+ 2025-02-07 21:32:33,449 - INFO - 1 change detected
52
+ 2025-02-07 21:32:33,450 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
53
+ 2025-02-07 21:32:36,354 - INFO - 1 change detected
54
+ 2025-02-07 21:32:36,355 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
55
+ 2025-02-07 21:32:37,490 - INFO - 6 changes detected
56
+ 2025-02-07 21:32:40,131 - INFO - 1 change detected
57
+ 2025-02-07 21:32:40,494 - INFO - 1 change detected
58
+ 2025-02-07 21:32:48,156 - INFO - 1 change detected
59
+ 2025-02-07 21:32:48,157 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
60
+ 2025-02-07 21:32:51,401 - INFO - 6 changes detected
61
+ 2025-02-07 21:32:51,769 - INFO - 1 change detected
62
+ 2025-02-07 21:32:57,409 - INFO - 1 change detected
63
+ 2025-02-07 21:32:57,410 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
64
+ 2025-02-07 21:33:01,058 - INFO - 6 changes detected
65
+ 2025-02-07 21:33:01,729 - INFO - 1 change detected
66
+ 2025-02-07 21:33:01,730 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
67
+ 2025-02-07 21:33:04,819 - INFO - 6 changes detected
68
+ 2025-02-07 21:33:05,178 - INFO - 1 change detected
69
+ 2025-02-07 21:33:21,444 - INFO - 1 change detected
70
+ 2025-02-07 21:33:21,445 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
71
+ 2025-02-07 21:33:24,947 - INFO - 1 change detected
72
+ 2025-02-07 21:33:25,308 - INFO - 1 change detected
73
+ 2025-02-07 21:33:26,223 - INFO - 1 change detected
74
+ 2025-02-07 21:33:26,225 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
75
+ 2025-02-07 21:33:29,368 - INFO - 6 changes detected
76
+ 2025-02-07 21:33:29,728 - INFO - 1 change detected
77
+ 2025-02-07 21:33:30,186 - INFO - 1 change detected
78
+ 2025-02-07 21:33:30,187 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
79
+ 2025-02-07 21:33:33,481 - INFO - 6 changes detected
80
+ 2025-02-07 21:33:33,843 - INFO - 1 change detected
81
+ 2025-02-07 21:33:37,029 - INFO - 1 change detected
82
+ 2025-02-07 21:33:37,030 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
83
+ 2025-02-07 21:33:40,443 - INFO - 6 changes detected
84
+ 2025-02-07 21:33:40,808 - INFO - 2 changes detected
85
+ 2025-02-07 21:33:40,809 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
86
+ 2025-02-07 21:33:43,045 - INFO - 1 change detected
87
+ 2025-02-07 21:33:43,046 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
88
+ 2025-02-07 21:33:44,598 - INFO - 6 changes detected
89
+ 2025-02-07 21:33:47,321 - INFO - 1 change detected
90
+ 2025-02-07 21:33:47,674 - INFO - 1 change detected
91
+ 2025-02-07 21:33:48,889 - INFO - 1 change detected
92
+ 2025-02-07 21:33:48,891 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
93
+ 2025-02-07 21:33:52,077 - INFO - 6 changes detected
94
+ 2025-02-07 21:33:52,436 - INFO - 1 change detected
95
+ 2025-02-07 21:33:53,501 - INFO - 1 change detected
96
+ 2025-02-07 21:33:53,507 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
97
+ 2025-02-07 21:33:55,948 - INFO - 1 change detected
98
+ 2025-02-07 21:33:55,949 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
99
+ 2025-02-07 21:33:57,621 - INFO - 6 changes detected
100
+ 2025-02-07 21:34:00,549 - INFO - 1 change detected
101
+ 2025-02-07 21:34:00,902 - INFO - 1 change detected
102
+ 2025-02-07 21:34:02,922 - INFO - 1 change detected
103
+ 2025-02-07 21:34:02,923 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
104
+ 2025-02-07 21:34:04,856 - INFO - 1 change detected
105
+ 2025-02-07 21:34:04,857 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
106
+ 2025-02-07 21:34:07,170 - INFO - 6 changes detected
107
+ 2025-02-07 21:34:09,944 - INFO - 1 change detected
108
+ 2025-02-07 21:34:10,299 - INFO - 1 change detected
109
+ 2025-02-07 21:34:14,248 - INFO - 1 change detected
110
+ 2025-02-07 21:34:14,249 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
111
+ 2025-02-07 21:34:17,595 - INFO - 6 changes detected
112
+ 2025-02-07 21:34:17,958 - INFO - 1 change detected
113
+ 2025-02-07 21:35:16,320 - INFO - 1 change detected
114
+ 2025-02-07 21:35:16,321 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
115
+ 2025-02-07 21:35:20,069 - INFO - 6 changes detected
116
+ 2025-02-07 21:35:20,428 - INFO - 1 change detected
117
+ 2025-02-07 21:45:10,763 - INFO - CSV file loaded successfully.
118
+ 2025-02-07 21:45:10,798 - INFO - Will watch for changes in these directories: ['D:\\pydantic\\new']
119
+ 2025-02-07 21:45:10,801 - INFO - Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
120
+ 2025-02-07 21:45:10,806 - INFO - Started reloader process [22468] using WatchFiles
121
+ 2025-02-07 21:45:13,898 - INFO - CSV file loaded successfully.
122
+ 2025-02-07 21:45:13,907 - INFO - Started server process [44660]
123
+ 2025-02-07 21:45:13,914 - INFO - Waiting for application startup.
124
+ 2025-02-07 21:45:13,923 - INFO - Application startup complete.
125
+ 2025-02-07 21:45:19,352 - INFO - Accessed home endpoint.
126
+ 2025-02-07 22:41:40,339 - INFO - 1 change detected
127
+ 2025-02-07 22:41:40,416 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
128
+ 2025-02-07 22:41:40,634 - INFO - Shutting down
129
+ 2025-02-07 22:41:40,798 - INFO - Waiting for application shutdown.
130
+ 2025-02-07 22:41:40,814 - INFO - Application shutdown complete.
131
+ 2025-02-07 22:41:40,822 - INFO - Finished server process [44660]
132
+ 2025-02-07 22:41:42,236 - INFO - 2 changes detected
133
+ 2025-02-07 22:41:42,239 - WARNING - WatchFiles detected changes in 'models\schemas.py'. Reloading...
134
+ 2025-02-07 22:41:47,204 - INFO - CSV file loaded successfully.
135
+ 2025-02-07 22:41:47,214 - INFO - Started server process [36856]
136
+ 2025-02-07 22:41:47,222 - INFO - Waiting for application startup.
137
+ 2025-02-07 22:41:47,229 - INFO - Application startup complete.
138
+ 2025-02-07 22:41:47,251 - INFO - 5 changes detected
139
+ 2025-02-07 22:49:17,706 - INFO - Shutting down
140
+ 2025-02-07 22:49:17,861 - INFO - Waiting for application shutdown.
141
+ 2025-02-07 22:49:17,872 - INFO - Application shutdown complete.
142
+ 2025-02-07 22:49:17,877 - INFO - Finished server process [36856]
143
+ 2025-02-07 22:49:18,562 - INFO - Stopping reloader process [22468]
144
+ 2025-02-07 22:58:26,778 - INFO - CSV file loaded successfully.
145
+ 2025-02-07 22:58:26,816 - INFO - Will watch for changes in these directories: ['D:\\pydantic\\new']
146
+ 2025-02-07 22:58:26,820 - INFO - Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
147
+ 2025-02-07 22:58:26,823 - INFO - Started reloader process [46736] using WatchFiles
148
+ 2025-02-07 22:58:29,766 - INFO - CSV file loaded successfully.
149
+ 2025-02-07 22:58:29,772 - INFO - Started server process [22336]
150
+ 2025-02-07 22:58:29,780 - INFO - Waiting for application startup.
151
+ 2025-02-07 22:58:29,790 - INFO - Application startup complete.
152
+ 2025-02-07 22:58:51,417 - INFO - Accessed home endpoint.
153
+ 2025-02-07 23:03:00,949 - INFO - Shutting down
154
+ 2025-02-07 23:03:01,074 - INFO - Waiting for application shutdown.
155
+ 2025-02-07 23:03:01,079 - INFO - Application shutdown complete.
156
+ 2025-02-07 23:03:01,083 - INFO - Finished server process [22336]
157
+ 2025-02-07 23:03:01,743 - INFO - Stopping reloader process [46736]
models/__pycache__/schemas.cpython-313.pyc ADDED
Binary file (1.71 kB). View file
 
models/schemas.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel, Field
2
+
3
+ class CountryPopulation(BaseModel):
4
+ country: str
5
+ population: int
6
+
7
+ class ContinentPopulationResponse(BaseModel):
8
+ continent: str = Field(..., description="Name of the continent")
9
+ total_population: int = Field(..., description="Total population of the continent")
10
+ total_area: int = Field(..., description="Total area of the continent")
11
+ continent_population_density: float = Field(..., description="Population density of the continent")
12
+ max_population: CountryPopulation = Field(..., description="Country with the maximum population")
13
+ min_population: CountryPopulation = Field(..., description="Country with the minimum population")
14
+ avg_population: int = Field(..., description="Average population of the continent")
15
+
16
+ # Schema-level configuration
17
+ model_config = {
18
+ "json_schema_extra": {
19
+ "examples": [
20
+ {
21
+ "continent": "Asia",
22
+ "total_population": 4641054775,
23
+ "total_area": 44579000,
24
+ "continent_population_density": 104.1,
25
+ "max_population": {"country": "China", "population": 1411778724},
26
+ "min_population": {"country": "Maldives", "population": 521874},
27
+ "avg_population": 92821192
28
+ }
29
+ ]
30
+ }
31
+ }
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ fastapi[standard]
2
+ pandas
3
+ uvicorn
4
+ pydantic
services/__pycache__/population.cpython-313.pyc ADDED
Binary file (3.41 kB). View file
 
services/population.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+
4
+ src_directory=os.path.abspath(os.path.join(os.path.dirname(__file__),"../..","pydantic"))
5
+ sys.path.append(src_directory)
6
+
7
+
8
+
9
+ import pandas as pd
10
+ from utils.logger import logger
11
+ from fastapi import HTTPException
12
+ from models.schemas import ContinentPopulationResponse, CountryPopulation
13
+
14
+ file_path = "world_population.csv"
15
+
16
+ # Load the CSV file
17
+ try:
18
+ countries_df = pd.read_csv(file_path)
19
+ countries_df["Population"] = pd.to_numeric(countries_df["Population"], errors="coerce")
20
+ countries_df["Area"] = pd.to_numeric(countries_df["Area"], errors="coerce")
21
+ logger.info("CSV file loaded successfully.")
22
+ except Exception as e:
23
+ logger.error(f"Error loading CSV: {e}")
24
+ raise RuntimeError("Failed to load CSV file.")
25
+
26
+ def get_continent_population(continent_name: str) -> ContinentPopulationResponse:
27
+ try:
28
+ logger.info(f"Fetching data for continent: {continent_name}")
29
+ continent_group = countries_df[countries_df["Continent"] == continent_name].dropna(subset=["Population", "Area"])
30
+
31
+ if continent_group.empty:
32
+ raise HTTPException(status_code=404, detail="Continent not found.")
33
+
34
+ total_population = int(continent_group["Population"].sum())
35
+ total_area = int(continent_group["Area"].sum())
36
+ if total_area == 0:
37
+ raise HTTPException(status_code=400, detail="Total area is zero.")
38
+
39
+ max_row = continent_group.loc[continent_group["Population"].idxmax()]
40
+ min_row = continent_group.loc[continent_group["Population"].idxmin()]
41
+ avg_population = int(continent_group["Population"].mean())
42
+
43
+ return ContinentPopulationResponse(
44
+ continent=continent_name,
45
+ total_population=total_population,
46
+ total_area=total_area,
47
+ continent_population_density=total_population / total_area,
48
+ max_population=CountryPopulation(
49
+ country=max_row["Country"], population=int(max_row["Population"])
50
+ ),
51
+ min_population=CountryPopulation(
52
+ country=min_row["Country"], population=int(min_row["Population"])
53
+ ),
54
+ avg_population=avg_population
55
+ )
56
+ except HTTPException as http_err:
57
+ logger.error(f"HTTP exception: {http_err.detail}")
58
+ raise http_err
59
+ except Exception as e:
60
+ logger.error(f"Unexpected error: {e}")
61
+ raise HTTPException(status_code=500, detail="Internal server error.")
utils/__pycache__/logger.cpython-313.pyc ADDED
Binary file (680 Bytes). View file
 
utils/logger.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import os
3
+
4
+ # Ensure the 'logs' directory exists
5
+ log_dir = "logs"
6
+ log_file=f"{log_dir}/app.log"
7
+ os.makedirs(log_dir, exist_ok=True)
8
+
9
+ # Configure logging
10
+ logging.basicConfig(
11
+ level=logging.INFO,
12
+ format="%(asctime)s - %(levelname)s - %(message)s",
13
+ handlers=[
14
+ logging.FileHandler(f"{log_dir}/app.log"), # Save logs in 'logs/app.log'
15
+ logging.StreamHandler(), # Also print logs to console
16
+ ],
17
+ )
18
+ logger = logging.getLogger(__name__)
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