Browse Source

Remove world map too. Fixes #225

pull/242/head
Florian Mounier 10 years ago
parent
commit
86bc6e7c51
  1. 1
      CHANGELOG
  2. 13
      demo/moulinrouge/tests.py
  3. 1
      pygal/__init__.py
  4. 2410
      pygal/graph/maps/worldmap.svg
  5. 69
      pygal/graph/worldmap.py
  6. 260
      pygal/i18n.py
  7. 1
      pygal/test/__init__.py
  8. 4
      pygal/test/test_config.py
  9. 1
      pygal/test/test_graph.py
  10. 87
      pygal/test/test_map.py

1
CHANGELOG

@ -9,6 +9,7 @@ V 2.0.0 UNRELEASED
Support value formatter for pie graphs (#218) (thanks never-eat-yellow-snow) Support value formatter for pie graphs (#218) (thanks never-eat-yellow-snow)
Add new Box plot modes and outliers and set extremes as default (#226 #121 #149) (thanks djezar) Add new Box plot modes and outliers and set extremes as default (#226 #121 #149) (thanks djezar)
Add secondary_range option to set range for secondary values. (#203) Add secondary_range option to set range for secondary values. (#203)
Maps are now plugins, they are removed from pygal core and moved to packages (pygal_maps_world, pygal_maps_fr, pygal_maps_ch, ...) (#225)
V 1.7.0 V 1.7.0
Remove DateY and replace it by real XY datetime, date, time and timedelta support. (#188) Remove DateY and replace it by real XY datetime, date, time and timedelta support. (#188)

13
demo/moulinrouge/tests.py

@ -2,9 +2,14 @@
# This file is part of pygal # This file is part of pygal
from pygal import ( from pygal import (
Bar, Gauge, Pyramid, Funnel, Dot, StackedBar, StackedLine, XY, Bar, Gauge, Pyramid, Funnel, Dot, StackedBar, StackedLine, XY,
CHARTS_BY_NAME, Config, Line, Worldmap, Histogram, Box, CHARTS_BY_NAME, Config, Line, Histogram, Box,
Pie, Treemap, TimeLine, DateLine, Pie, Treemap, TimeLine, DateLine,
DateTimeLine, SupranationalWorldmap) DateTimeLine)
try:
from pygal.maps import world
except ImportError:
world = None
try: try:
from pygal.maps import fr from pygal.maps import fr
@ -413,7 +418,7 @@ def get_test_routes(app):
@app.route('/test/worldmap') @app.route('/test/worldmap')
def test_worldmap(): def test_worldmap():
wmap = Worldmap(style=choice(list(styles.values()))) wmap = world.World(style=choice(list(styles.values())))
wmap.add('1st', [('fr', 100), ('us', 10)]) wmap.add('1st', [('fr', 100), ('us', 10)])
wmap.add('2nd', [('jp', 1), ('ru', 7), ('uk', 0)]) wmap.add('2nd', [('jp', 1), ('ru', 7), ('uk', 0)])
@ -437,7 +442,7 @@ def get_test_routes(app):
@app.route('/test/supranational') @app.route('/test/supranational')
def test_supranational(): def test_supranational():
wmap = SupranationalWorldmap(style=choice(list(styles.values()))) wmap = world.SupranationalWorld(style=choice(list(styles.values())))
wmap.add('Asia', [('asia', 1)]) wmap.add('Asia', [('asia', 1)])
wmap.add('Europe', [('europe', 1)]) wmap.add('Europe', [('europe', 1)])

1
pygal/__init__.py

@ -40,7 +40,6 @@ from pygal.graph.stackedline import StackedLine
from pygal.graph.time import DateLine, DateTimeLine, TimeLine, TimeDeltaLine from pygal.graph.time import DateLine, DateTimeLine, TimeLine, TimeDeltaLine
from pygal.graph.treemap import Treemap from pygal.graph.treemap import Treemap
from pygal.graph.verticalpyramid import VerticalPyramid from pygal.graph.verticalpyramid import VerticalPyramid
from pygal.graph.worldmap import Worldmap, SupranationalWorldmap
from pygal.graph.xy import XY from pygal.graph.xy import XY
from pygal.graph.graph import Graph from pygal.graph.graph import Graph
from pygal.config import Config from pygal.config import Config

2410
pygal/graph/maps/worldmap.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 760 KiB

69
pygal/graph/worldmap.py

@ -1,69 +0,0 @@
# -*- coding: utf-8 -*-
# This file is part of pygal
#
# A python svg graph plotting library
# Copyright © 2012-2014 Kozea
#
# This library is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# This library is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with pygal. If not, see <http://www.gnu.org/licenses/>.
"""
Worldmap chart
"""
from __future__ import division
from pygal.util import cached_property
from pygal.graph.map import BaseMap
from pygal.i18n import COUNTRIES, SUPRANATIONAL
import os
with open(os.path.join(
os.path.dirname(__file__), 'maps',
'worldmap.svg')) as file:
WORLD_MAP = file.read()
class Worldmap(BaseMap):
"""Worldmap graph"""
x_labels = list(COUNTRIES.keys())
area_names = COUNTRIES
area_prefix = ''
svg_map = WORLD_MAP
kind = 'country'
@cached_property
def countries(self):
return [val[0]
for serie in self.all_series
for val in serie.values
if val[0] is not None]
@cached_property
def _values(self):
"""Getter for series values (flattened)"""
return [val[1]
for serie in self.series
for val in serie.values
if val[1] is not None]
class SupranationalWorldmap(Worldmap):
"""SupranationalWorldmap graph"""
x_labels = list(SUPRANATIONAL.keys())
def enumerate_values(self, serie):
"""Replaces the values if it contains a supranational code."""
for i, (code, value) in enumerate(serie.values):
for subcode in SUPRANATIONAL.get(code, []):
yield i, (subcode, value)

260
pygal/i18n.py

@ -1,260 +0,0 @@
COUNTRIES = {
'ad': 'Andorra',
'ae': 'United Arab Emirates',
'af': 'Afghanistan',
'al': 'Albania',
'am': 'Armenia',
'ao': 'Angola',
'aq': 'Antarctica',
'ar': 'Argentina',
'at': 'Austria',
'au': 'Australia',
'az': 'Azerbaijan',
'ba': 'Bosnia and Herzegovina',
'bd': 'Bangladesh',
'be': 'Belgium',
'bf': 'Burkina Faso',
'bg': 'Bulgaria',
'bh': 'Bahrain',
'bi': 'Burundi',
'bj': 'Benin',
'bn': 'Brunei Darussalam',
'bo': 'Bolivia, Plurinational State of',
'br': 'Brazil',
'bt': 'Bhutan',
'bw': 'Botswana',
'by': 'Belarus',
'bz': 'Belize',
'ca': 'Canada',
'cd': 'Congo, the Democratic Republic of the',
'cf': 'Central African Republic',
'cg': 'Congo',
'ch': 'Switzerland',
'ci': "Cote d'Ivoire",
'cl': 'Chile',
'cm': 'Cameroon',
'cn': 'China',
'co': 'Colombia',
'cr': 'Costa Rica',
'cu': 'Cuba',
'cv': 'Cape Verde',
'cy': 'Cyprus',
'cz': 'Czech Republic',
'de': 'Germany',
'dj': 'Djibouti',
'dk': 'Denmark',
'do': 'Dominican Republic',
'dz': 'Algeria',
'ec': 'Ecuador',
'ee': 'Estonia',
'eg': 'Egypt',
'eh': 'Western Sahara',
'er': 'Eritrea',
'es': 'Spain',
'et': 'Ethiopia',
'fi': 'Finland',
'fr': 'France',
'ga': 'Gabon',
'gb': 'United Kingdom',
'ge': 'Georgia',
'gf': 'French Guiana',
'gh': 'Ghana',
'gl': 'Greenland',
'gm': 'Gambia',
'gn': 'Guinea',
'gq': 'Equatorial Guinea',
'gr': 'Greece',
'gt': 'Guatemala',
'gu': 'Guam',
'gw': 'Guinea-Bissau',
'gy': 'Guyana',
'hk': 'Hong Kong',
'hn': 'Honduras',
'hr': 'Croatia',
'ht': 'Haiti',
'hu': 'Hungary',
'id': 'Indonesia',
'ie': 'Ireland',
'il': 'Israel',
'in': 'India',
'iq': 'Iraq',
'ir': 'Iran, Islamic Republic of',
'is': 'Iceland',
'it': 'Italy',
'jm': 'Jamaica',
'jo': 'Jordan',
'jp': 'Japan',
'ke': 'Kenya',
'kg': 'Kyrgyzstan',
'kh': 'Cambodia',
'kp': "Korea, Democratic People's Republic of",
'kr': 'Korea, Republic of',
'kw': 'Kuwait',
'kz': 'Kazakhstan',
'la': "Lao People's Democratic Republic",
'lb': 'Lebanon',
'li': 'Liechtenstein',
'lk': 'Sri Lanka',
'lr': 'Liberia',
'ls': 'Lesotho',
'lt': 'Lithuania',
'lu': 'Luxembourg',
'lv': 'Latvia',
'ly': 'Libyan Arab Jamahiriya',
'ma': 'Morocco',
'mc': 'Monaco',
'md': 'Moldova, Republic of',
'me': 'Montenegro',
'mg': 'Madagascar',
'mk': 'Macedonia, the former Yugoslav Republic of',
'ml': 'Mali',
'mm': 'Myanmar',
'mn': 'Mongolia',
'mo': 'Macao',
'mr': 'Mauritania',
'mt': 'Malta',
'mu': 'Mauritius',
'mv': 'Maldives',
'mw': 'Malawi',
'mx': 'Mexico',
'my': 'Malaysia',
'mz': 'Mozambique',
'na': 'Namibia',
'ne': 'Niger',
'ng': 'Nigeria',
'ni': 'Nicaragua',
'nl': 'Netherlands',
'no': 'Norway',
'np': 'Nepal',
'nz': 'New Zealand',
'om': 'Oman',
'pa': 'Panama',
'pe': 'Peru',
'pg': 'Papua New Guinea',
'ph': 'Philippines',
'pk': 'Pakistan',
'pl': 'Poland',
'pr': 'Puerto Rico',
'ps': 'Palestine, State of',
'pt': 'Portugal',
'py': 'Paraguay',
're': 'Reunion',
'ro': 'Romania',
'rs': 'Serbia',
'ru': 'Russian Federation',
'rw': 'Rwanda',
'sa': 'Saudi Arabia',
'sc': 'Seychelles',
'sd': 'Sudan',
'se': 'Sweden',
'sg': 'Singapore',
'sh': 'Saint Helena, Ascension and Tristan da Cunha',
'si': 'Slovenia',
'sk': 'Slovakia',
'sl': 'Sierra Leone',
'sm': 'San Marino',
'sn': 'Senegal',
'so': 'Somalia',
'sr': 'Suriname',
'st': 'Sao Tome and Principe',
'sv': 'El Salvador',
'sy': 'Syrian Arab Republic',
'sz': 'Swaziland',
'td': 'Chad',
'tg': 'Togo',
'th': 'Thailand',
'tj': 'Tajikistan',
'tl': 'Timor-Leste',
'tm': 'Turkmenistan',
'tn': 'Tunisia',
'tr': 'Turkey',
'tw': 'Taiwan, Province of China',
'tz': 'Tanzania, United Republic of',
'ua': 'Ukraine',
'ug': 'Uganda',
'us': 'United States',
'uy': 'Uruguay',
'uz': 'Uzbekistan',
'va': 'Holy See (Vatican City State)',
've': 'Venezuela, Bolivarian Republic of',
'vn': 'Viet Nam',
'ye': 'Yemen',
'yt': 'Mayotte',
'za': 'South Africa',
'zm': 'Zambia',
'zw': 'Zimbabwe'
}
EUR = ['be', 'de', 'ie', 'gr', 'es', 'fr', 'it', 'cy', 'lu', 'mt', 'nl', 'at',
'pt', 'si', 'sk', 'fi', 'ee']
OECD = ['au', 'at', 'be', 'ca', 'cl', 'cz', 'dk', 'ee', 'fi', 'fr', 'de', 'gr',
'hu', 'is', 'ie', 'il', 'it', 'jp', 'kr', 'lu', 'mx', 'nl', 'nz', 'no',
'pl', 'pt', 'sk', 'si', 'es', 'se', 'ch', 'tr', 'gb', 'us']
NAFTA = ['ca', 'mx', 'us']
# Continents
ASIA = [
'af', 'am', 'az', 'bh', 'bd', 'bt', 'bn', 'mn', 'mm', 'kh', 'cn', 'cy',
'tl', 'ge', 'in', 'id', 'ir', 'iq', 'il', 'jp', 'jo', 'kz', 'kw', 'kg',
'la', 'lb', 'my', 'mv', 'mn', 'np', 'kp', 'om', 'pk', 'ps', 'ph', 'ru',
'sa', 'sg', 'lk', 'kr', 'sy', 'tw', 'tj', 'th', 'tr', 'tm', 'ae', 'uz',
'vn', 'ye', 'mo', 'hk'
]
EUROPE = [
'al', 'am', 'at', 'az', 'be', 'by', 'ba', 'bg', 'hr', 'cy', 'cz', 'dk',
'ee', 'fi', 'fr', 'ge', 'de', 'gr', 'hu', 'is', 'ie', 'it', 'kz', 'lv',
'li', 'lt', 'lu', 'mk', 'mt', 'md', 'mc', 'me', 'nl', 'no', 'pl', 'pt',
'ro', 'ru', 'sm', 'rs', 'sk', 'si', 'es', 'se', 'ch', 'tr', 'ua', 'gb',
'va'
]
AFRICA = [
'dz', 'eg', 'ly', 'ma', 'sd', 'tn', 'eh', 'dj', 'er', 'et', 'so', 'bi',
'ke', 'mg', 'mw', 'mu', 'yt', 'mz', 're', 'rw', 'sc', 'tz', 'ug', 'zm',
'zw', 'ao', 'cm', 'cf', 'td', 'cd', 'cg', 'gq', 'ga', 'st', 'bw', 'ls',
'na', 'za', 'sz', 'bj', 'bf', 'cv', 'gm', 'gh', 'gn', 'gw', 'ci', 'lr',
'ml', 'mr', 'ne', 'ng', 'sh', 'sn', 'sl', 'tg'
]
NORTH_AMERICA = [
'ca', 'mx', 'us', 'gl', 'cu', 'do', 'ht', 'jm', 'pr', 'bz', 'cr', 'sv',
'gt', 'hn', 'ni', 'pa'
]
SOUTH_AMERICA = [
'ar', 'bo', 'br', 'cl', 'co', 'ec', 'gf', 'gy', 'py', 'pe', 'sr', 'uy',
've'
]
OCEANIA = [
'au', 'nz', 'pg', 'gu',
]
ANTARTICA = [
'aq'
]
SUPRANATIONAL = {
'oecd': OECD,
'nafta': NAFTA,
'eur': EUR,
'asia': ASIA,
'europe': EUROPE,
'africa': AFRICA,
'north_america': NORTH_AMERICA,
'south_america': SOUTH_AMERICA,
'oceania': OCEANIA,
'antartica': ANTARTICA
}
def set_countries(countries, clear=False):
if clear:
COUNTRIES.clear()
COUNTRIES.update(countries)

1
pygal/test/__init__.py

@ -19,7 +19,6 @@
import pygal import pygal
from pygal.util import cut from pygal.util import cut
from pygal.i18n import COUNTRIES
from pygal.graph.map import BaseMap from pygal.graph.map import BaseMap
from decimal import Decimal from decimal import Decimal

4
pygal/test/test_config.py

@ -18,8 +18,8 @@
# along with pygal. If not, see <http://www.gnu.org/licenses/>. # along with pygal. If not, see <http://www.gnu.org/licenses/>.
from pygal import ( from pygal import (
Line, Dot, Pie, Treemap, Radar, Config, Bar, Funnel, Worldmap, Line, Dot, Pie, Treemap, Radar, Config, Bar, Funnel,
SupranationalWorldmap, Histogram, Gauge, Box, XY, Histogram, Gauge, Box, XY,
Pyramid, HorizontalBar, HorizontalStackedBar, Pyramid, HorizontalBar, HorizontalStackedBar,
DateTimeLine, TimeLine, DateLine, TimeDeltaLine) DateTimeLine, TimeLine, DateLine, TimeDeltaLine)
from pygal.graph.map import BaseMap from pygal.graph.map import BaseMap

1
pygal/test/test_graph.py

@ -22,7 +22,6 @@ import pygal
import uuid import uuid
import sys import sys
import pytest import pytest
from pygal import i18n
from pygal.graph.map import BaseMap from pygal.graph.map import BaseMap
from pygal.util import cut from pygal.util import cut
from pygal._compat import u from pygal._compat import u

87
pygal/test/test_map.py

@ -1,87 +0,0 @@
# -*- coding: utf-8 -*-
# This file is part of pygal
#
# A python svg graph plotting library
# Copyright © 2012-2014 Kozea
#
# This library is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# This library is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with pygal. If not, see <http://www.gnu.org/licenses/>.
from pygal import (
Worldmap, SupranationalWorldmap)
from pygal.i18n import COUNTRIES, SUPRANATIONAL, set_countries
import operator
try:
from functools import reduce
except ImportError:
pass
_COUNTRIES = dict(COUNTRIES)
def test_worldmap():
set_countries(_COUNTRIES, True)
datas = {}
for i, ctry in enumerate(COUNTRIES):
datas[ctry] = i
wmap = Worldmap()
wmap.add('countries', datas)
q = wmap.render_pyquery()
assert len(
q('.country.color-0')
) == len(COUNTRIES)
assert 'France' in q('.country.fr').text()
def test_worldmap_i18n():
set_countries(_COUNTRIES, True)
datas = {}
for i, ctry in enumerate(COUNTRIES):
datas[ctry] = i
set_countries({'fr': 'Francia'})
wmap = Worldmap()
wmap.add('countries', datas)
q = wmap.render_pyquery()
assert len(
q('.country.color-0')
) == len(COUNTRIES)
assert 'Francia' in q('.country.fr').text()
def test_worldmap_i18n_clear():
set_countries(_COUNTRIES, True)
wmap = Worldmap()
wmap.add('countries', dict(fr=12))
set_countries({'fr': 'Frankreich'}, clear=True)
q = wmap.render_pyquery()
assert len(
q('.country.color-0')
) == 1
assert 'Frankreich' in q('.country.fr').text()
def test_supranationalworldmap():
set_countries(_COUNTRIES, True)
datas = {}
for i, supra in enumerate(SUPRANATIONAL):
datas[supra] = i + 1
wmap = SupranationalWorldmap()
wmap.add('supra', datas)
q = wmap.render_pyquery()
assert len(
q('.country.color-0')
) == len(
reduce(operator.or_, map(set, SUPRANATIONAL.values())))
Loading…
Cancel
Save