A
Retro kitsch snackwave aesthetic post-ironic woke swag freegan. Ramps semiotics vinyl four dollar toast, pok pok craft beer fanny pack forage health goth. Semiotics normcore offal williamsburg food truck mixtape skateboard glossier artisan +1 snackwave fingerstache dreamcatcher. Cliche VHS fanny pack affogato. Vinyl biodiesel fashion axe craft beer actually occupy flexitarian. Flannel affogato echo park banh mi, tattooed edison bulb organic wayfarers ethical four loko hammock listicle prism.
Pabst irony raclette.
Retro kitsch snackwave aesthetic post-ironic woke swag freegan. Ramps semiotics vinyl four dollar toast, pok pok craft beer fanny pack forage health goth. Semiotics normcore offal williamsburg food truck mixtape skateboard glossier artisan +1 snackwave fingerstache dreamcatcher. Cliche VHS fanny pack affogato. Vinyl biodiesel fashion axe craft beer actually occupy flexitarian. Flannel affogato echo park banh mi, tattooed edison bulb organic wayfarers ethical four loko hammock listicle prism.s


Acknowledgements NowSecure Workstation UI Icons Android Agent iOS Agent Licenses
NowSecure Workstation and NowSecure Workstation Agent software (collectively “NowSecure Workstation”) are copyrighted works by NowSecure, LLC and may be used only under license. By downloading and/or using NowSecure Workstation you agree to the NowSecure Workstation Software License terms, or such license terms as formally agreed between your organization and NowSecure if such terms supersede.
Any unauthorized distribution, modification, license control bypass, or use of NowSecure Workstation for non-licensed purpose is strictly prohibited.
Third-party components, software dependencies, and aggregated programs associated with NowSecure Workstation are listed below, including the licenses of such third-party software and locations to download source code if applicable.
© Copyright 2017 NowSecure, Inc. All rights reserved.
Portions of this software may utilize the following copyrighted material, the use of which is hereby acknowledged.
PyGTK http://pygtk.org/ GNU LGPL (see below)
Bootstrap http://twitter.githu.com/bootstrap/ Copyright 2012 Twitter, Inc. Apache 2.0 License (see below)
Glyphicons http://glyphicons.com/ Attribution-NoDerivs 3.0 Unported (CC BY-ND 3.0) (see below)
Tango desktop icons http://tango.freedesktop.org/ Public domain, Tango Desktop Project
jQuery http://jquery.org/ Copyright 2013 jQuery Foundation and other contributors MIT license (see below)
DataTables jQuery plugin http://datatables.net/ Copyright © 2008-2012, Allan Jardine, All rights reserved. Modified BSD license (see below)
Jinja2 http://jinja.pocoo.org/ Copyright © 2009 by the Jinja Team, see AUTHORS for more details. Modified BSD license (see below)
PersistentDict http://code.activestate.com/recipes/576642-persistent-dict-with-multiple-standard-file-format/ MIT license (see below)
python-magic http://pypi.python.org/pypi/python-magic/ Python Software Foundation (PSF) license (see below)
Pygments http://pygments.org/ Copyright © 2006-2012 by the respective authors (see AUTHORS file). Modified BSD license (see below)
VTE http://developer.gnome.org/vte/ GNU LGPL (see below)
poster http://atlee.ca/software/poster/ Copyright © 2011 Chris AtLee MIT license (see below)
PyCrypto Public domain
Python-RSA Copyright 2011 Sybren A. Stüvel<EMAIL_ADDRESS>Apache 2.0 License (see below)
class-dump-z http://code.google.com/p/networkpx/ Modified BSD license (see below)
PDF Icon https://www.iconfinder.com/Lexter
Artifact viewer PICOL - http://www.picol.org
Background Visual Pharm - http://icons8.com/
Rest of the icons used is under public domain and is the property of their respective owners.
NanoHTTPD Copyright © 2001,2005-2012 Jarno Elonen<EMAIL_ADDRESS>and Copyright © 2010 Konstantinos Togias<EMAIL_ADDRESS>Modified BSD license (see below)
Shell © JJ Ford (http://jjnford.com) MIT License (see below)
jsonls native binary * replace function © rampion (http://stackoverflow.com/a/780024) Public domain * ls from the AOSP (http://www.netmite.com/android/mydroid/system/core/toolbox/) Modified BSD license (see below)
CocoaHTTPServer, CocoaLumberjack Copyright © 2011, Deusty, LLC All rights reserved.
CocoaAsyncSocket Public domain
Listing running processes based on ‘ps’ source http://opensource.apple.com/source/adv_cmds/adv_cmds-149/ps/print.c) 4-clause BSD license (see below)
LibArchive
Copyright © 2003-2009
Lua Copyright © 1994–2012 Lua.org, PUC-Rio. MIT license (see below)
OpenSSL
Copyright © 1998-2011 The OpenSSL Project. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
All advertising materials mentioning features or use of this software must display the following acknowledgment: “This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
The names “OpenSSL Toolkit” and “OpenSSL Project” must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact<EMAIL_ADDRESS>Products derived from this software may not be called “OpenSSL” nor may “OpenSSL” appear in their names without prior written permission of the OpenSSL Project.
Redistributions of any form whatsoever must retain the following acknowledgment: “This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)"
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com).
Original SSLeay License
Copyright © 1995-1998 Eric Young<EMAIL_ADDRESS>All rights reserved.
This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL.
This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com).
Copyright remains Eric Young’s, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: “This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)” The word ‘cryptographic’ can be left out if the rouines from the library being used are not cryptographic related :-). 4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: “This product includes software written by Tim Hudson (tjh@cryptsoft.com)”
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.]
jQueryTerminal GNU LGPL (see below)
jQuery Stream Copyright 2011, Donghwan Kim Apache license (see below)
Jansson JSON library - MIT license MobileSubstrate - GPLv3 license
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.
“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.
An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.
A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.
The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.
The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:
a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.
The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license document.
You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:
a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)
You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy’s public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.
Apache License
Version 2.0, January 2004
[http://www.apache.org/licenses/](http://www.apache.org/licenses/)
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Definitions.
“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.
“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
© You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS.
 THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
a. “Adaptation” means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image (“synching”) will be considered an Adaptation for the purpose of this License. b. “Collection” means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. c. “Distribute” means to make available to the public the original and copies of the Work through sale or other transfer of ownership. d. “Licensor” means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. e. “Original Author” means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. f. “Work” means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. g. “You” means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. h. “Publicly Perform” means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. i. “Reproduce” means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and, b. to Distribute and Publicly Perform the Work including as incorporated in Collections. c. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalties for any
exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme can be waived, the Licensor waives the
exclusive right to collect such royalties for any exercise by You
of the rights granted under this License; and,
iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. b. If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution (“Attribution Parties”) in Licensor’s copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(b) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author’s honor or reputation.
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
Limitation on Liability.
Termination
a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. d. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. e. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be
liable to You or any party on any legal theory for any damages
whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this
license. Notwithstanding the foregoing two (2) sentences, if Creative
Commons has expressly identified itself as the Licensor hereunder, it
shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the
Work is licensed under the CCPL, Creative Commons does not authorize
the use by either party of the trademark "Creative Commons" or any
related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage
guidelines, as may be published on its website or otherwise made
available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of this License.
Creative Commons may be contacted at http://creativecommons.org/.
The MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
BSD License
Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Neither the name of [copyright holder] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of [copyright holder].

Modified BSD License
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
Python License, Version 2 (Python-2.0)
This LICENSE AGREEMENT is between the Python Software Foundation (“PSF”), and the Individual or Organization (“Licensee”) accessing and otherwise using this software (“Python”) in source or binary form and its associated documentation.
Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF’s License Agreement and PSF’s notice of copyright, i.e., “Copyright © 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved” are retained in Python alone or in any derivative version prepared by Licensee.
In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.
PSF is making Python available to Licensee on an “AS IS” basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
This License Agreement will automatically terminate upon a material breach of its terms and conditions.
Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement.
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
This LICENSE AGREEMENT is between BeOpen.com (“BeOpen”), having an office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the Individual or Organization (“Licensee”) accessing and otherwise using this software in source or binary form and its associated documentation (“the Software”).
Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any derivative version prepared by Licensee.
BeOpen is making the Software available to Licensee on an “AS IS” basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
This License Agreement will automatically terminate upon a material breach of its terms and conditions.
This License Agreement shall be governed by and interpreted in all respects by the law of the State of California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This License Agreement does not grant permission to use BeOpen trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party. As an exception, the “BeOpen Python” logos available at http://www.pythonlabs.com/logos.html may be used according to the permissions granted on that web page.
By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and conditions of this License Agreement.
CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1)
IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
BY CLICKING ON “ACCEPT” WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT.
This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 (“CNRI”), and the Individual or Organization (“Licensee”) accessing and otherwise using Python 1.6, beta 1 software in source or binary form and its associated documentation, as released at the www.python.org Internet site on August 4, 2000 (“Python 1.6b1”).
Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6b1 alone or in any derivative version, provided, however, that CNRIs License Agreement is retained in Python 1.6b1, alone or in any derivative version prepared by Licensee.
Alternately, in lieu of CNRIs License Agreement, Licensee may substitute the following text (omitting the quotes): “Python 1.6, beta 1, is made available subject to the terms and conditions in CNRIs License Agreement. This Agreement may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22⁄1011. This Agreement may also be obtained from a proxy server on the Internet using the URL:http://hdl.handle.net/1895.22/1011".
In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6b1 or any part thereof, and wants to make the derivative work available to the public as provided herein, then Licensee hereby agrees to indicate in any such work the nature of the modifications made to Python 1.6b1.
CNRI is making Python 1.6b1 available to Licensee on an “AS IS” basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
This License Agreement will automatically terminate upon a material breach of its terms and conditions.
This License Agreement shall be governed by and interpreted in all respects by the law of the State of Virginia, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
By clicking on the “ACCEPT” button where indicated, or by copying, installing or otherwise using Python 1.6b1, Licensee agrees to be bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
Copyright © 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.


| Home | Language | Syntax | Blocks | Program Execution | Errors |
Whether you realize it or not, you have already written your first Vision program. A Program is merely a set of one or more Vision expressions that are viewed together as a unit. Most of the programs you have seen so far have asked Vision to perform a single request. There are situations where you would like to perform a set of operations, one after another. Vision provides a simple mechanism for accomplishing this.
The ';' character is used to separate expressions within a Vision program. Each expression in a program is known as a Statement. Each statement is executed in sequence. Programs always return the value of the last statement executed. This value is automatically printed by Vision. For example, the following program can be used to calculate a value and print out a descriptive message as well as the result:
!sum <- 2 + 2 ; "The Answer Is: " print ; sum printNL ;This program contains 3 statements separated by the ; character. The first statement computes the sum of 2 + 2 and saves the result in the variable sum. The second statement prints the string containing the label "The Answer is: ". The final statement prints the sum followed by a carriage return.
Some expressions that can be written as a single expression, can be subdivided into more manageable pieces by creating multiple expressions. For example:
!count <- mylist union: yourlist . exclude: autolist . select: [ score > 20] . count ;could be rewritten as:
!ourlist <- mylist union: yourlist ; !universe <- ourlist exclude: autolist ; !optimalList <- universe select: [score > 20 ] ; !count <- optimalList count ;
A Block is a program that represents a deferred sequence of actions. Syntactically, a block is a program surrounded by square brackets. The general form for a block is illustrated below:
[ statement 1 ; statement 2 ; . . . ]The block will be executed when it receives the unary message value. For example, the following two programs have the same effect:
!index <- 17 ; :index <- index + 1 ; index print ; and !index <- 17 ; [:index <- index + 1 ] value ; index print ;Blocks always return the value of the last statement executed.
Suppose every month you create a new screening universe which consists of the union of two lists that have been created by two other individuals at your firm. You call this list currentList. You also produce a second list that represents the companies added to currentList. To accomplish this, you start out with two empty lists that will be used to hold a current list and a list of changes. You also create a block which will be used to update these lists:
!currentList <- List new ; !changeList <- List new ; !myProgram <- [ !oldList <- currentList; :currentList <- joesList union: marysList; :changeList <- currentList exclude: oldList; ] ;Each month, after Joe and Mary have updated their lists, you can execute this program by typing the expression:
myProgram valueYou can now access the updated values of the variables currentList and changeList.
You have actually already seen another use for blocks. In the expression:
universe select: [ score > 20 ]the argument to the select: message is actually a block. When universe receives the message select:, it evaluates the block once for each of the elements contained in the list.
Messages such as select: take advantage of the block's deferred execution. Essentially, the block is used to store the program to be executed without actually running it. The select: and other messages are defined to evaluate the block when necessary.
More detailed information about blocks is available.
Control Structures are used in all programming languages to control the order of expression evaluation. By default, all statements in a Vision program are evaluated sequentially. Blocks can be used to create new control structures that alter the flow of a program. These control structures are invoked either by sending a message to a block or by sending a message with one or more blocks as arguments.
TRUE and FALSE objects respond to several messages that support conditional execution:
For example:
myList count > 100 ifTrue: [ "This is a big list." ] ifFalse: [ "This is a small list." ]If the number of elements in the list myList is greater than 100 the text "This is a big list" will be displayed; otherwise, the text "This is a small list" will be displayed.
The value returned by these messages is the value of the block that was executed. In the example:
!result <- myList count > 100 ifTrue: [ 100 ] ifFalse: [ -100 ] else: [ 0 ]the variable result will be assigned to the value 100, -100, or 0 depending on the number of elements in myList.
The ifTrue: or ifFalse: message can be used if there is only one conditional consequence of interest. For example:
count <= cutoff ifTrue: [ :total <- total + 100 ]This expression is identical to:
count <= cutoff ifTrue: [ :total <- total + 100 ] ifFalse: [ NA ]Since the arguments in these messages are blocks, they can contain complex expressions as well, including nested control structures as shown below:
myList count > 100 ifTrue: [ myList count > 1000 ifTrue: [ "This is a very big list." ] ifFalse: [ "This is a big list." ] ] ifFalse: [ "This is a small list." ]This program will return one of the 3 strings, depending on the number of elements in the list myList. Since there is no terminating ; at the end of this program, the returned string will print.
It is often useful to repeat an operation until a particular event is reached. This conditional repetition of an activity is provided by sending the whileTrue: message to a block with a second block as its argument. For example, this message could be used to print out the squares of the first ten numbers as shown below:
!maxCount <- 10 ; !count <- 1 ; [ count <= maxCount ] whileTrue: [ count print ; (count * count ) printNL ; :count <- count + 1 ; ] ;The whileTrue: message is defined to evaluate the recipient block. If it returns the value TRUE, the block supplied as a parameter is evaluated and the whileTrue: message is invoked again. Otherwise, the message terminates.
Warning!! The condition in the recipient block is a test on the value of the count variable which is updated in the block supplied as a parameter. The form for updating this variable is :count not !count. If you used !count to update the variable, you would actually be defining a new variable local to the block in which it is defined. As a result, the variable representing the counter would never get updated and your whileTrue: would never terminate.
You can write new Vision methods that create additional control structures. The whileTrue: message could be written as illustrated below:
Block defineMethod: [ | whileTrue: aBlock| !test <- ^self value ; #- evaluate the recipient test ifTrue: #- if it evaluates to TRUE [ aBlock value; #- evaluate the parameter ^self whileTrue: aBlock #- invoke whileTrue again ] #- otherwise do nothing ] ;
More detailed information about control structure messages is available.
Formatting conventions are not that important when you are creating expressions that you are executing immediately; however, when you define programs that you plan to reuse, you should concentrate on developing a clear, consistent style so that you can read and modify them at a later date.
Programs can be created using spaces, tabs, and carriage returns wherever needed to enhance readability. For example, multiple keyword messages are often written with each keyword-argument pair on different lines, as shown below:
value within: 10 percentOf: oldvalue or condition ifTrue: [ ] ifFalse: [ ] else: [ ]Upper and lower case letters are distinct characters in Vision. A convention evident in the examples above is that names formed by concatenating several English words capitalize each word following the first one. By convention, names that identify classes usually begin with an upper case letter. These conventions are not enforced by Vision.
The # character is used to begin a comment. All characters appearing on a line that follow this character are ignored. For example:
#################### # Sample Program Using Comments #################### !x <- 10 ; # create variable x to hold first value !y <- 5 ; # create variable y to hold second value x + y # print result
Blocks can be named by providing a valid selector enclosed within vertical bars (i.e., the '|' character) as shown below:
[ | sample | statement1 ; statement2 ; . . . ] ; [ | sampleP1: a P2: b | statement1 ; statement2 ; "Parameter 1: " print ; a print ; "Parameter 2: " print ; b print ; . . . ] ;The first example names the block sample. This is equivalent to defining a block with no parameters. This is the format used to define methods that do not require parameters.
The second example defines a block which requires 2 parameters to execute. You use the valueWith: message to evaluate a block with one parameter, the valueWith:and: to evaluate a block with two parameters, and so on. For example:
!block <- [ | sampleP1: a P2: b | "Parameter 1: " print ; a printNL ; "Parameter 2: " print ; b printNL ; ] ; block valueWith: 10 and: 5 produces: Parameter 1: 10 Parameter 2: 5The names a and b are Local Variables that are only available inside the block. They take on the values supplied when you run the method. You can use the variables within the block just like any other messages.
If a block is defined to require parameters and you do not supply the correct number, you will get an error message. For example, if you supplied the above block with a single value:
block valueWith: 10You would see the error message:
>>> Parameter 'a' Unavailable <<<Note that stand-alone blocks such as the one defined here do not utilize the full block name, in this case sampleP1:P2:. This name is important when the block is used to define methods.. If you are using the block as a stand-alone, you can use the following short-hand to define the block:
!block <- [ | :a :b | "Parameter 1: " print ; a printNL ; "Parameter 2: " print ; b printNL ; ] ;This block works exactly the same way as the previously named block in that it defines two parameters named a and b. Execution is identical to before:
block valueWith: 10 and: 5and produces the same results.
The method defineMethod: requires a named block as its parameter. To define a method that requires no parameters, use the form:
object defineMethod: [ | messageName | statement1 ; statement2 ; ] ;For example, to define a method that prints the count of the number of elements in a list use:
List defineMethod: #-- name the method printCount with 0 parameters [ | printCount | count print ; ] ;This defines the method printCount as a message for the class List that requires 0 parameters. To run it use:
!myList <- 1, 2, 3 ; myList printCount ; #- prints 3To define a method that adds a supplied value to the list count and prints the result, use:
List defineMethod: #-- name the method printCountPlus: with 1 parameters [ | printCountPlus: n | (count + n) print ; ] ;This defines the method printCount: as a message for the class List that requires 1 parameter. To run it use:
!myList <- 1, 2, 3 ; myList printCountPlus: 5 ; #- prints 8To define a method that adds a supplied value to the list count, multiplies the result by a second supplied value, and prints the result, use:
List defineMethod: #-- name the method printCountPlus:times: with 2 parameters [ | printCountPlus: p1 times: p2 | ( (count + p1) * p2 ) print ; ] ;This defines the method printCount:times: as a message for the class List that requires 2 parameters. To run it use:
!myList <- 1, 2, 3 ; myList printCountPlus: 5 times: 2 ; #- prints 16More detailed information about messages in general and about method execution is available.
| Copyright © 1997 Innovative Systems Techniques, Inc. | Updated June 19, 1997 |


Survey Form
Thank You for taking the time to help us improve the platform.
Full Name
Email address
Password
Age (optional)
Which option best describes your current role?
Select an option
Student
Full Time Job
Full Time Learner
Prefer No to Say
Other
Would you recommend freeCodeCamp to a friend?
Definitely
Maybe
Not Sure
What is your favorite feature of freeCodeCamp?
Select an option
Challenges
Project
Community
Open Source
What would you like to see improved? (Check all that apply)
Front-End Projects
Back-End Projects
Data Visulization
Challenges
Open Source Community
Gitter help rooms
Videos
City Meetups
Wiki
Forum
Additional Courses
Any Comments or Suggestion?


search_alignment_space module¶
Contains functions for searching for alignments that support given tree topologies (comparing alternative topologies).
-
class
search_alignment_space.
TaxonomicInfo
(superbranch, supergroup, group, species)[source]¶ Bases:
object
Class for storing taxonomic info.
-
search_alignment_space.
define_nodestyles_dict_for_colourcoding
()[source]¶ Define node styles for different nodes of interest that need to be colour-coded.
-
search_alignment_space.
define_textface_for_labeling_stem
(clade_name)[source]¶ Define ete3 textface styles for different nodes of interest that need to be labeled.
-
search_alignment_space.
get_abayes_support_for_node_from_another_tree
(node, t_with_abayes)[source]¶ Take a node from one ete3 TreeNode object and find the corresponding node in another ete3 TreeNode object and return the support value for the node in the second tree (the abayes support value).
-
search_alignment_space.
get_ali_length
(alignment)[source]¶ Take a filepath to an alignment file in nexus format and return the length of the sequences in the alignment.
-
search_alignment_space.
get_clade_name_from_model2
(type_seq_name, type_seqs_dict)[source]¶ Return clade name for given type sequence name and type seqs info file (from models directory).
-
search_alignment_space.
get_constraint_tree_fp
(outalifpnex)[source]¶ Take a path to an alignment, and return a path to use for a corresponding contraint tree topology.
-
search_alignment_space.
get_corresponding_node
(node, tree)[source]¶ Return the ete3 TreeNode object in a tree that corresponds to a given node.
-
search_alignment_space.
get_essential_taxa_list
(essential_taxa_file)[source]¶ Take a path to a file listing essential taxa (taxonomy terms) and return a list of the terms in the file.
-
search_alignment_space.
get_list_of_leaf_names_for_node
(node)[source]¶ Given an ete3 TreeNode object, return a list of terminal/leaf node names.
-
search_alignment_space.
get_ml_tree_info_dict
(ml_tree_path, type_seqs_dict, annotated_tree_outpath)[source]¶ Take a path to an ML tree and return a dict with information about lengths and supports of relevant branches.
Return a dictionary with keys as type sequence names and values lists with branch length ratios and branch support values for the respective clades in the input tree.
-
search_alignment_space.
get_names_of_dispensable_seqs_in_clade
(clade, ml_tree_info_dict, essential_taxa)[source]¶ Take a clade name and a dictionary of info for the tree that it came from, and determine which ones are dispensable taxonomically.
-
search_alignment_space.
get_new_type_seqs_dict
(seqname, ml_tree_info_dict, type_seqs_dict)[source]¶ Take a type sequence name dictionary and a sequence name, and return a new dictionary with the sequence replaced with another sequence if necessary.
-
search_alignment_space.
get_nodes_from_actual_tree_obj
(t3, nodes_of_interest)[source]¶ Get nodes in the given tree object that correspond to the nodes in a given list of nodes from another tree object, and return as a list.
-
search_alignment_space.
get_nodes_of_interest
(tree, type_seq_list)[source]¶ Take an ete3 tree (TreeNode object), a list of type sequence names, and return a list of nodes of interest defined by clades (as ete3 TreeNode objects).
-
search_alignment_space.
get_seq_placement_in_tree
(ml_placement_tree_path, seq_to_add, type_seqs_dict, essential_taxa)[source]¶ Parse a tree to find out where a sequence was placed.
-
search_alignment_space.
get_species_name_from_seq_id
(seq_id)[source]¶ Take a fasta sequence id/header/taxon name for one of the sequences in an alignment or FASTA file, and return the species name that it contains.
-
search_alignment_space.
get_taxa_represented_in_clade
(clade, ml_tree_info_dict)[source]¶ Make a list of taxonomic terms currently represented in the clade.
-
search_alignment_space.
get_taxonomic_info
(species_name)[source]¶ Given a species name that appears in the genome info csv file in the genomes folder, return taxonomic information from that csv file.
-
search_alignment_space.
get_type_seqs_dict
(type_seqs)[source]¶ Take a path to a file listing sequences that define nodes of interest in a tree, and construct a dictionary with clade names as keys and sequence names as values.
-
search_alignment_space.
get_y_measure_of_support
(previous_ali_tree_tuple, include_internal_branches=False, input_modified_clade_name=None)[source]¶ Take a tuple with objects containing info about an alignment and tree, and extract specific info to use as a measure of support for nodes of interest.
*** Need to get support for all nodes of interest, not just for clades of interest, but also backbone nodes, and find the one with the lowest support.
-
search_alignment_space.
modify_alignment_in_x_way
(previous_ali_tree_tuple, mod_type)[source]¶ Modify an alignment (and associated tree) and return a tuple with all the same type of elements as the input tuple, except for the new alignment (and associated tree).
-
search_alignment_space.
new_seq_in_clade_dispensable
(essential_taxa, clade, additional_seq_id)[source]¶ Take a list of essential taxonomic terms, a list of taxa represented in a clade with an added sequence (including from the added sequence), and the sequence ID of the sequence that was added. Return true if the additional sequences is taxonomically dispensable to the clade.
-
search_alignment_space.
new_tree_better
(prev_tree_measure, new_tree_measure, mod_type, intensive_mod_type)[source]¶ Apply criteria to tuples containing information about two trees to determine which is better (old or new), and return True if the new tree is better.
-
search_alignment_space.
reduce_alignment
(alignment_file, output_alignment_file, removal_name_list)[source]¶ Take file path for an existing alignment and an output alignment, and a list of sequence names for removal. Write the reduced alignment to the output path in nexus format. Note: This function assumes that the names in the removal lit and the alignment are all either coded or uncoded.
-
search_alignment_space.
run_tree_for_branch_lengths_and_supports_for_topology
(tree, alignment, subs_model, outputdir, place_seq=False)[source]¶ Run an ML tree and branch support tests given a tree (for constraining topology), an alignment file, and a substitution model. Return path to output tree file.
Optionally use the place_seq option to just do an ML search to place a sequence in a constrained topology with the -g option.
-
search_alignment_space.
search_alignment_space
(model_name, out_dir_path, mod_type, iterations, keep_all_output, timestamp, file_with_seqs=None, essential_taxa_file=None)[source]¶ Master function to manage the iterative process of modifying an alignment/tree, and assessing whether the modification results in better branch support for a topology of interest. In other words, optimize an alignment to support a backbone topology for clades of interest in the tree. IMPORTANT: Do this in parallel for alternative topologies and compare results to avoid cherry-picking.
Replacement for optimize_sequence_selection2 and optimize_position_selection functions.


Assignment 1 - Breathify
Project Plan + Website
CMPT 276 - E100
Group 9
Group Members:
Jason Xu
Princess Macanlalay
Keith Chan
Hans Kim
Table of Contents
Project Organization and Staffing Plan
|
Revision |
Status |
Publication/ Revision Date |
By |
|
1.0 |
Created |
February 2, 2017 |
Jason Xu, Hans Kim, Princess Macanlalay, Keith Chan |
'Breathify' is a breathing exercise designed to promote healthier lifestyles by helping people improve their health through regular breathing exercises. This will be a useful tool for those who suffer from anxiety and/or stress. The app allows for users to engage in a variety of breathing exercises using an interactive game version or a countdown timer version. The interactive game version will provide a more engaging way to focus on breathing. As an alternative, the countdown timer version will have additional audio cues so that the breathing exercises can be done without having to look at the screen.
‘Breathify’ aims to offer those who suffer from anxiety
or stress a way to minimize their symptoms using a variety of breathing
exercises. Breathing exercises have been shown to be an
effective way of combating moments of high anxiety or high stress. The
American Institute of Stress calls it an activity “that evokes the relaxation
response” which “leaves the body relaxed, calm, and focused” (The
American Institute of Stress). Breathing exercises also “encourages full
oxygen exchange” which “can slow the heartbeat and lower or stabilize blood
pressure” (Harvard Health). The application will provide two main methods
of performing breathing exercises. One method will present a countdown timer
for different stages of the selected breathing exercise accompanied by additional
aural and visual cues to alert the user of which stage of the exercise they are
in. The second method is an interactive game where breathing exercise
steps are to be followed more strictly to encourage more focus with points
awarded for closely following the exercise. The user will have a variety of
breathing exercises to choose from including those that only require simple
breathing to those that require a physical activity to them. For some of the
breathing exercises, users will be able to track their heart rate during the
exercise using the mobile phone’s camera. This heart rate data along with data
about the overall usage of the application will be used to inform the user
about the effects of the breathing exercises and their activity pattern
related to the application. Those vital to the success of the application
are the users who will expect the application to help them with their anxiety
and/or stress, the members of Group Nine, and the SFU Health
Promotion team who is sponsoring the project. All those aforementioned have a
vested interest in producing an application to help those with anxiety and/or
relieve their symptoms through various breathing exercises.
General Meeting Times
Š Mon 4:30 pm to 6:30 pm
Š Thur 4:30 pm to 6:30 pm
Š Extra time for working together: Mon and Thu after the general meeting
Internal Communication
Š Report the individual project process
Š Report the problem.
Š Check the work and make connection between individuals work
Š Changing the component of the plan and risk management (depends on the problem we meet)
Š Arranging the new task
Š Using Trello to record and share the resources
External Communication
Š Sharing our idea with students/friends/profs who study in SFU community and get some feedbacks and suggestions.
Š We are going to discuss some specific topic/problem with sponsor Dylan and Rosie, which includes
o The visual design of deep breath exercise
o Some treatment for people who are anxious and stressful, which related to the breath exercise.
o Etc.
Š Version control: Github
Š Swift
Š The logic of the breath exercise (main structure): data structure and MVC
Š Visual design of the breath exercise
Š Database for user profile and statistics
Š User interface design
Š Hardware support: Camera as a heartrate sensor
Š Breathing exercise library
https://cmpt276-groupnine.github.io/website/
Key task and Milestone management
(See more specific task arrangement in Project Schedule)
|
Key task |
Start date |
End date |
Milestone |
|
Research/Preparation Final prep for the implementation |
Feb 5th |
Feb 25th |
1. Concept of requirement 2. Hardware support research: Camera as a heart rate sensor 3. Software support: deciding the final package of software that we use 4. Breathing exercise library 5. Arrange the specific task into individual |
|
Design of main logic and structure |
Feb 25th |
Mar 22nd |
1. Design of the implementation: data structure and MVC 2. Basic implementation of the breath exercise (HW3) 3. Implementation of hardware support (HW3) 4. Optimize the implementation and fix bugs (HW 4/5) |
|
Visual design |
Feb 25th |
Mar 19th |
1. Transfer the implementation of the breath exercise to a simple visual version(HW3) 2. Adding the shapes, color and music that we planned to improve the app (HW4/5) |
|
Database for user profile and statistics |
Feb 27th |
Mar 22nd |
1. Make the connection between the database and logic implementation 2. Build the data 3. Implement the feature of breath report and stat (HW3) |
|
User interface design |
Feb 27th |
Mar 19th |
1. Create a simple user interface for testing. 2. Improve the user interface and make it smooth and creative. |
|
Testing |
Mar 4th Mar 18th |
Mar 8th Mar 21th |
1. Version 1 and Version 2 testing |
|
Risks |
Impact |
Likelihood |
Impact Area |
Mitigation Strategy |
|
Project Risk |
|
|
|
|
|
Losing a Team Member |
High |
Low |
Development time |
Better communication, cut unnecessary features |
|
Lacking library for camera heart rate |
Low |
Moderate |
Development time, complexity |
Implement/ address early |
|
Product Risk |
|
|
|
|
|
Camera heart rate sensor library inadequate |
Low |
Moderate |
Development time |
Vet libraries before using |
|
Ineffective Breathing Exercises |
Very Low |
High |
App quality/ variety of exercises |
Only implement if exercises proven effective |
|
Business Risk |
|
|
|
|
|
Bad Reviews |
Low |
Moderate |
Pushes away potential users/ number of downloads |
Clear description of app features, limit initial release to best exercises |
|
Superior competing applications |
Very High |
Low |
Affects number of downloads, causing bad reviews |
Scout out similar apps, incorporate popular features |
|
Princess Macanlalay –<EMAIL_ADDRESS>Developer
Š Worked at Sierra Wireless testing software for 8 months Š Interest in math and problem-solving Š Computer Engineering major and Computer Science minor Š Proficient in Python
|
Hans Kim –<EMAIL_ADDRESS>Project Manager
Š Langara College graduate, Associate of Science degree in Computer Science Š Experience with database systems and web applications Š Interest in helping users solve daily problems with applications |
|
Jason Xu –<EMAIL_ADDRESS>Developer Š Third year international student Š Interest in C++, algorithms and data structures Š Enjoys writing papers and essays |
Keith Chan –<EMAIL_ADDRESS>Data Management
Š Studying a joint major in Business and Computing Science Š Likes web development and databases Š Interested in using technology to help businesses |
H. H. Publications, "Relaxation techniques: Breath control helps quell errant stress response - Harvard health," Harvard Health, 2016. [Online]. Available: http://www.health.harvard.edu/mind-and-mood/relaxation-techniques-breath-control-helps-quell-errant-stress-response. Accessed: Feb. 4, 2017.
K. Marksberry, "Take a deep breath," The American Institute of Stress, 2012. [Online]. Available: http://www.stress.org/take-a-deep-breath/. Accessed: Feb. 4, 2017.
M.-S. Yong, H.-Y. Lee, and Y.-S. Lee, "Effects of diaphragm breathing exercise and feedback breathing exercise on pulmonary function in healthy adults," Journal of Physical Therapy Science, vol. 29, no. 1, pp. 85–87, 2017.


Here you can find famous Kenyan sayings and quotes from those of old to contemporary ones. We also give you an opportunity to add one of your liking and if you are unaware of whom to attribute it to you can leave the author as anonymous, finally don't forget to vote for your favourite one.


+mRNA must be made from all viral genomes in order for viral
proteins to be translated. Classes II, IV, VI and VII require
intermediaries before +mRNA can be produced.
The negative strand of dsDNA viruses is used to transcribe +mRNA.
dsDNA viruses make use of several mechanisms to replicate their
genomes.
The ssDNA, which can be positive or negative, is made into the
dsDNA form by a DNA polymerase upon entering a host cell.
The +mRNA is transcribed from the negative strand of the dsRNA.
The +mRNA is used for both translation of the viral proteins and
replication of the dsRNA genome.
The ss +RNA genome functions as +mRNA, so viral proteins can be
translated immediately. The ss +RNA also produces a negative
strand of -RNA from which positive strand copies of the genome
will be produced.
The +mRNA is transcribed directly from the negative sense genome.
Retroviral ss +RNA viruses use reverse transcription to produce a
dsDNA strand. It is called a provirus because it is integrated
into the host cell genome, from where the genomic +RNA is
transcribed and viral proteins are translated. See
“HIV” by the same author for details on reverse
transcription and HIV.
dsDNA retroviruses have a gap in one of the strands of the genome,
which is subsequently repaired. From this a +RNA strand is
transcribed which is then reverse transcribed into genomic, i.e.
gapped, dsDNA.
Baltimore classification groups viruses together based on their manner
of mRNA synthesis. Characteristics directly related to this include
whether the genome is made of deoxyribonucleic acid (DNA) or
ribonucleic acid (RNA), the strandedness of the genome, which can be
either single- or double-stranded, and the sense of a single-stranded
genome, which is either positive or negative. The primary advantage of
Baltimore classification is that by classifying viruses according to
the aforementioned characteristics, viruses that behave in the same
manner can be studied as distinct groups.


 There may be times, however, when you don't want people with access to your computer to see this information, such as when shopping for a present. Private Browsing allows you to browse the Internet without saving any information about which sites and pages you�ve visited. We'll show you how it works.
Open a new Private Window
There are two ways to open a new Private Window.
-
Open a new, blank Private Window Click the menu button and then click New Private Window.
-
Open a link in a new Private Window Right-click on any link and choose Open Link in New Private Window from the context menu.
-
Tip: Private Browsing windows have a purple mask at the top.


Manchester United: Victor Lindelof explains why he still misses Jose Mourinho
The Portuguese signed the centre-back for £31m in 2017
by Jack RathbornVictor Lindelof admits he misses Jose Mourinho as the one-year anniversary of his Manchester United exit approaches.
The Swede concedes he owes the Portuguese a great deal after being signed by him in a £31m deal in 2017.
Mourinho is still waiting to accept an offer in a coaching capacity and is currently working as a television pundit, with Lindelof yearning for his return to the game.
“He is, after all, one of the world’s best coaches and he is supposed to have a job at one of the biggest clubs. I miss him in football,” Lindelof told Aftonbladet.
“He’s a great coach and a great person, whom I owe a great deal. It was he who gave me the chance here, who brought me into everything.
“I have all the respect in the world for him and appreciate everything he has said and done for me, from scolding to a hug.
“Even if I did not agree, at the time…he has very great charisma, you had great respect for him. He’s won everything. When he says something, you listen.”


arcgis.apps.hub module¶
The Hub
is the main entry point into the Hub module.
It can be used as shown in the following code example.
from arcgis.gis import GIS
gis = GIS("https://arcgis.com", "<username>", "<password>")
myHub = gis.hub
a_Initiative = myHub.initiatives.get(itemId)
a_Indicators = a_Initiative.indicators.search()
myEvents = myHub.events.search()
Hub¶
-
class
arcgis.apps.hub.
Hub
(gis, username=None, password=None)¶ Entry point into the Hub module. Lets you access an individual hub and its components.
Argument Description url Required string. If no URL is provided by user while connecting to the GIS, then the URL will be ArcGIS Online. username Optional string as entered while connecting to GIS. The login user name (case-sensitive). password Optional string as entered while connecting to GIS. If a username is provided, a password is expected. This is case-sensitive. If the password is not provided, the user is prompted in the interactive dialog. -
community_org_id
¶ Returns the AGOL org id of the Community Organization associated with this Hub.
-
community_org_url
¶ Returns the AGOL org id of the Community Organization associated with this Hub.
-
enterprise_org_id
¶ Returns the AGOL org id of the Enterprise Organization associated with this Hub.
-
enterprise_org_url
¶ Returns the AGOL org url of the Enterprise Organization associated with this Hub.
-
events
¶
-
initiatives
¶
-
Initiative¶
-
class
arcgis.apps.hub.
Initiative
(gis, initiativeItem)¶ Represents an initiative within a Hub. An Initiative supports policy- or activity-oriented goals through workflows, tools and team collaboration.
-
delete
()¶ Deletes the initiative. If unable to delete, raises a RuntimeException.
Returns: A bool containing True (for success) or False (for failure). USAGE EXAMPLE: Delete an initiative successfully initiative1 = myHub.initiatives.get('itemId12345') initiative1.delete() >> True
-
description
¶ Getter/Setter for the initiative description
-
indicators
¶
-
itemid
¶ Returns the item id of the initiative item
-
owner
¶ Returns the owner of the initiative item
-
site_url
¶ Returns the url of the initiative site
-
snippet
¶ Getter/Setter for the initiative snippet
Returns the tags of the initiative item
-
title
¶ Returns the title of the initiative item
-
update
(initiative_properties=None, data=None, thumbnail=None, metadata=None)¶ Updates the initiative.
Note
For initiative_properties, pass in arguments for only the properties you want to be updated. All other properties will be untouched. For example, if you want to update only the initiative’s description, then only provide the description argument in initiative_properties.
Argument Description initiative_properties Required dictionary. See URL below for the keys and values. data Optional string. Either a path or URL to the data. thumbnail Optional string. Either a path or URL to a thumbnail image. metadata Optional string. Either a path or URL to the metadata. To find the list of applicable options for argument initiative_properties - https://esri.github.io/arcgis-python-api/apidoc/html/arcgis.gis.toc.html#arcgis.gis.Item.update
Returns: A boolean indicating success (True) or failure (False). USAGE EXAMPLE: Update an initiative successfully initiative1 = myHub.initiatives.get('itemId12345') initiative1.update(initiative_properties={'description':'Create your own initiative to organize people around a shared goal.'}) >> True
-
url
¶ Returns the url of the initiative editor
-
Indicator¶
-
class
arcgis.apps.hub.
Indicator
(initiativeItem, indicatorObject)¶ Represents an indicator within an initiative. Initiatives use Indicators to standardize data sources for ready-to-use analysis and comparison. Indicators are measurements of a system including features, calculated metrics, or quantified goals.
-
delete
()¶ Deletes an indicator from the initiative
Returns: A bool containing True (for success) or False (for failure). USAGE EXAMPLE: Delete an indicator successfully indicator1 = initiative1.indicators.get('streetCrashes') indicator1.delete() >> True
-
get_data
()¶ Retrieves the data associated with an indicator
-
indicator_type
¶ Returns the type (Data/Parameter) of the indicator
-
indicatorid
¶ Returns the id of the indicator
-
itemid
¶ Returns the item id of the data layer (if configured) of the indicator
-
mappings
¶ Returns the attribute mapping from data layer (if configured) of the indicator
-
name
¶ Returns the layer name (if configured) of the indicator
-
optional
¶ Status if the indicator is optional (True/False)
-
update
(indicator_properties=None)¶ Updates properties of an initiative
Returns: A bool containing True (for success) or False (for failure). USAGE EXAMPLE: Update an indicator successfully indicator1_data = indicator1.get_data() indicator1_data['optional'] = False indicator1.update(indicator_properties = indicator1_data) >> True Refer the indicator definition (`get_data()`) to learn about fields that can be updated and their acceptable data format.
-
url
¶ Returns the data layer url (if configured) of the indicator
-
Event¶
-
class
arcgis.apps.hub.
Event
(gis, eventObject)¶ Represents an event in a Hub. A Hub has many Events that can be associated with an Initiative. Events are meetings for people to support an Initiative. Events are scheduled by an organizer and have many attendees. An Event has a Group so that they can include content for preparation as well as gather and archive content during the event for later retrieval or analysis.
-
attendance
¶ Returns attendance count for a past event
-
capacity
¶ Returns attendance capacity for attendees of the event
-
creator
¶ Returns creator of the event
-
description
¶ Returns description of the event
-
end_date
¶ Returns end date of the event in milliseconds since UNIX epoch
-
geometry
¶ Returns co-ordinates of the event location
-
initiativeid
¶ Returns the initiative id of the event if it belongs to an Initiative
-
is_cancelled
¶ Check if event is Cancelled
-
location
¶ Returns the location of the event
-
organizer_name
¶ Returns the name of the organizer of the event
-
organizers
¶ Returns names of all organizers of the event
-
siteid
¶ Returns the site id of the event site
-
start_date
¶ Returns start date of the event in milliseconds since UNIX epoch
-
status
¶ Returns status of the event
-
title
¶ Returns the title of the event
-
InitiativeManager¶
-
class
arcgis.apps.hub.
InitiativeManager
(hub, initiative=None)¶ Helper class for managing initiatives within a Hub. This class is not created by users directly. An instance of this class, called ‘initiatives’, is available as a property of the Hub object. Users call methods on this ‘initiatives’ object to manipulate (add, get, search, etc) initiatives.
-
add
(title, description=None, data=None, thumbnail=None)¶ Adds a new initiative to the Hub.
Argument Description title Required string. description Optional string. data Optional string. Either a path or URL to the data. thumbnail Optional string. Either a path or URL to a thumbnail image. Returns: The initiative if successfully added, None if unsuccessful. USAGE EXAMPLE: Add an initiative successfully initiative1 = myHub.initiatives.add(title='Vision Zero Analysis') initiative1.item
-
get
(initiative_id)¶ Returns the initiative object for the specified initiative_id.
Argument Description initiative_id Required string. The initiative itemid. Returns: The initiative object if the item is found, None if the item is not found. USAGE EXAMPLE: Fetch an initiative successfully initiative1 = myHub.initiatives.get('itemId12345') initiative1.item
-
search
(scope=None, title=None, owner=None, created=None, modified=None, tags=None)¶ Searches for initiatives.
Argument Description scope Optional string. Defines the scope of search. Valid values are ‘official’, ‘community’ or ‘all’. title Optional string. Return initiatives with provided string in title. owner Optional string. Return initiatives owned by a username. created Optional string. Date the initiative was created. Shown in milliseconds since UNIX epoch. modified Optional string. Date the initiative was last modified. Shown in milliseconds since UNIX epoch tags Optional string. User-defined tags that describe the initiative. Returns: A list of matching initiatives.
-
IndicatorManager¶
-
class
arcgis.apps.hub.
IndicatorManager
(gis, initiativeItem)¶ Helper class for managing indicators within an initiative. This class is not created by users directly. An instance of this class, called ‘indicators’, is available as a property of the Initiative object. Users call methods on this ‘indicators’ object to manipulate (add, get, search, etc) indicators of a particular initiative.
-
add
(indicator_properties)¶ Adds a new indicator to given initiative.
Key:Value Dictionary Options for Argument indicator_properties
Key Value id Required string. Indicator identifier within initiative template name Optional string. Indicator name type Optional string. Valid values are Data, Parameter. optional Required boolean definition Optional dictionary. Specification of the Indicator - types, fields source Optional dictionary. Reference to an API or collection of data along with mapping between schemas Returns: A bool containing True (for success) or False (for failure). USAGE EXAMPLE: Add an indicator successfully indicator1_data = {'id': 'streetCrashes', 'type': 'Data', 'optional':False} initiative1.indicators.add(indicator_properties = indicator1_data) >> True
-
get
(indicator_id)¶ Returns the indicator object for the specified indicator_id.
Argument Description indicator_id Required string. The indicator identifier. Returns: The indicator object if the indicator is found, None if the indicator is not found.
-
search
(url=None, item_id=None, name=None)¶ Searches for indicators within an initiative.
Argument Description url Optional string. url registered for indicator in source dictionary. item_id Optional string. itemid registered for indicator in source dictionary. name Optional string. name registered for indicator in source dictionary. Returns: A list of matching indicators.
-
EventManager¶
-
class
arcgis.apps.hub.
EventManager
(hub, event=None)¶ Helper class for managing events within a Hub. This class is not created by users directly. An instance of this class, called ‘events’, is available as a property of the Hub object. Users call methods on this ‘events’ object to manipulate (add, search, get_map etc) events of a particular Hub.
-
get_map
()¶ Plot all events for a Hub in an embedded webmap within the notebook.
-
search
(initiative_id=None, title=None, location=None, organizer_name=None)¶ Searches for events within a Hub.
Argument Description initiative_id Optional string. Initiative itemid. title Optional string. Title of the event. location Optional string. Location where event is held. organizer_name Optional string. Name of the organizer of the event. Returns: A list of matching indicators.
-