{"id":20614447,"url":"https://github.com/junteudjio/runtimedocs","last_synced_at":"2025-10-04T10:39:54.293Z","repository":{"id":57463262,"uuid":"146712184","full_name":"junteudjio/runtimedocs","owner":"junteudjio","description":"runtimedocs decorator helps you understand how your code behaves at runtime.","archived":false,"fork":false,"pushed_at":"2018-09-03T07:56:03.000Z","size":93,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-22T21:35:10.249Z","etag":null,"topics":["debugging","debugging-tool","logging","logging-library","python","runtime","testing"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junteudjio.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-30T07:25:26.000Z","updated_at":"2018-09-13T05:00:30.000Z","dependencies_parsed_at":"2022-09-13T11:01:08.812Z","dependency_job_id":null,"html_url":"https://github.com/junteudjio/runtimedocs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/junteudjio/runtimedocs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junteudjio%2Fruntimedocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junteudjio%2Fruntimedocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junteudjio%2Fruntimedocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junteudjio%2Fruntimedocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junteudjio","download_url":"https://codeload.github.com/junteudjio/runtimedocs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junteudjio%2Fruntimedocs/sbom","scorecard":{"id":542972,"data":{"date":"2025-08-11","repo":{"name":"github.com/junteudjio/runtimedocs","commit":"5ef9ad072d4b03616bee24019da4d0ae7de49b8a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T08:42:23.812Z","repository_id":57463262,"created_at":"2025-08-20T08:42:23.813Z","updated_at":"2025-08-20T08:42:23.813Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278302556,"owners_count":25964519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging","debugging-tool","logging","logging-library","python","runtime","testing"],"created_at":"2024-11-16T11:12:48.082Z","updated_at":"2025-10-04T10:39:54.275Z","avatar_url":"https://github.com/junteudjio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=========================================================\nruntimedocs:  understand how your code behaves at runtime\n=========================================================\n\n.. image:: https://travis-ci.com/junteudjio/runtimedocs.svg\n   :alt: build status\n   :target: https://travis-ci.org/junteudjio/runtimedocs\n\n.. image:: https://coveralls.io/repos/github/junteudjio/runtimedocs/badge.svg\n   :alt: coverage\n   :target: https://coveralls.io/github/junteudjio/runtimedocs\n\n\n.. image:: https://img.shields.io/pypi/v/runtimedocs.svg\n   :target: https://pypi.org/pypi/runtimedocs\n   :alt: downloads\n\n.. image:: https://img.shields.io/pypi/pyversions/runtimedocs.svg\n   :target: https://pypi.org/pypi/runtimedocs\n   :alt: downloads\n\nDocumentation: `runtimedocs.readthedocs.org \u003chttp://runtimedocs.readthedocs.org/en/latest/\u003e`_\n---------------------------------------------------------------------------------------------\n\n-----\nWhat?\n-----\nruntimedocs is a Python library that offers a sensible, customizable, human-friendly way to get a sense of what really happens during a function call. It implements a decorator which wraps your function/class and prints its runtime behavior and also saves it to a log file usually named as follows: module_name.function_name.rundimedocs.log.\n\n----\nWhy?\n----\nIf you ever found yourself in one or more of these situations then runtimedocs could really help:\n\n- you would like to know which function called your function(the one you decorated using runtimedocs).\n- you would like to know what were the positional and key-word arguments received by your function at runtime.\n- you want to write docstrings for a (legacy)function with unclear parameters naming and would like to know more about them to help you get started. For instance if that function expect a parameter named \"x\", you are much more advanced if you know that during runtime \"x\" is usually of type=list, of value=['bar', 'foo'], of len=2.\n- likewise, you may want to debug a function but ignore what are its expected input parameters and returned values (ie: their types and values). A good idea could be to decorate that function in your running environment and runtimedocs will log both the successfull and failling calls along with their inputs(types, and values) so you can know which  paramters actually break your functiom.\n- you would like to know if a function is multi output(eg: return foo, bla) or single output(eg: return foo). along with the types and values of the returned variables.\n- your function runs well on a given host but breaks on another, runtimedocs tells you the hostname of the computer running your function.\n\n--------\nFeatures\n--------\n\n- what was the expected signature of a function/class.\n- what was the actual signature used when calling that function/class at run time.\n- where was the function/class declared in and called from.\n- what's the hostname of the machine running the code.\n- what are the types, names, values of the input parameters and returned values of that function.\n- when relevant also add specific information like their : len, signature, inheritance_tree, etc ...\n- what were the positional/key-word arguments at call time.\n- has the function exited successfully or ran into an exception.\n- how long it took to run in case of success.\n- display what was the exception otherwise and raises it back to not side-effect your program.\n\nAll these information are saved in a file usually named as follows: module_name.function_name.rundimedocs.log\nAdditionally they can be printed on the terminal if the verbosity level is set to 1.\nYou can easily toggle the runtimedocs decorator off by setting the env variable DISABLE_RUNTIMEDOCS to True.\n\n----------\nQuickstart\n----------\n\n.. code-block:: bash\n\n    $ pip install runtimedocs\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from runtimedocs import runtimedocs\n\n    \u003e\u003e\u003e #decorate the function/class of your choice\n    \u003e\u003e\u003e @runtimedocs(verbosity=1, timing_info=False) #verbosity=1 means also print the logs on terminal. timing_info=False means don't log time.\n    ... def myadd(a, b, f=sum, not_used=None):\n    ...     return f([a, b])\n    ...\n    \u003e\u003e\u003e @runtimedocs(verbosity=1, timing_info=False)\n    ... def mysum(elements):\n    ...     return sum(elements)\n    ...\n    \u003e\u003e\u003e #call the decorated function and see the runtime documentation printed on the terminal and saved to a file called: __main__.myadd.runtimedocs.log\n    \u003e\u003e\u003e myadd(1, 2, f=sum)\n    ####################################################################################################\n    #calling [myadd] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = myadd(a, b, f=\u003cbuilt-in function sum\u003e, not_used=None)\n    #called   signature = myadd(\u003cclass 'int'\u003e, \u003cclass 'int'\u003e, f=\u003cclass 'builtin_function_or_method'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 2\n    #    #0:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 1\n    #-----\n    #    #1:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 2\n    #-----\n    #Number of key word paramters: 1\n    #    f:\n    #     type = \u003cclass 'builtin_function_or_method'\u003e\n    #     name = sum\n    #     signature = (iterable, start=0, /)\n    #     fullargspec = FullArgSpec(args=['iterable', 'start'], varargs=None, varkw=None, defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})\n    #     isbuiltin = True\n    #-----\n    #----------------------------------------------------------------------------------------------------\n    #[myadd] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\n    \u003e\u003e\u003e mysum([1, 2]) #logs printed and saved to a file called: __main__.mysum.runtimedocs.log\n    #####################################################################################################\n    #calling [mysum] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = mysum(elements)\n    #called   signature = mysum(\u003cclass 'list'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 1\n    #    #0:\n    #     type = \u003cclass 'list'\u003e\n    #     len = 2\n    #     value = [1, 2]\n    #-----\n    #Number of key word paramters: 0\n    #----------------------------------------------------------------------------------------------------\n    #[mysum] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\n    \u003e\u003e\u003e mysum(el for el in [1,2])\n    ######################################################################################################\n    #calling [mysum] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = mysum(elements)\n    #called   signature = mysum(\u003cclass 'generator'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 1\n    #    #0:\n    #     type = \u003cclass 'generator'\u003e\n    #     value = \u003cgenerator object \u003cgenexpr\u003e at 0x107b664f8\u003e\n    #-----\n    #Number of key word paramters: 0\n    #----------------------------------------------------------------------------------------------------\n    #[mysum] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\n\n------------\nUser's Guide\n------------\n\n\nDisabling runtimedocs\n=====================\n\nDisable runtimedocs globally:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e import os\n    \u003e\u003e\u003e #set the DISABLE_RUNTIMEDOCS to '1' which will casted to True (like any other non-empty string).\n    \u003e\u003e\u003e os.environ['DISABLE_RUNTIMEDOCS'] = '1'\n    \u003e\u003e\u003e #with DISABLE_RUNTIMEDOCS env variable set to True, runtimedocs decorator doesn't wrap your function, so calling these functions wont't print or save any log file.\n    \u003e\u003e\u003e myadd(1, 2)\n    \u003e\u003e\u003e mysum([1, 2])\n\nDisable runtimedocs globally but force enable locally:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e import os\n    \u003e\u003e\u003e #set the DISABLE_RUNTIMEDOCS to '1' which will casted to True (like any other non-empty string).\n    \u003e\u003e\u003e os.environ['DISABLE_RUNTIMEDOCS'] = '1'\n    \u003e\u003e\u003e @runtimedocs(verbosity=1, timing_info=False, force_enable_runtimedocs=True)\n    ... def mysum(elements):\n    ...     return sum(elements)\n    ...\n    \u003e\u003e\u003e myadd(1, 2) #no logs for myadd\n    \u003e\u003e\u003e mysum([1, 2]) #force_enable_runtimedocs is set to True for mysum so runtimedocs will log the function call.\n    #####################################################################################################\n    #calling [mysum] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = mysum(elements)\n    #called   signature = mysum(\u003cclass 'list'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 1\n    #    #0:\n    #     type = \u003cclass 'list'\u003e\n    #     len = 2\n    #     value = [1, 2]\n    #-----\n    #Number of key word paramters: 0\n    #----------------------------------------------------------------------------------------------------\n    #[mysum] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\nCustomizations\n==============\n\nCustomized how runtimedocs parse a given type:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from collections import OrderedDict\n    \u003e\u003e\u003e # define the function to parse a type as you like, preferably return an orderdict to see them printed in the order you want.\n    \u003e\u003e\u003e def my_custom_list_parser_func(L):\n    ...    return OrderedDict(\n    ...        bar = 'bar',\n    ...        foo = 'foo',\n    ...        mylist_type = type(L),\n    ...        mylist_len = len(L),\n    ...        mylist_repr =repr(L))\n    ...\n    \u003e\u003e\u003e custom_parsers_dict = {\"\u003cclass 'list'\u003e\": my_custom_list_parser_func}\n    \u003e\u003e\u003e @runtimedocs(verbosity=1, timing_info=False, custom_types_parsers_dict=custom_parsers_dict)\n    ... def mysum(elements):\n    ...     return sum(elements)\n    ...\n    \u003e\u003e\u003e mysum([1,2])\n    #####################################################################################################\n    #calling [mysum] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = mysum(elements)\n    #called   signature = mysum(\u003cclass 'list'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 1\n    #    #0:\n    #     bar = bar\n    #     foo = foo\n    #     mylist_type = \u003cclass 'list'\u003e\n    #     mylist_len = 2\n    #     mylist_repr = [1, 2]\n    #-----\n    #Number of key word paramters: 0\n    #----------------------------------------------------------------------------------------------------\n    #[mysum] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\nAggregate all the logs for multiple functions in a same file:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e import logging\n    \u003e\u003e\u003e file_handler = logging.FileHandler('aggregation.runtimedocs.log')\n\n    \u003e\u003e\u003e @runtimedocs(extra_logger_handlers=[file_handler])\n    \u003e\u003e\u003e def myadd(a, b, f=sum, not_used=None):\n    ...     return f([a, b])\n    ...\n    \u003e\u003e\u003e #even faster, you can also directly pass the string as an extra_hanlder\n    \u003e\u003e\u003e @runtimedocs(extra_logger_handlers=[file_handler])\n    \u003e\u003e\u003e def mysum(elements):\n    ...     return sum(elements)\n    ...\n    \u003e\u003e\u003e # after running these two functions 3 log files will be created: 2 for each function as usual and a 3rd one for the agregated logs\n    \u003e\u003e\u003e mysum([1,2])\n    \u003e\u003e\u003e myadd(1, 2, f=sum)\n    \u003e\u003e\u003e # content of aggregation.runtimedocs.log :\n    #####################################################################################################\n    #calling [myadd] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = myadd(a, b, f=\u003cbuilt-in function sum\u003e, not_used=None)\n    #called   signature = myadd(\u003cclass 'int'\u003e, \u003cclass 'int'\u003e, f=\u003cclass 'builtin_function_or_method'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 2\n    #    #0:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 1\n    #-----\n    #    #1:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 2\n    #-----\n    #Number of key word paramters: 1\n    #    f:\n    #     type = \u003cclass 'builtin_function_or_method'\u003e\n    #     name = sum\n    #     signature = (iterable, start=0, /)\n    #     fullargspec = FullArgSpec(args=['iterable', 'start'], varargs=None, varkw=None, defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})\n    #     isbuiltin = True\n    #-----\n    #----------------------------------------------------------------------------------------------------\n    #[myadd] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n    #####################################################################################################\n    #calling [mysum] declared inside module [__main__]\n    #caller name: [runtimedocs.core]\n    #ran inside: hostname=[Juniors-MBP.lan]\n    #----------------------------------------------------------------------------------------------------\n    #declared signature = mysum(elements)\n    #called   signature = mysum(\u003cclass 'list'\u003e)\n    #----------------------------------------------------------------------------------------------------\n    #Number of positional paramters: 1\n    #    #0:\n    #     type = \u003cclass 'list'\u003e\n    #     len = 2\n    #     value = [1, 2]\n    #-----\n    #Number of key word paramters: 0\n    #----------------------------------------------------------------------------------------------------\n    #[mysum] ran successfully in [0.0]seconds and its returned value has these specs:\n    #single output return statement:\n    #     type = \u003cclass 'int'\u003e\n    #     value = 3\n    #-----\n\nDocumentation/Api\n-----------------\n\nFurther documentation can be found at `runtimedocs.readthedocs.org \u003chttp://runtimedocs.readthedocs.org/en/latest/\u003e`_\n\n\nBugs/Requests\n-------------\n\nPlease use the `GitHub issue tracker \u003chttps://github.com/junteudjio/runtimedocs/issues\u003e`_ to submit bugs or request features.\n\n\nTodos\n-----\n\nAdd changes to handle Python2.\n\n\nContributing\n------------\n\nContributions are welcome, especially with custom type parsers.  See `runtimedocs_types_parsers \u003chttps://github.com/junteudjio/runtimedocs_types_parsers\u003e`_ for what's currently supported.\n\n\nLicense\n-------\n\nCopyright Junior Teudjio Mbativou, 2018.\n\nDistributed under the terms of the `MIT`_ license, runtimedocs is a free and open source software.\n\n.. _`MIT`: https://github.com/junteudjio/runtimedocs/blob/master/LICENSE","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunteudjio%2Fruntimedocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunteudjio%2Fruntimedocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunteudjio%2Fruntimedocs/lists"}