{ "info": { "author": "Thomas Lehmann", "author_email": "thomas.lehmann.private@googlemail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: Unix", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "README\n======\n\n[![Build Status](https://travis-ci.org/Nachtfeuer/concept-py.svg?branch=master)](https://travis-ci.org/Nachtfeuer/concept-py)\n[![Coverage Status](https://coveralls.io/repos/Nachtfeuer/concept-py/badge.svg?branch=master)](https://coveralls.io/r/Nachtfeuer/concept-py?branch=master)\n[![PyPI version](https://badge.fury.io/py/concept-py.png)](http://badge.fury.io/py/concept-py)\n\n### Table Of Contents\n[**Welcome**](#welcome) \n[**Quick start**](#quick-start) \n[**Current Content**](#current-content) \n[**Next Action Items (planned)**](#next-action-items-planned) \n[**Requirements**](#requirements) \n[**Examples**](#examples) \n[**Level Of Done**](#level-of-done) \n[**Version Policy**](#version-policy) \n[**Interesting Links**](#interesting-links) \n\nWelcome\n-------\nWelcome to the README of my personal Python reference project.\nIt's a kind of knowledge database and small test environment.\n\nThis project is partly synchronized with another project\nof mine: https://github.com/Nachtfeuer/concept-cpp\n\nThe purpose is - of course - to keep everything clean, simple and\nwell documented. Please keep in mind and read:\n\n - [**Level Of Done**](#level-of-done)\n - [**Version Policy**](#version-policy)\n\n\nQuick start\n-----------\nInstalling latest released version:\n```\npip install concept-py\n```\n\nDevelopment on this project:\n```\n git clone https://github.com/Nachtfeuer/concept-py.git\n cd concept-py\n source srcipts/virtual\n ./runAnalyse.sh\n ./runTests.sh\n```\n\nCurrent Content\n---------------\n - enabled Travis CI build (tested with Python 2.7.x, 3.2.x, 3.3.x, 3.4.x, PyPy and PyPy3).\n - enabled for virtual environment\n - math classes\n - prime function/classes\n - is_prime and sieve_of_eratosthenes and its optimized version\n - segmented sieve (a first - working - version)\n - digit functions: sum_digits, count_digits, is_pandigital, is_palindrome\n - factorization: probe.\n - number functions: is_square, triangle, is_triangle, pentagonal, is_pentagonal,\n hexagonal, is_hexagonal.\n - matrix class.\n - container query with\n - 'where' and 'transform'\n - 'sum' and 'average'\n - 'min' and 'max'\n - range select functionality like container query (like concept-cpp)\n - 'shuffled'\n - example folder added (using this library)\n - prime tool\n - sequence generator tool\n - learning tool\n - find missing value in a shuffled sequence of values.\n - date and time when a run was started\n - best time and worst time in test run\n - export of gnuplot (multiplot) script and generated png image\n with average time per max seen entries in a test run.\n - graph for number of tests per test run\n - export displaying \"visual\" results (see gnuplot)\n - easy mail tool\n - supporting HTML and styles\n - supporting attachment\n - supporting embedded images (example provided; thanks to cooltext.com)\n - crypt/decrypt functions/classes\n - rail fence cipher\n - Caesar cipher\n - Vigenere cipher\n - lightweight gnuplot support to generate some graphs\n - plot class to wrap one plot function.\n - script class that write the script and executes gnuplot.\n - can generate png, svg, jpeg and gif.\n - image width and height adjustable.\n - xlabel and ylabel per plot\n - color and styles adjustments per line style \"index\"\n (rgb color, line width, ...) \n - adjusting of fill style per curve (style index as before)\n - enable mode \"filledcurves\"\n - adding multiplot class for multiple plot on one \"page\" (image).\n - data decorator for tests\n - execution function/method for each value of the list (single=True parameter)\n - common validator class\n - schema class for defining validation of data\n - router for url\n\n\nNext Action Items (planned)\n---------------------------\n - writing a script that runs tests across multiple python versions\n using the virtual environment.\n - let build fail when pep8, pep257 or flake warnings are NOT 0.\n - let build fail when pylint rating is less or equal 9.\n - math sequence generator\n - writing generated sequences to a database\n - being able to group all sequence which generate same sequence\n - allowing to repeat a formula 'n' times\n - adding integer division function\n - adding integer square root function\n - adding pow function (examples: 2^10 = 1024 or (-1)^x)\n - detection of two formula being opposites like (x+1) and (x-1)\n to avoid to have those as chain.\n - learning tool\n - graph for success/failure per number ...\n - adding trend line for average\n - lightweight gnuplot support to generate some graphs\n - font size for labels (and color).\n - trend lines (note: unfortunately have to print values double).\n - dashed and dotted lines.\n - data decorator for tests\n - values = dict(...) => values = [(k1, v1), (k1, v2), ...]\n - values = func()\n - Travis CI\n - freenode notification? (creation nick name first then the channel)\n - jython support? (https://www.topbug.net/old/use-travis-ci-with-jython/)\n\n\nRequirements\n------------\n - for checking the requirements do following:\n ```\n cat requirements.txt | sed \"s/=.*$//g\" | xargs -i pip show {}\n ```\n - for installing all requirements do following:\n ```\n pip install -r requirements.txt\n ```\n\nExamples\n--------\n - using the prime generation tool:\n ```\n examples/primes.py --max-number=80000000 --sieve=optimized --columns=-1 > primes.txt\n ```\n On my small and relative slow notebook I was able to get it with following results:\n ```\n prime tool\n ... Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2]\n ... Platform Linux-3.13.0-24-generic-x86_64-with-LinuxMint-17-qiana\n ... using algorithm \"optimized\"\n ... searching primes <= 80000000\n\n >> output of primes <<\n\n ... 4669382 primes found.\n ... sieve calculation took 43.863128 seconds\n ... prime calculation took 105.560736 seconds\n ```\n Obvious the generation of the final prime list is expensive.\n Requires some investigation.\n\n\nLevel Of Done\n-------------\nIt's mainly about quality and about the tasks you have to consider on each implemenation\nindepedent whether it's a new feature or a bug fix. Here's a list of things you ALWAYS\nshould do - at least for this project (also you should do it for all):\n\n - clean code\n - don't leave commented code (remove it)\n - ensure consistent style and don't do unfavorable things like long methods, high nested depths,\n too many parameters for a function or method or mixing spaces and tabs (don't use tabs).\n - check issues with ./runAnalyse.sh (pylint.log, pep8.log, pep257.log, flake8.log)\n - clean design\n - ensure re-usable code (DRY)\n - KISS (keep it simple software)\n - proper source code documentation\n - provide example(s) on how to use things where possible\n - don't document things that are obvious\n - check your documentation before you commit (./createDoc.sh)\n - writing unit tests\n - always write unit tests\n - ensure a line coverage above 90%\n - always run the tests before you commit your changes\n - no compiler warnings\n - keep compiler warnings extremely low\n - preferable: 0 warnings\n - ensure consistent versioning\n - read [**Version Policy**](#version-policy)\n - provide a version on each commit (see git log for examples)\n - using other tools\n - check for memory leaks and violations\n\n\nVersion Policy\n--------------\n - a version has the form **a.b.c**\n - \"a\" is the **major version** which is incremented by following reasons:\n - there's a set of **new** features with a lot of code which make it reasonable\n to increment the major version.\n - another reason would be the change of one or more interfaces which have been\n necessary to improve things. Needs to be well documented of course and\n should not happen to often.\n - \"b\" is the **minor version** which represents:\n - simple **new** features\n - simple **extensions** to given features\n - minor changes like adding missing documentation or style things.\n - \"c\" is the **bugfix counter** and is incremented on **bugfixes only**.\n - Following additional rules:\n - incrementing \"b\" resets \"c\" to zero (0.5.0, 1.0.0, 1.1.0, 1.2.0, 2.0.0, ...)\n - incrementing \"a\" resets \"b\" and \"c\" to zero (0.5.1, 1.0.0, 1.1.2, 2.0.0, ...)\n - each commit message (since policy has been introduced) should refer\n to a version by mentioning it in form: \"a.b.c: title\" in first line and\n as many details you like in following lines.\n\nInteresting links\n-----------------\n - https://travis-ci.org (CI build)\n - https://coveralls.io (coverage report)\n - https://badge.fury.io (badges like version of package in Python package index)\n - https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=concept-py", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Nachtfeuer/concept-py", "keywords": "concepts ideas", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "concept-py", "package_url": "https://pypi.org/project/concept-py/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/concept-py/", "project_urls": { "Homepage": "https://github.com/Nachtfeuer/concept-py" }, "release_url": "https://pypi.org/project/concept-py/0.31.0/", "requires_dist": null, "requires_python": null, "summary": "concepts and ideas in Python", "version": "0.31.0" }, "last_serial": 1722959, "releases": { "0.17.1": [ { "comment_text": "", "digests": { "md5": "b0b52e77ec1ac6cebbc3e2fe4cacd9c3", "sha256": "6fd65c18829eeb14c6d053e4c684bdc52d5def1ad16a762f44f8d2b9d17d1d00" }, "downloads": -1, "filename": "concept-py-0.17.1.tar.gz", "has_sig": false, "md5_digest": "b0b52e77ec1ac6cebbc3e2fe4cacd9c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12786, "upload_time": "2015-06-27T14:01:29", "url": "https://files.pythonhosted.org/packages/d7/7f/0f230a72eb035fa6660517f92f922ccd90f49a38477ddb41308b91d7ca0c/concept-py-0.17.1.tar.gz" } ], "0.18.0": [ { "comment_text": "", "digests": { "md5": "d693d3b2a877199ae1f407d4a899586c", "sha256": "1ca48657a3f3b71f434b435ffc863318fbe95964fdf9584fb9b3270948d96130" }, "downloads": -1, "filename": "concept-py-0.18.0.tar.gz", "has_sig": false, "md5_digest": "d693d3b2a877199ae1f407d4a899586c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12910, "upload_time": "2015-06-29T17:08:22", "url": "https://files.pythonhosted.org/packages/04/ea/2d84ee05bd8d389917d67db2ca9eabc9b316895664152bfeea918b6fa45c/concept-py-0.18.0.tar.gz" } ], "0.21.0": [ { "comment_text": "", "digests": { "md5": "d467b810b9fc00035e5ce1dcfc8cfea9", "sha256": "43fe19e51eb45075af66d343c0b8bcc32a9f7900bfcb2243c1c822168b2c931a" }, "downloads": -1, "filename": "concept-py-0.21.0.tar.gz", "has_sig": false, "md5_digest": "d467b810b9fc00035e5ce1dcfc8cfea9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15792, "upload_time": "2015-07-05T09:52:09", "url": "https://files.pythonhosted.org/packages/fd/fd/c0aacc291544e04eb6edaddcd74f112c5fb8b62a40df549e16fa7910022b/concept-py-0.21.0.tar.gz" } ], "0.25.1": [ { "comment_text": "", "digests": { "md5": "d22e0f9c2ff3d823b075261a081b7ba8", "sha256": "20f18abd15fd4f5d36de4cfa277c259612ddd6270efa85815b1e6f060d6d1a57" }, "downloads": -1, "filename": "concept-py-0.25.1.tar.gz", "has_sig": false, "md5_digest": "d22e0f9c2ff3d823b075261a081b7ba8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23139, "upload_time": "2015-07-11T17:23:36", "url": "https://files.pythonhosted.org/packages/75/f9/c3d739e1f4297aaf3595cd70441e32c73612eb765e94597dfaf0b3f3c336/concept-py-0.25.1.tar.gz" } ], "0.29.0": [ { "comment_text": "", "digests": { "md5": "51fdc524c718422d51d036e847abeeba", "sha256": "3c9f3cc32f8a6e97844036895b0e2e4c4d98654248df966f2c764d60a7bfac16" }, "downloads": -1, "filename": "concept-py-0.29.0.tar.gz", "has_sig": false, "md5_digest": "51fdc524c718422d51d036e847abeeba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26145, "upload_time": "2015-09-08T03:28:18", "url": "https://files.pythonhosted.org/packages/a8/ea/c4f6df9415f529a03fd99dead6c15fa71deb2d5da89186e7ba2ca77b1fb8/concept-py-0.29.0.tar.gz" } ], "0.30.0": [ { "comment_text": "", "digests": { "md5": "650f71dbfd04610de626d9388cb30163", "sha256": "e05c97b1c4c304038d828dbb5cf6c09f973bf61c67a1c68ba207a4062f37acd2" }, "downloads": -1, "filename": "concept-py-0.30.0.tar.gz", "has_sig": false, "md5_digest": "650f71dbfd04610de626d9388cb30163", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26348, "upload_time": "2015-09-14T03:44:34", "url": "https://files.pythonhosted.org/packages/17/66/c5082ebe241279db320b3ed1b76b42989a341495df2ef6cca65550754967/concept-py-0.30.0.tar.gz" } ], "0.31.0": [ { "comment_text": "", "digests": { "md5": "ce08194c8855080065f99acb2a8e771f", "sha256": "fc0994def0c5734028adff18d0cbc8b86f0df4af17fe77c445e6688413b2ca05" }, "downloads": -1, "filename": "concept-py-0.31.0.tar.gz", "has_sig": false, "md5_digest": "ce08194c8855080065f99acb2a8e771f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26647, "upload_time": "2015-09-15T03:44:53", "url": "https://files.pythonhosted.org/packages/1e/54/46c0c06796e44550e2c8cd8497a120216b0d8bcfdeaa01a4d3febb0c6d42/concept-py-0.31.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ce08194c8855080065f99acb2a8e771f", "sha256": "fc0994def0c5734028adff18d0cbc8b86f0df4af17fe77c445e6688413b2ca05" }, "downloads": -1, "filename": "concept-py-0.31.0.tar.gz", "has_sig": false, "md5_digest": "ce08194c8855080065f99acb2a8e771f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26647, "upload_time": "2015-09-15T03:44:53", "url": "https://files.pythonhosted.org/packages/1e/54/46c0c06796e44550e2c8cd8497a120216b0d8bcfdeaa01a4d3febb0c6d42/concept-py-0.31.0.tar.gz" } ] }