GET /api/v2/video/1230
HTTP 200 OK Vary: Accept Content-Type: text/html; charset=utf-8 Allow: GET, PUT, PATCH, HEAD, OPTIONS
{ "category": "SciPy 2012", "language": "English", "slug": "param-declarative-programming-using-parameters", "speakers": [ "Christopher E. Ball", "James A. Bednar" ], "tags": [ "General" ], "id": 1230, "state": 1, "title": "Param: Declarative programming using Parameters", "summary": "", "description": "As a scientific Python application grows, it can be increasingly difficult to\nuse and maintain, because of implicit assumptions made when writing each\ncomponent. Users can pass any possible data type for any argument, so code\neither fills up with assertions and tests to see what type of data has been\nsupplied, or else has undefined behavior for some datatypes or values. Once\nsoftware is exchanged with other users, obscure error messages or even\nincorrect results are the likely outcome. Programming languages that require\ntypes to be declared alleviate some of these issues, but are inflexible and\ndifficult to use, both in general and when specifying details of types (such\nas ranges of allowed values). Luckily, Python metaobjects make it possible to\nextend the Python language to offer flexible declarative typing, offering the\nbest of both worlds.\n\nThe Param module provides a clean, low-dependency, pure-Python implementation\nof declarative parameters for Python objects and functions, allowing library\nand program developers to specify precisely what types of arguments or values\nare allowed. A Parameter is a special type of class attribute that supports\ntype declarations (based on subtypes of a specified class, support for\nspecified methods (duck typing), or any other criterion that can be tested),\nranges, bounds, units, constant values, and enumerations. A Parameter has a\ndocstring (visible at the command line or in generated documentation),\ninherits its default value, documentation, etc. along the class hierarchy, and\ncan be set to dynamic values that generate a stream of numbers for use in\ncontrolling scientific code. In essence, a Parameter is a Python attribute\nextended to support clean, simple, robust, maintainable, and declarative\nscientific programming.\n\nParam has been under continuous development and use since 2002 as part of the\nTopographica simulator (, but is now being released as a\nseparate package due to demand from users who want similar functionality in\ntheir own code. Param is very similar in spirit to the Enthought Traits\nlibrary, despite having been developed independently, and offers much of the\nsame functionality. Param is particularly useful for people who find that\nTraits is difficult to integrate into their work flow, since it consists of\nonly two pure Python files with no dependencies outside the standard library.\nParam is also useful for people building Tk applications, and provides an\noptional Tk property-sheet interface that can automatically generate a GUI\nwindow for viewing and editing an object's Parameters.\n\nParam is freely available under a BSD license from:\n[](\n\n", "quality_notes": "", "copyright_text": "CC BY-SA", "embed": "<object width=\"640\" height=\"390\"><param name=\"movie\" value=\";hl=en_US\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\";hl=en_US\" type=\"application/x-shockwave-flash\" width=\"640\" height=\"390\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object>", "thumbnail_url": "", "duration": null, "video_ogv_length": null, "video_ogv_url": null, "video_ogv_download_only": false, "video_mp4_length": null, "video_mp4_url": "", "video_mp4_download_only": false, "video_webm_length": null, "video_webm_url": "", "video_webm_download_only": false, "video_flv_length": null, "video_flv_url": "", "video_flv_download_only": false, "source_url": "", "whiteboard": "", "recorded": "2012-07-19", "added": "2012-08-31T16:35:46", "updated": "2014-04-08T20:28:27.114" }