Для документации этого модуля может быть создана страница Модуль:PopulationDistribution/doc

local p = {}

local ModuleStatistical = require( 'Module:Statistical' )

function p.GetPopulationDistribution(frame)
	local Args =  frame:getParent().args
	if Args[1] == nil then
		return '<strong class="error">Введите викифицированные названия населённых пунктов</strong>'
	end
	
	local District = Args['МО'] or frame.args[1]
    local DistrictPopulation = ModuleStatistical.GetStat({ District, 'ч' })
    local ChartArgs = {}
    
    local Title = 'Распределение населения '
	if string.find (District, 'район') then
		Title = Title .. 'района'
	elseif string.find (District, '[Гг]ородской округ') then
		Title = Title .. 'городского округа'
	elseif string.find (District, '[Мм]униципальный округ') then
		Title = Title .. 'муниципального округа'
	elseif string.find (District, ' округ') then
		Title = Title .. 'округа'
	elseif string.find (District, '[Гг]ородское поселение') then
		Title = Title .. 'городского поселения'
	else
		Title = Title .. 'муниципального образования'
	end
	ChartArgs['заголовок'] = Title .. ':'
	ChartArgs['other'] = 'Остальные'
	
	for key, val in pairs(Args) do
		if key ~= 'МО' then 
			local Name = mw.text.trim(val)
			ChartArgs[ 'описание' .. key ] = string.format('[[%s|%s]]', Name, string.match(Name, "([^\(]+)"))
			ChartArgs[ 'значение' .. key ] = string.format("%.2f", ModuleStatistical.GetStat({Name, 'ч'})*100/DistrictPopulation)
		end
	end
	
	return frame:expandTemplate({
		title = 'Круговая диаграмма',
		args = ChartArgs,
	})
end
return p