Skip to content

Instantly share code, notes, and snippets.

@rail
Created April 6, 2016 22:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rail/74437aaa63835af095d1b4c3ba7d1f30 to your computer and use it in GitHub Desktop.
Save rail/74437aaa63835af095d1b4c3ba7d1f30 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:09f3b9ebabdf3f7b528062fa19c3e10f88aa13691f2fa7380879c197ced7eb72"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from itertools import islice\n",
"\n",
"\n",
"class ChunkingError(Exception):\n",
" pass\n",
"\n",
"\n",
"def chunkify(things, this_chunk, chunks):\n",
" if this_chunk > chunks:\n",
" raise ChunkingError(\"this_chunk is greater than total chunks\")\n",
"\n",
" size = len(things) / chunks\n",
" big_chunks = len(things) % chunks\n",
" start = size * (this_chunk-1)\n",
" if big_chunks:\n",
" start += (min(big_chunks, this_chunk)-1)\n",
" if this_chunk <= big_chunks:\n",
" size += 1\n",
" elif this_chunk == big_chunks+1:\n",
" start += 1\n",
" else:\n",
" start += this_chunk-big_chunks-1\n",
"\n",
" end = start + size\n",
" try:\n",
" return things[start:end]\n",
" except TypeError:\n",
" return islice(things, start, end)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"changesets = \"\"\"ach 658769a76613\n",
"af 431e02c10881\n",
"an fe436c75f71d\n",
"ar bbcf06888dc5\n",
"as 8313f975ae77\n",
"ast 0300b60cd340\n",
"az fd96727d2a26\n",
"be b72077740aac\n",
"bg 9f7507dd2b92\n",
"bn-BD fe0a6bb82a2d\n",
"bn-IN a2ea6b87d80d\n",
"br 95b028350e29\n",
"bs cfee6f5b1e50\n",
"ca e8ca2d46b4a8\n",
"cs ed6004b91b51\n",
"cy 5bbcbba9b054\n",
"da 324fe068c0b9\n",
"de 217ff3f0054a\n",
"dsb 7cdfb5d9dc5d\n",
"el 22b959c9a739\n",
"en-GB 36012ab486ad\n",
"en-ZA 1c91f05aae5a\n",
"eo 049c1b065f4c\n",
"es-AR b3647b1d5927\n",
"es-CL e45186f983b9\n",
"es-ES 6fe131a8b07f\n",
"es-MX 4cd511663283\n",
"et ecae9df9c92a\n",
"eu 1a65e2c03dda\n",
"fa e5993d9fb76e\n",
"ff 8373353b43c4\n",
"fi 9382e9e4eb2b\n",
"fr 7d0bb8edc149\n",
"fy-NL 02ee99ad3f83\n",
"ga-IE 713ecb614f77\n",
"\"\"\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"locales = [l.split()[0] for l in changesets.splitlines()]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"locales "
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": [
"['ach',\n",
" 'af',\n",
" 'an',\n",
" 'ar',\n",
" 'as',\n",
" 'ast',\n",
" 'az',\n",
" 'be',\n",
" 'bg',\n",
" 'bn-BD',\n",
" 'bn-IN',\n",
" 'br',\n",
" 'bs',\n",
" 'ca',\n",
" 'cs',\n",
" 'cy',\n",
" 'da',\n",
" 'de',\n",
" 'dsb',\n",
" 'el',\n",
" 'en-GB',\n",
" 'en-ZA',\n",
" 'eo',\n",
" 'es-AR',\n",
" 'es-CL',\n",
" 'es-ES',\n",
" 'es-MX',\n",
" 'et',\n",
" 'eu',\n",
" 'fa',\n",
" 'ff',\n",
" 'fi',\n",
" 'fr',\n",
" 'fy-NL',\n",
" 'ga-IE']"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"chunkify(locales, 1, 10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
"['ach', 'af', 'an', 'ar']"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"chunkify(locales, 10, 10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"text": [
"[]"
]
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"chunkify(locales, 9, 10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
"['fi', 'fr', 'fy-NL']"
]
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment