{ "info": { "author": "Trbs", "author_email": "trbs@trbs.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Internet :: Log Analysis", "Topic :: System :: Networking :: Monitoring", "Topic :: Utilities" ], "description": "Bucky\n-----\n\n:info: Bucky Statsd and Collectd server for Graphite\n\n.. image:: https://travis-ci.org/trbs/bucky.png?branch=master\n :target: https://travis-ci.org/trbs/bucky\n\n.. image:: https://coveralls.io/repos/trbs/bucky/badge.png?branch=master\n :target: https://coveralls.io/r/trbs/bucky?branch=master\n\nBucky is a small server for collecting and translating metrics for\nGraphite. It can current collect metric data from CollectD daemons\nand from StatsD clients.\n\nInstallation\n------------\n\nYou can install with `easy_install` or `pip` as per normal modus\noperandi::\n\n $ easy_install bucky\n # or\n $ pip install bucky\n\nAfter installing, you can run Bucky like::\n\n $ bucky\n\nBucky will try to install PyCrypto which requires the python-dev\npackage to be installed.\n\nBy default, Bucky will open a CollectD UDP socket on 127.0.0.1:25826,\na StatsD socket on 127.0.0.1:8125 as well as attempt to connect to a\nlocal Graphite (Carbon) daemon on 127.0.0.1:2003.\n\nThese are all optional as illustrated below. You can also disable the\nCollectD or StatsD servers completely if you so desire.\n\nProcess Names\n-------------\n\nIf the py-setproctitle_ module is installed Bucky will use it to set\nuser readable process names. This will make the child processes of Bucky\neasier to identify. Please note that this is completely optional.\n\nTo install py-setproctitle_ run::\n\n $ easy_install setproctitle\n # or\n $ pip install setproctitle\n\n.. _py-setproctitle: https://github.com/dvarrazzo/py-setproctitle\n\n\nRunning Bucky For Real\n----------------------\n\nThe astute observer will notice that Bucky has no flags for\ndaemonization. This is quite on purpose. The recommended way to\nrun Bucky in production is via runit. There's an example service\ndirectory in Bucky's source repository.\n\nPython 3 Support\n----------------\n\nBucky supports Python 3. However this support is still very young\nand we would like to hear from you if you are running Bucky on\nPython3 and help us improve the support in real production environments.\n\nSentry Support\n--------------\n\nBucky has support for logging error messages to Sentry via the Python Raven client.\n\nTo install raven_ run::\n\n $ pip install raven\n # or\n $ easy_install raven\n\n.. _raven: http://raven.readthedocs.org/\n\nNext enable Sentry in Bucky's configuration file.\n\nCommand Line Options\n--------------------\n\nThe command line options are limited to controlling the network\nparameters. If you want to configure some of the more intricate\nworkings you'll need to use a config file. Here's the `bucky -h`\noutput::\n\n Usage: main.py [OPTIONS] [CONFIG_FILE]\n \n Options:\n --debug Put server into debug mode. [False]\n --metricsd-ip=IP IP address to bind for the MetricsD UDP socket\n [127.0.0.1]\n --metricsd-port=INT Port to bind for the MetricsD UDP socket [23632]\n --disable-metricsd Disable the MetricsD UDP server\n --collectd-ip=IP IP address to bind for the CollectD UDP socket\n [127.0.0.1]\n --collectd-port=INT Port to bind for the CollectD UDP socket [25826]\n --collectd-types=FILE\n Path to the collectd types.db file, can be specified\n multiple times\n --disable-collectd Disable the CollectD UDP server\n --statsd-ip=IP IP address to bind for the StatsD UDP socket\n [127.0.0.1]\n --statsd-port=INT Port to bind for the StatsD UDP socket [8125]\n --disable-statsd Disable the StatsD server\n --graphite-ip=IP IP address of the Graphite/Carbon server [127.0.0.1]\n --graphite-port=INT Port of the Graphite/Carbon server [2003]\n --full-trace Display full error if config file fails to load\n --log-level=NAME Logging output verbosity [INFO]\n --version show program's version number and exit\n -h, --help show this help message and exit\n\n\nConfig File Options\n-------------------\n\nThe configuration file is a normal Python file that defines a number of\nvariables. Most of command line options can also be specified in this\nfile (remove the \"--\" prefix and replace \"-\" with \"_\") but if specified\nin both places, the command line takes priority. The defaults as a\nconfig file::\n\n\n # Standard debug and log level\n debug = False\n log_level = \"INFO\"\n\n # Whether to print the entire stack trace for errors encountered\n # when loading the config file\n full_trace = False\n\n # Basic metricsd conifguration\n metricsd_ip = \"127.0.0.1\"\n metricsd_port = 23632\n metricsd_enabled = True\n \n # The default interval between flushes of metric data to Graphite\n metricsd_default_interval = 10.0\n \n # You can specify the frequency of flushes to Graphite based on\n # the metric name used for each metric. These are specified as\n # regular expressions. An entry in this list should be a 3-tuple\n # that is: (regexp, frequency, priority)\n #\n # The regexp is applied with the match method. Frequency should be\n # in seconds. Priority is used to break ties when a metric name\n # matches more than one handler. (The largest priority wins)\n metricsd_handlers = []\n\n # Basic collectd configuration\n collectd_ip = \"127.0.0.1\"\n collectd_port = 25826\n collectd_enabled = True\n \n # A list of file names for collectd types.db\n # files.\n collectd_types = []\n \n # A mapping of plugin names to converter callables. These are\n # explained in more detail in the README.\n collectd_converters = {}\n \n # Whether to load converters from entry points. The entry point\n # used to define converters is 'bucky.collectd.converters'.\n collectd_use_entry_points = True\n\n # If a collectd metric is received with a value of type counter when\n # our types.db define it as derive, or vice versa, don't raise an\n # exception and assume the server's types.db is correct.\n # Types counter and derive are very similar. Also, it's common\n # for different versions/installations of collectd in 'clients'\n # to have a bit different definitions for the same metrics\n # (counter/derive conflict).\n collectd_counter_eq_derive = False\n\n # CollectD server can also run using multiple worker subprocesses.\n # Incoming packets are routed to workers based on source IP.\n collectd_workers = 1\n\n # Cryptographic settings for collectd. Security level 1 requires\n # signed packets, level 2 requires encrypted communication.\n # Auth file should contain lines in the form 'user: password'\n collectd_security_level = 0\n collectd_auth_file = None\n\n # Basic statsd configuration\n statsd_ip = \"127.0.0.1\"\n statsd_port = 8125\n statsd_enabled = True\n \n # How often stats should be flushed to Graphite.\n statsd_flush_time = 10.0\n\n # If the legacy namespace is enabled, the statsd backend uses the\n # default prefixes except for counters, which are stored directly\n # in stats.NAME for the rate and stats_counts.NAME for the\n # absolute count. If legacy names are disabled, the prefixes are\n # configurable, and counters are stored under\n # stats.counters.{rate,count} by default. Any prefix can be set\n # to None to skip it.\n statsd_legacy_namespace = True\n statsd_global_prefix = \"stats\"\n statsd_prefix_counter = \"counters\"\n statsd_prefix_timer = \"timers\"\n statsd_prefix_gauge = \"gauges\"\n\n # Basic Graphite configuration\n graphite_ip = \"127.0.0.1\"\n graphite_port = 2003\n \n # If the Graphite connection fails these numbers define how it\n # will reconnect. The max reconnects applies each time a\n # disconnect is encountered and the reconnect delay is the time\n # in seconds between connection attempts. Setting max reconnects\n # to a negative number removes the limit. The backoff factor\n # determines how much the reconnect delay will be multiplied with\n # each reconnect round. It can be limited with a maximum after which\n # the delay will not be multiplied anymore.\n graphite_max_reconnects = 3\n graphite_reconnect_delay = 5\n graphite_backoff_factor = 1.5\n graphite_backoff_max = 60\n\n # Configuration for sending metrics to Graphite via the pickle\n # interface. Be sure to edit graphite_port to match the settings\n # on your Graphite cache/relay.\n graphite_pickle_enabled = False\n graphite_pickle_buffer_size = 500\n\n # Bucky provides these settings to allow the system wide\n # configuration of how metric names are processed before\n # sending to Graphite.\n # \n # Prefix and postfix allow to tag all values with some value.\n name_prefix = None\n name_postfix = None\n \n # The replacement character is used to munge any '.' characters\n # in name components because it is special to Graphite. Setting\n # this to None will prevent this step.\n name_replace_char = '_'\n \n # Optionally strip duplicates in path components. For instance\n # a.a.b.c.c.b would be rewritten as a.b.c.b\n name_strip_duplicates = True\n \n # Bucky reverses hostname components to improve the locality\n # of metric values in Graphite. For instance, \"node.company.tld\"\n # would be rewritten as \"tld.company.node\". This setting allows\n # for the specification of hostname components that should\n # be stripped from hostnames. For instance, if \"company.tld\"\n # were specified, the previous example would end up as \"node\".\n name_host_trim = []\n \n # processor is a callable that takes a (host, name, val, time)\n # tuple as input and is expected to return a tuple of the same\n # structure to forward the sample to the clients, or None to\n # drop it. processor_drop_on_error specifies if the sample is\n # dropped or forwarded to clients in case an exception is\n # raised by the processor callable.\n processor = None\n processor_drop_on_error = False\n\n\nConfiguring CollectD\n--------------------\n\nYou should only need to add something like this to your collectd.conf::\n\n LoadPlugin \"network\"\n \n \n Server \"127.0.0.1\" \"25826\"\n \n\nObviously, you'll want to match up the IP addresses and ports and make\nsure that your firewall's are configured to allow UDP packets through.\n\n\nConfiguring StatsD\n------------------\n\nJust point your StatsD clients at Bucky's IP/Port and you should be\ngood to go.\n\n\nConfiguring MetricsD\n--------------------\n\nTODO\n\n\nA note on CollectD converters\n-----------------------------\n\nCollectD metrics aren't exactly directly translatable to Graphite\nmetric names. The default translator attempts to make a best guess\nbut this can result in slightly less than pretty Graphite trees.\n\nFor this reason, Bucky has configurable converters. These are\nkeyed off the CollectD plugin name. The input to these functions is\na representation of the CollectD metric that looks like such::\n\n {\n 'host': 'toroid.local',\n 'interval': 10.0,\n 'plugin': 'memory',\n 'plugin_instance': '',\n 'time': 1320970329.175534,\n 'type': 'memory',\n 'type_instance': 'inactive',\n 'value': 823009280.0,\n 'value_name': 'value',\n 'value_type': 1\n }\n\nThe result of this function should be a list of strings that represent\npart of the Graphite metric name or `None` to drop sample\nentirely. For instance, if a converter returned `[\"foo\", \"bar\"]`, the\nfinal metric name will end up as:\n`$prefix.$hostname.foo.bar.$postfix`.\n\nAn example builtin converter looks like such::\n\n # This might be how you define a converter in\n # your config file\n\n class MemoryConverter(object):\n PRIORITY = 0\n def __call__(self, sample):\n return [\"memory\", sample[\"type_instance\"]]\n\n collectd_converters = {\"memory\": MemoryConverter()}\n\nConverters can either be declared and/or imported in the optional\nconfig file, or they can be autodiscovered via entry points. The\nentry point that is searched is \"bucky.collectd.converters\". The\nentry point name should be the CollectD plugin name.\n\n`collectd_converters` in config file should be a mapping of collectd\nplugin name to converter instance. The default catch-all converter\n(used when no special converter is defined for a plugin) can be\noveridden by specifying `_default` as the plugin name.\n\nConverters also have a notion of priority in order to resolve\nconflicts. This is merely a property on the callable named\n\"PRIORITY\" and larger priorities are preferred. I don't imagine\nthis will need to be used very often, but its there just in\ncase.\n\n\nConfiguring the Processor\n-------------------------\n\nA Processor is a process that recieves samples as they are parsed\nby the servers and performs actions on them before handing them\nover to the clients.\n\nIf a callable is defined in the `processor` configuration variable,\na Processor process will aply this callable to the sample recieved\n`(host, name, val, time)` and expects back a tuple of the same\nstructure to forward to clients, or `None` to drop the sample.\n\nThis makes it easy to add all sorts of custom filtering and\nmodification on samples.\n\nThis might be how you define a processor in your config file::\n\n import time\n\n def timediff(host, name, val, timestamp):\n \"\"\"Drop samples with large time offset\n \n Drop samples that are more than 2 minutes in the future\n or more than 5 minutes in the past.\n\n \"\"\"\n\n future = 120 # 2 minutes\n past = 300 # 5 minutes\n now = time.time()\n if timestamp > now + future or timestamp < now - past:\n return None\n return host, name, val, timestamp\n\n processor = timediff", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/trbs/bucky.git", "keywords": null, "license": "ASF2.0", "maintainer": null, "maintainer_email": null, "name": "bucky", "package_url": "https://pypi.org/project/bucky/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/bucky/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/trbs/bucky.git" }, "release_url": "https://pypi.org/project/bucky/2.3.0/", "requires_dist": null, "requires_python": null, "summary": "StatsD and CollectD adapter for Graphite", "version": "2.3.0" }, "last_serial": 1430141, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "99ec123e434878a451bdd91ad310579d", "sha256": "02b71b2c1c0d7f328ec5fb92e907526f4ba82da53204f5e8f6c84e48fd2956e7" }, "downloads": -1, "filename": "bucky-0.0.1.tar.gz", "has_sig": false, "md5_digest": "99ec123e434878a451bdd91ad310579d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14603, "upload_time": "2011-11-11T17:22:12", "url": "https://files.pythonhosted.org/packages/b9/f7/301e83aa406bac65a4d272c2b9e26c2e1d7de86a64bb547279d2b89f993b/bucky-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "47362d941db21524ac5ed007b4651471", "sha256": "9842c696fe9654ad29410dad5f99b8dcf38f3d8acf6f12b097b858bdbfb145cd" }, "downloads": -1, "filename": "bucky-0.0.10.tar.gz", "has_sig": false, "md5_digest": "47362d941db21524ac5ed007b4651471", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21311, "upload_time": "2011-12-13T19:47:53", "url": "https://files.pythonhosted.org/packages/dc/d7/9012a91e47ac464859c7c16fcc48df0e5c56720e212d4b1d2fdfc33f848f/bucky-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "9f2b44171839f576eab4d9e0787b9e3e", "sha256": "5b75536a5ab56f3bcb6b5f47bba7dcac5f584e90547ef26c8bb37c93fd2e105a" }, "downloads": -1, "filename": "bucky-0.0.11.tar.gz", "has_sig": false, "md5_digest": "9f2b44171839f576eab4d9e0787b9e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21379, "upload_time": "2011-12-13T20:02:36", "url": "https://files.pythonhosted.org/packages/b2/d0/b07e07a14cd2b97a63e1f8d98bc276ed2ec2fcf09a23613055d67f6866bc/bucky-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "d369cc26cd3d97b6fb9dce20b8e000bb", "sha256": "835d495fd8fc652405ffe3467f61fc1332c6d936ca5e00f8b284a0b1b2b5c65e" }, "downloads": -1, "filename": "bucky-0.0.12.tar.gz", "has_sig": false, "md5_digest": "d369cc26cd3d97b6fb9dce20b8e000bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21588, "upload_time": "2012-04-27T05:07:04", "url": "https://files.pythonhosted.org/packages/b6/96/16319aee645204cd6cca613fefba123e9e82519b57fa50925f46fb24b76d/bucky-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "fba856725da6b1f622cdb003578ed3a5", "sha256": "c30a0417c4334f483803597cd8eb08a24f8f4480e13030967696641447b5e7a3" }, "downloads": -1, "filename": "bucky-0.0.13.tar.gz", "has_sig": false, "md5_digest": "fba856725da6b1f622cdb003578ed3a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21634, "upload_time": "2012-05-01T02:34:10", "url": "https://files.pythonhosted.org/packages/05/59/f73cb12f4e52085cb087cc966443c2344b572419ef3f0cac8bbae29279ab/bucky-0.0.13.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fdf5de19356f3f0be120e716a5e8641e", "sha256": "a426268d00d3beddf1633055609fdcfe0853c233f3a43abbb0510af5ecb8bb10" }, "downloads": -1, "filename": "bucky-0.0.2.tar.gz", "has_sig": false, "md5_digest": "fdf5de19356f3f0be120e716a5e8641e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14620, "upload_time": "2011-11-11T19:20:20", "url": "https://files.pythonhosted.org/packages/97/20/8988b4d86cb9d6f8331563fdf8e22b1c5038585748bbdcfa1816c3efea40/bucky-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "c56eb702357291eb96dcb16c582dcf2d", "sha256": "a0313de16290c1e685167ab1933b0592b91dde8f222cc526113d5ea9c0171f4a" }, "downloads": -1, "filename": "bucky-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c56eb702357291eb96dcb16c582dcf2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14713, "upload_time": "2011-11-11T19:33:31", "url": "https://files.pythonhosted.org/packages/4b/be/51f8c675dcf2f48bf310b404b2a4b8137ced2a87e3043f2a1fe8dd439a83/bucky-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8377d57a561521d1684b41d14c6c0e1b", "sha256": "3520e52f65a9eda003a24797204eaca20987e8ce3cbcc3b55e6b461ed8fd39dc" }, "downloads": -1, "filename": "bucky-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8377d57a561521d1684b41d14c6c0e1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14713, "upload_time": "2011-11-11T19:37:50", "url": "https://files.pythonhosted.org/packages/60/01/1baa5d8274cd0da34832ee47a4db4934ebca0b62e9956c241ef1d682d7e8/bucky-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "38739a27c8c5d0ea3929723524a32cc3", "sha256": "a3ace97ca7116941a6234f5c8ca7b43e5635b91c7786595bf8bece585428466a" }, "downloads": -1, "filename": "bucky-0.0.5.tar.gz", "has_sig": false, "md5_digest": "38739a27c8c5d0ea3929723524a32cc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14754, "upload_time": "2011-11-11T19:44:31", "url": "https://files.pythonhosted.org/packages/6c/d5/3e838eecdf450ee821553d1dc673b7060ca1dc7ffc27ec842934153b749d/bucky-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "615619a925e2b9afb0641d7f85c4b7cb", "sha256": "414b48c77cfe321153dd73c881a014ad7a8190e6af2075a6e9af5015e17296ee" }, "downloads": -1, "filename": "bucky-0.0.6.tar.gz", "has_sig": false, "md5_digest": "615619a925e2b9afb0641d7f85c4b7cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14761, "upload_time": "2011-11-11T22:17:38", "url": "https://files.pythonhosted.org/packages/7b/80/b5ae2f2dbb05e20cee580044f6629a60b00d8640150707efac720f8f5f33/bucky-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c99491cc1530853146eacfaf46c72bbc", "sha256": "d9c72476fc9da00686ff7847364ead60ebcc413092f307c8fe2703b85c846178" }, "downloads": -1, "filename": "bucky-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c99491cc1530853146eacfaf46c72bbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14752, "upload_time": "2011-11-11T22:18:53", "url": "https://files.pythonhosted.org/packages/52/94/d8d62815ec0349519e308943d5e5b7c603fe43f8f5345fda6b3aeb6b2b32/bucky-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "4200d7661b303aa0d04ce8749747258a", "sha256": "41e2aa7773c3f630d236616f0c8e2add99aa97579ab1eed4e371cffce47e3805" }, "downloads": -1, "filename": "bucky-0.0.8.tar.gz", "has_sig": false, "md5_digest": "4200d7661b303aa0d04ce8749747258a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14761, "upload_time": "2011-11-11T22:20:32", "url": "https://files.pythonhosted.org/packages/d6/33/f8cd04881b044b2c165db112b591dfc123a47b6322013515968d870d4389/bucky-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "f4fcad084e2882dda332ce498a416587", "sha256": "f57e1124906d35c58254f26008bd5a7467f1631c4bd3f61a9bd1fa6e82830546" }, "downloads": -1, "filename": "bucky-0.0.9.tar.gz", "has_sig": false, "md5_digest": "f4fcad084e2882dda332ce498a416587", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21299, "upload_time": "2011-12-13T19:44:56", "url": "https://files.pythonhosted.org/packages/63/c9/c11e97866cce62aa1e3e936fa8f06dfd4c7c84b27155f11832b637e69847/bucky-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "c99ee9b87583eb1ec5bc35b61f4d8fa8", "sha256": "2c390308f37bcb601fc8c0403f702297ea27474f261a24fd62321007d6e2e248" }, "downloads": -1, "filename": "bucky-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c99ee9b87583eb1ec5bc35b61f4d8fa8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21672, "upload_time": "2012-05-01T06:30:59", "url": "https://files.pythonhosted.org/packages/4b/88/98734c49c4edf69c90450c73e6383b5f99ae1ac75831b5e31b7a71fa327a/bucky-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3ff202c3265c8ebde1cb4ec9ef625410", "sha256": "02a7255212cae33d5e38f91e792a81ce5f4816ae552336c24709d54dc4820fd4" }, "downloads": -1, "filename": "bucky-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3ff202c3265c8ebde1cb4ec9ef625410", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21897, "upload_time": "2012-05-04T03:11:56", "url": "https://files.pythonhosted.org/packages/39/23/a87a5cb961d76e7005f4c6028c1e46f3d301552dacd7893c028c7e3c8639/bucky-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "7b850d724647333436cedf7bb2346ff8", "sha256": "7564efcbe7c232f0e40fee534875b22a43619ccacfee8c34072dd2159009fb20" }, "downloads": -1, "filename": "bucky-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7b850d724647333436cedf7bb2346ff8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22025, "upload_time": "2012-08-09T02:30:01", "url": "https://files.pythonhosted.org/packages/18/4d/d6b51b4b048029e83c577489ab6f08e98ae46a80b732a68e277ff6253a8c/bucky-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7ae15db35847426f7b10d7450b459095", "sha256": "34900f5ff2451e17edb96a42bbc006226e80b89edabf9c9804ebe2e3d0061544" }, "downloads": -1, "filename": "bucky-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7ae15db35847426f7b10d7450b459095", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22369, "upload_time": "2012-08-15T23:21:34", "url": "https://files.pythonhosted.org/packages/8b/6b/547f2b3d1054b560989baffe78e83e2e9b67496ba5911297ecf016bce6db/bucky-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "787899fda6edba1e2789543c9917223f", "sha256": "c53467f989cc595fa1226c76459e1308423faefecdb26ee4a9189784eae27695" }, "downloads": -1, "filename": "bucky-0.2.3.tar.gz", "has_sig": false, "md5_digest": "787899fda6edba1e2789543c9917223f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22380, "upload_time": "2012-08-30T20:00:05", "url": "https://files.pythonhosted.org/packages/59/51/0ec230a94853e8375d4e6b3f01d7a7d11529b989b74b234ec672ae68368f/bucky-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "f236c54682853d0c9363b0a618f5cf08", "sha256": "14900460d4dd512317d2f24df179efc018fa996fe7bcb7bb3686280508156d0c" }, "downloads": -1, "filename": "bucky-0.2.4.tar.gz", "has_sig": false, "md5_digest": "f236c54682853d0c9363b0a618f5cf08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22295, "upload_time": "2013-02-25T18:50:14", "url": "https://files.pythonhosted.org/packages/e7/dd/b7d5b71f9d4f7581de7b2f2a2230558899299b0829bd6c7e35a88ce10eba/bucky-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "f3ee9c349f8b1a705b6136839cf003c2", "sha256": "71d133e26982eff2501254d8f755afe33a10d63591a0abbbbdc651e532e7575a" }, "downloads": -1, "filename": "bucky-0.2.5.tar.gz", "has_sig": false, "md5_digest": "f3ee9c349f8b1a705b6136839cf003c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22310, "upload_time": "2013-06-25T17:12:35", "url": "https://files.pythonhosted.org/packages/1c/80/32e834025b374fb1f741e6127964a2ce27b86523d155ad754d8927340948/bucky-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "3d36facb92dda9196e264911b5463054", "sha256": "0e024e37170c5fe3abc46f55ba3780c3bb22408b9d823c1e50e3a20b5dbb0375" }, "downloads": -1, "filename": "bucky-0.2.6.tar.gz", "has_sig": false, "md5_digest": "3d36facb92dda9196e264911b5463054", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22359, "upload_time": "2013-07-01T17:32:44", "url": "https://files.pythonhosted.org/packages/f5/79/a63a9e494b8f821ccf4ad9338ccea29c390295382a25a248121b6596ba9f/bucky-0.2.6.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "05abf9506a7dc70eb8677a6efd8b52f9", "sha256": "466f619541a299a7f26bfba2f86a54e495e7b630fe30b69ef76126cb01d901c7" }, "downloads": -1, "filename": "bucky-0.3.1.tar.gz", "has_sig": true, "md5_digest": "05abf9506a7dc70eb8677a6efd8b52f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22813, "upload_time": "2014-01-31T10:46:14", "url": "https://files.pythonhosted.org/packages/ba/dc/16271e4f13d2e41dc4ee143792496ba0e5af84020811723a0ae90dd31bea/bucky-0.3.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "608994207333f6c745764b45baec1d5f", "sha256": "9018c2d0f2cf376dfc4969f0ab31ce7297c7d498e7d59bdb021cef806b6367ef" }, "downloads": -1, "filename": "bucky-2.0.0.tar.gz", "has_sig": true, "md5_digest": "608994207333f6c745764b45baec1d5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24664, "upload_time": "2014-02-17T15:44:55", "url": "https://files.pythonhosted.org/packages/20/ce/c36b412f440c12b2e633dd4ea84e4389a3a865baad745c0809a22fcba2b6/bucky-2.0.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "8f4ddcf5eef648135b1843b3f23eede3", "sha256": "347b1df2c4c7c5f68c1801284ba695c01cb00804240972986b19eaa37ae82c54" }, "downloads": -1, "filename": "bucky-2.2.0.tar.gz", "has_sig": true, "md5_digest": "8f4ddcf5eef648135b1843b3f23eede3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33931, "upload_time": "2014-06-16T14:35:15", "url": "https://files.pythonhosted.org/packages/9c/52/8646094104f08d051b5e56121068e3d55c3cbd14d0cb457fdf2e6b78a389/bucky-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "091c93943ebc12f28231834e2cfd5d24", "sha256": "c7384b382ea1c933ce578cb6f246fc273b7cfdf4054252efbc8d2aa765bda0b0" }, "downloads": -1, "filename": "bucky-2.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "091c93943ebc12f28231834e2cfd5d24", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 41991, "upload_time": "2014-06-16T14:37:26", "url": "https://files.pythonhosted.org/packages/c7/e8/77f6ebeaa7cea6bcadd6d54e5566ac8adc9cd964aaeda669b86b44e274ad/bucky-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f009e6d87f3165aa1ea1fda2dbff7c18", "sha256": "047285345c20732e4f0deeafb54bf09854b731e307509abff14a347d37710cbe" }, "downloads": -1, "filename": "bucky-2.2.1.tar.gz", "has_sig": true, "md5_digest": "f009e6d87f3165aa1ea1fda2dbff7c18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33953, "upload_time": "2014-06-16T14:37:19", "url": "https://files.pythonhosted.org/packages/aa/4e/dc2efd44ef22dfda0945941d13720e69bead4ff517f0551cd22728985a83/bucky-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "b6ac1a0fd82702dcf6aa08054a175d0c", "sha256": "7c4c70f1c7335bc411d3944a18d2f8bd8bd3a2429a2be4e68e94c56ddf656871" }, "downloads": -1, "filename": "bucky-2.2.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b6ac1a0fd82702dcf6aa08054a175d0c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 41994, "upload_time": "2014-06-20T18:55:10", "url": "https://files.pythonhosted.org/packages/43/85/6d7f42366ebcab98f1550384cdddf23205388466846c86771d88d7422213/bucky-2.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "258ed64258b468d15328ec4ef9633580", "sha256": "17cc3e86f38545d7df19bab31f5f1768bf2fbfe60ac2baff70cabbc62ba6017b" }, "downloads": -1, "filename": "bucky-2.2.2.tar.gz", "has_sig": true, "md5_digest": "258ed64258b468d15328ec4ef9633580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33973, "upload_time": "2014-06-20T18:55:03", "url": "https://files.pythonhosted.org/packages/18/01/56c26ab131ddae377253704e26ef6a8b38692d6631fab2f3cafab60f111c/bucky-2.2.2.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "9d108c4dac6fc9c14815f62bb8d4967a", "sha256": "69cc3fc7dbae644a3e0ce65a58fa245d6655dfcccf5b3ce57389cd196d940ba1" }, "downloads": -1, "filename": "bucky-2.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9d108c4dac6fc9c14815f62bb8d4967a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 45382, "upload_time": "2015-02-19T18:42:33", "url": "https://files.pythonhosted.org/packages/ea/bd/bac6a0e6853f9cc006ba8a047520e0162eb04e14f039081739edb4b9ccaf/bucky-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "106555f590a053f92a47f77e7a15968b", "sha256": "7771d4216678f98877b73fd6965eb4641471b5553cf5d7852bf551fcde724255" }, "downloads": -1, "filename": "bucky-2.3.0.tar.gz", "has_sig": true, "md5_digest": "106555f590a053f92a47f77e7a15968b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36824, "upload_time": "2015-02-19T18:41:22", "url": "https://files.pythonhosted.org/packages/8f/34/db9dc4ff5ba73046d35b7d48e19545ca53dab48021a427b5da9660a17340/bucky-2.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9d108c4dac6fc9c14815f62bb8d4967a", "sha256": "69cc3fc7dbae644a3e0ce65a58fa245d6655dfcccf5b3ce57389cd196d940ba1" }, "downloads": -1, "filename": "bucky-2.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9d108c4dac6fc9c14815f62bb8d4967a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 45382, "upload_time": "2015-02-19T18:42:33", "url": "https://files.pythonhosted.org/packages/ea/bd/bac6a0e6853f9cc006ba8a047520e0162eb04e14f039081739edb4b9ccaf/bucky-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "106555f590a053f92a47f77e7a15968b", "sha256": "7771d4216678f98877b73fd6965eb4641471b5553cf5d7852bf551fcde724255" }, "downloads": -1, "filename": "bucky-2.3.0.tar.gz", "has_sig": true, "md5_digest": "106555f590a053f92a47f77e7a15968b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36824, "upload_time": "2015-02-19T18:41:22", "url": "https://files.pythonhosted.org/packages/8f/34/db9dc4ff5ba73046d35b7d48e19545ca53dab48021a427b5da9660a17340/bucky-2.3.0.tar.gz" } ] }