Jupyter Notebook It's Different!

Total Page:16

File Type:pdf, Size:1020Kb

Jupyter Notebook It's Different! Impractical Python Jeremy Reichman @jaharmi Tamman Technologies, Inc. In [160]: %%html <iframe src="https://docs.google.com/forms/d/e/1FAIpQLScYjVXRX0yiLUD1qDyVlbYRaiH a_PZ_vuK5ol7YkUKsY4z7pw/viewform?embedded=true" width="800" height="600" framebo rder="0" marginheight="0" marginwidth="0">Loading...</iframe> PSU Mac Admins Conference 2019 Python survey This survey will ask you about Python, general scripting and programming, Apple platform administration, and stuff of that sort. It will take a minimum of 3 years to complete. I am attending the Penn State Mac Admins Conference 2019. Yes No Besides attending the conference, I am also a speaker. Yes No Not at the conference During the Krst three days of the conference, I have already Please take this survey to temporarily deflect your attention from any and all deficiencies of this session https://forms.gle/YhWXcZBsrb3LJTfr9 (https://forms.gle/YhWXcZBsrb3LJTfr9) THAT SUCKS! THAT SUCKS BIG TIME! Not a typical presentation Jupyter Notebook It's different! It looks just like this! Credit: macOS Mojave. Why you might want Python Data science! Opportunities! Keep your Mac instead of replacing it with an iPad Pro! Modern Python vs. Legacy Python JetBrains Python Dev Ecosystem 2019 (https://www.jetbrains.com/lp/devecosystem- 2019/python/) In [9]: import matplotlib.pyplot as plt In [30]: labels = ["Python 3", "Python 2"] sizes = [87, 13] explode = (0, 0.25) In [31]: plt.pie( sizes, labels=labels, startangle=90, autopct='%1.0f%%', explode=explode, ) plt.show() End of Python 2 No more updates as of January 1, 2020 Not even for security! It's dead! Credit: Marvel Studios, Avengers Endgame poster, modified. Why you might not want Python Avoiding Python 2 See "Scripting Language Runtimes" in macOS Catalina Beta Release Notes (https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_beta_3_release_notes) Having to install and manage Python Would one or more Mac admin-specific "distributions" of Modern Python be worthwhile? Swift, SwiftUI, and their place in Apple platforms Python 3 Redesigned Dark mode Credit: Python Software Foundation, Python logo. Also, this is NOT REAL. Getting started with Python 3 Python.org (https://python.org/) Relocatable Python (https://github.com/gregneagle/relocatable-python) "Relocatable Python framework containing PyObjC" "Ideal for embedding into an application's Frameworks directory" Anaconda (https://anaconda.org) Python plus many modules, built and tested to work together Makes Jupyter Notebook easier to use Jupyter Notebook, again Gave up all modern presentation conveniences Drag and drop Easy editing Knowing what I was doing Animations, builds, MAGIC MOVE Not sure if this is 20 minutes into the future or what Credit: ABC network Resign myself to troubleshooting my presentation environment In [4]: %%html <div align="left"> <video width="80%" controls> <source src="resources/ThisBusinessOutOfControl.mp4" type="video/mp4"> </video></div> Assumption that every "slide" is for code Which executes somewhere, wherever the "kernel" is running Credit: Jupyter Documentation. And provides for some interesting interactivity In [16]: !echo $PATH /home/nbuser/anaconda3_501/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin :/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/nbuser/.local/bin In [75]: !conda env list # conda environments: # base /Users/jeremy/anaconda3 anaconda3_501 * /Users/jeremy/anaconda3/envs/anaconda3_501 In [17]: !type pip pip is /home/nbuser/anaconda3_501/bin/pip In [21]: !conda list 2>/dev/null # packages in environment at /Users/jeremy/anaconda3/envs/anaconda3_501: # # Name Version Build Channel appdirs 1.4.3 py_1 conda-forge appnope 0.1.0 py37_1000 conda-forge arrow 0.14.2 py37_0 conda-forge asn1crypto 0.24.0 py37_1003 conda-forge attrs 19.1.0 py_0 conda-forge backcall 0.1.0 py_0 conda-forge backports 1.0 py_2 conda-forge binaryornot 0.4.4 py_1 conda-forge black 19.3b0 py_0 conda-forge blackcellmagic 0.0.2 pypi_0 pypi bleach 3.1.0 py_0 conda-forge bzip2 1.0.6 h1de35cc_1002 conda-forge ca-certificates 2019.5.15 0 cachetools 2.1.0 py_0 conda-forge certifi 2019.6.16 py37_0 cffi 1.12.3 py37hccf1714_0 conda-forge chardet 3.0.4 py37_1003 conda-forge click 7.0 py_0 conda-forge configparser 3.7.3 py37_1 conda-forge cookiecutter 1.6.0 py37_1000 conda-forge cryptography 2.7 py37h212c5bf_0 conda-forge csvfaker 1.0.5 pypi_0 pypi cycler 0.10.0 py37_0 dbus 1.13.6 h2f22bb5_0 conda-forge decorator 4.4.0 py_0 conda-forge defusedxml 0.5.0 py_1 conda-forge df2gspread 1.0.4 py37_1000 conda-forge editorconfig 0.12.2 pypi_0 pypi entrypoints 0.3 py37_1000 conda-forge et_xmlfile 1.0.1 py_1001 conda-forge expat 2.2.5 h6de7cb9_1003 conda-forge faker 1.0.7 py37_0 conda-forge freetype 2.9.1 hb4e5f40_0 future 0.17.1 py37_1000 conda-forge gettext 0.19.8.1 h46ab8bc_1002 conda-forge glib 2.58.3 h9d45998_1001 conda-forge google-api-python-client 1.7.9 py_0 conda-forge google-auth 1.6.3 py_0 conda-forge google-auth-httplib2 0.0.3 py_2 conda-forge gspread 3.1.0 py_0 conda-forge httplib2 0.13.0 py37_0 conda-forge icu 58.2 h0a44026_1000 conda-forge idna 2.8 py37_1000 conda-forge ipykernel 5.1.1 py37h24bf2e0_0 conda-forge ipython 7.6.1 py37h5ca1d4c_0 conda-forge ipython_genutils 0.2.0 py_1 conda-forge ipywidgets 7.5.0 py_0 conda-forge jdcal 1.4.1 py_0 conda-forge jedi 0.14.0 py37_0 conda-forge jinja2 2.10.1 py_0 conda-forge jinja2-time 0.2.0 py_2 conda-forge jpeg 9c h1de35cc_1001 conda-forge jsonschema 3.0.1 py37_0 conda-forge jupyter 1.0.0 py37_7 jupyter_client 5.2.4 py_3 conda-forge jupyter_console 6.0.0 py_0 conda-forge jupyter_contrib_core 0.3.3 py_2 conda-forge jupyter_contrib_nbextensions 0.5.1 py37_0 conda-forge jupyter_core 4.4.0 py_0 conda-forge jupyter_highlight_selected_word 0.2.0 py37_1000 conda-for ge jupyter_latex_envs 1.4.4 py37_1000 conda-forge jupyter_nbextensions_configurator 0.4.1 py37_0 conda-f orge kiwisolver 1.1.0 py37h0a44026_0 libblas 3.8.0 10_openblas conda-forge libcblas 3.8.0 10_openblas conda-forge libcxx 8.0.0 4 conda-forge libcxxabi 8.0.0 4 conda-forge libffi 3.2.1 h6de7cb9_1006 conda-forge libgfortran 3.0.1 0 conda-forge libiconv 1.15 h01d97ff_1005 conda-forge liblapack 3.8.0 10_openblas conda-forge libopenblas 0.3.6 hd44dcd8_4 conda-forge libpng 1.6.37 h2573ce8_0 conda-forge libsodium 1.0.16 h1de35cc_1001 conda-forge libxml2 2.9.9 hd80cff7_1 conda-forge libxslt 1.1.32 h1e79283_1003 conda-forge lxml 4.3.4 py37h08abf6f_0 conda-forge markupsafe 1.1.1 py37h1de35cc_0 conda-forge matplotlib 3.1.0 py37h54f8f79_0 mistune 0.8.4 py37h1de35cc_1000 conda-forge nb-conda 2.2.1 pypi_0 pypi nb_conda 2.2.1 py37_2 conda-forge nb_conda_kernels 2.2.2 py37_0 nbconvert 5.5.0 py_0 conda-forge nbformat 4.4.0 py_1 conda-forge ncurses 6.1 h0a44026_1002 conda-forge notebook 5.7.8 py37_0 numpy 1.16.4 py37h6b0580a_0 conda-forge oauth2client 4.1.3 py_0 conda-forge openblas 0.3.6 hd44dcd8_4 conda-forge openpyxl 2.6.2 py_0 conda-forge openssl 1.1.1c h1de35cc_1 pandas 0.24.2 py37h86efe34_0 conda-forge pandoc 2.7.3 0 conda-forge pandocfilters 1.4.2 py_1 conda-forge parso 0.5.0 py_0 conda-forge pcre 8.41 h0a44026_1003 conda-forge pexpect 4.7.0 py37_0 conda-forge pickleshare 0.7.5 py37_1000 conda-forge pip 19.1.1 py37_0 conda-forge poyo 0.4.2 py_0 conda-forge prometheus_client 0.7.1 py_0 conda-forge prompt_toolkit 2.0.9 py_0 conda-forge ptyprocess 0.6.0 py_1001 conda-forge pyasn1 0.4.5 py_0 conda-forge pyasn1-modules 0.2.5 py_0 conda-forge pycparser 2.19 py37_1 conda-forge pycrypto 2.6.1 py37h1de35cc_1002 conda-forge pygments 2.4.2 py_0 conda-forge pyjokes 0.5.0 py_0 conda-forge pyopenssl 19.0.0 py37_0 conda-forge pyparsing 2.4.0 py_0 pyqt 5.9.2 py37h2a560b1_0 conda-forge pyrsistent 0.15.3 py37h01d97ff_0 conda-forge pysocks 1.7.0 py37_0 conda-forge python 3.7.3 h93065d6_1 conda-forge python-dateutil 2.8.0 py_0 conda-forge python-magic 0.4.15 pypi_0 pypi pytz 2019.1 py_0 conda-forge pyyaml 5.1.1 py37h01d97ff_0 conda-forge pyzmq 18.0.2 py37h2d07e9b_0 conda-forge qt 5.9.7 h93ee506_2 conda-forge qtconsole 4.5.1 py_0 conda-forge readline 8.0 hcfe32e1_0 conda-forge requests 2.22.0 py37_0 conda-forge rise 5.5.1 py37_0 conda-forge rsa 3.4.2 py_1 conda-forge send2trash 1.5.0 py_0 conda-forge setuptools 41.0.1 py37_0 conda-forge simplejson 3.16.0 py37h1de35cc_1002 conda-forge sip 4.19.8 py37h0a44026_1000 conda-forge six 1.12.0 py37_1000 conda-forge sqlite 3.28.0 hb7d70f7_1 conda-forge tabulate 0.8.3 py_0 conda-forge terminado 0.8.2 py37_0 conda-forge testpath 0.4.2 py_1001 conda-forge text-unidecode 1.2 py_0 conda-forge tk 8.6.9 h2573ce8_1002 conda-forge toml 0.10.0 py_0 conda-forge tornado 6.0.3 py37h01d97ff_0 conda-forge traitlets 4.3.2 py37_1000 conda-forge uritemplate 3.0.0 py_1 conda-forge urllib3 1.24.3 py37_0 conda-forge wcwidth 0.1.7 py_1 conda-forge webencodings 0.5.1 py_1 conda-forge wheel 0.33.4 py37_0 conda-forge whichcraft 0.5.2 py_1 conda-forge widgetsnbextension 3.5.0 py37_0 conda-forge xz 5.2.4 h1de35cc_1001 conda-forge yaml 0.1.7 h1de35cc_1001 conda-forge youtube-dl 2019.7.2 pypi_0 pypi zeromq 4.3.1 h0a44026_1000 conda-forge zlib 1.2.11 h1de35cc_1004 conda-forge In [40]: def double(x): print(x * 2) double(42) 84 In [35]: from ipywidgets import interact def my_function(x): return x # create a slider interact(my_function, x=20) Out[35]: <function __main__.my_function(x)> In [42]: import pyjokes In [43]: pyjokes.get_joke() Out[43]: "How do you know whether a person is a Vim user? Don't worry, they'll tell y ou." And now how 1.
Recommended publications
  • Working with System Frameworks in Python and Objective-C
    Working with System Frameworks in Python and Objective-C by James Barclay Feedback :) j.mp/psumac2015-62 2 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Agenda 1. What are system frameworks, and why should you care? 2. Brief overview of the frameworks, classes, and APIs that will be demonstrated. 3. Demo 1: PyObjC 4. Demo 2: Objective-C 5. Wrap up and questions. 4 What’s a System Framework? …and why should you care? (OS X) system frameworks provide interfaces you need to write software for the Mac. Many of these are useful for Mac admins creating: • scripts • GUI applications • command-line tools Learning about system frameworks will teach you more about OS X, which will probably make you a better admin. 5 Frameworks, Classes, and APIs oh my! Cocoa CoreFoundation • Foundation • CFPreferences - NSFileManager CoreGraphics - NSTask • Quartz - NSURLSession - NSUserDefaults • AppKit - NSApplication 6 CoreFoundation CoreFoundation is a C framework that knows about Objective-C objects. Some parts of CoreFoundation are written in Objective-C. • Other parts are written in C. CoreFoundation uses the CF class prefix, and it provides CFString, CFDictionary, CFPreferences, and the like. Some Objective-C objects are really CF types behind the scenes.
    [Show full text]
  • Macspeechx.Py MODULE and ITS USE in an ACCELERATOR CONTROL SYSTEM Noboru Yamamoto*, J-PARC Cener, KEK and JAEA, Ibaraki, JAPAN
    Proceedings of ICALEPCS2013, San Francisco, CA, USA TUPPC109 MacspeechX.py MODULE AND ITS USE IN AN ACCELERATOR CONTROL SYSTEM Noboru Yamamoto*, J-PARC cener, KEK and JAEA, Ibaraki, JAPAN Abstract With additional functionality such as user interface or macspeechX.py[1] is a Python module to accels speech selection of voices for specified UDP ports, this program synthesis library on MacOSX. This module have been can fit one or two pages of the paper used in the vocal alert system in KEKB[2] and J- While this system running without serious problem PARC[3] accelerator control system. Recent upgrade of until MacOSX came to the market. In Python on this module allow us to handle non-English lanugage, MacOSX does not includes macspeech.py as a its such as Japanese, through this module. Implementation components. It means we need to develop our own detail will be presented as an example of Python program solution before old Mac hardware would be replaced by accessing system library. new hardware which just runs MacOSX. SPEECH SYNTHESIS IN CONTROL In the next section, we will see several ways to write SYSTEMS Python module which bridges C/C++ library. In some control system, alerts to the operators can be sent as vocal messages. It used be require the special hardware or software to generate vocal message from computers in the system. When we started commissioning of KEKB accelerator, such an alert system was requested. We picked up: • speech synthesis library includes as one of standard libraries on Macintosh OS from Apple. • Macspeech.py module distributed as one of standard module with Python programming Langauge Figure 1: Software overview of KEKB/J-PARC vocal With these two components, we could build a very low alert system.
    [Show full text]
  • Python for the C# Developer
    {SDD} 2014 Software Design & Development Python for the C# developer Michael Kennedy @mkennedy http://blog.michaelckennedy.net Objectives • Introduce the basics of the Python language • Review what is awesome about C# and .NET • Explore Python's version of each C# / .NET feature DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net What is Python? • High-level programming language • Interpreted (sometimes JIT compiled) • Object-oriented (especially Python 3) • Strongly-typed with dynamic semantics • Syntax emphasizes readability • Supports modules and packages • Batteries included (large standard library [1]) DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net The ‘shape’ of a Python program • Python defines code blocks (known as suites in Python) using whitespace and colons. Things to note: def somemethod(name): • No semicolons if name == "Michael": print("Hi old friend") • Code blocks start with ‘:’ else: • Whitespace really really matters print("Nice to meet you") • There are no braces print("My name is … ") • There are no parentheses • Tabs are not your friend def main(): somemethod() Code suites DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net Python language demo DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net What's awesome about C# and .NET? System.Object: Everything is an object. LINQ IEnumerable + foreach loops Visual Studio / IDEs Class properties ( int Age {get; set;} ) Side-by-side execution (isolation) Anonymous types Iterator methods / yield return
    [Show full text]
  • Bleak Documentation Release 0.12.1
    bleak Documentation Release 0.12.1 Henrik Blidh Jul 07, 2021 Contents 1 Features 3 1.1 Installation................................................3 1.2 Scan/Discover..............................................4 1.3 Usage...................................................6 1.4 Bleak backends..............................................6 1.5 Interfaces, exceptions and utils......................................8 1.6 Troubleshooting............................................. 24 1.7 Contributing............................................... 28 1.8 Credits.................................................. 29 1.9 Changelog................................................ 30 2 Indices and tables 43 Python Module Index 45 Index 47 i ii bleak Documentation, Release 0.12.1 Bleak is an acronym for Bluetooth Low Energy platform Agnostic Klient. • Free software: MIT license • Documentation: https://bleak.readthedocs.io. Bleak is a GATT client software, capable of connecting to BLE devices acting as GATT servers. It is designed to provide a asynchronous, cross-platform Python API to connect and communicate with e.g. sensors. Contents 1 bleak Documentation, Release 0.12.1 2 Contents CHAPTER 1 Features • Supports Windows 10, version 16299 (Fall Creators Update) or greater • Supports Linux distributions with BlueZ >= 5.43 (See Linux backend for more details) • OS X/macOS support via Core Bluetooth API, from at least OS X version 10.11 Bleak supports reading, writing and getting notifications from GATT servers, as well as a function for discovering BLE devices. Contents: 1.1 Installation 1.1.1 Stable release To install bleak, run this command in your terminal: $ pip install bleak This is the preferred method to install bleak, as it will always install the most recent stable release. If you don’t have pip installed, this Python installation guide can guide you through the process. 1.1.2 From sources The sources for bleak can be downloaded from the Github repo.
    [Show full text]
  • Python Guide Documentation 0.0.1
    Python Guide Documentation 0.0.1 Kenneth Reitz 2015 09 13 Contents 1 Getting Started 3 1.1 Picking an Interpreter..........................................3 1.2 Installing Python on Mac OS X.....................................5 1.3 Installing Python on Windows......................................6 1.4 Installing Python on Linux........................................7 2 Writing Great Code 9 2.1 Structuring Your Project.........................................9 2.2 Code Style................................................ 15 2.3 Reading Great Code........................................... 24 2.4 Documentation.............................................. 24 2.5 Testing Your Code............................................ 26 2.6 Common Gotchas............................................ 30 2.7 Choosing a License............................................ 33 3 Scenario Guide 35 3.1 Network Applications.......................................... 35 3.2 Web Applications............................................ 36 3.3 HTML Scraping............................................. 41 3.4 Command Line Applications....................................... 42 3.5 GUI Applications............................................. 43 3.6 Databases................................................. 45 3.7 Networking................................................ 45 3.8 Systems Administration......................................... 46 3.9 Continuous Integration.......................................... 49 3.10 Speed..................................................
    [Show full text]
  • Cocoa Fundamentals Guide
    Cocoa Fundamentals Guide 2006-10-03 registered in the United States and other Apple Computer, Inc. countries. © 2006 Apple Computer, Inc. Adobe, Acrobat, and PostScript are All rights reserved. trademarks or registered trademarks of Adobe Systems Incorporated in the U.S. No part of this publication may be and/or other countries. reproduced, stored in a retrieval system, or transmitted, in any form or by any means, Intel and Intel Core are registered mechanical, electronic, photocopying, trademarks of Intel Corportation or its recording, or otherwise, without prior subsidiaries in the United States and other written permission of Apple Computer, Inc., countries. with the following exceptions: Any person Java and all Java-based trademarks are is hereby authorized to store documentation trademarks or registered trademarks of Sun on a single computer for personal use only Microsystems, Inc. in the U.S. and other and to print copies of documentation for countries. personal use provided that the OpenGL is a registered trademark of Silicon documentation contains Apple’s copyright Graphics, Inc. notice. Simultaneously published in the United The Apple logo is a trademark of Apple States and Canada. Computer, Inc. Even though Apple has reviewed this document, Use of the “keyboard” Apple logo APPLE MAKES NO WARRANTY OR (Option-Shift-K) for commercial purposes REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS without the prior written consent of Apple DOCUMENT, ITS QUALITY, ACCURACY, may constitute trademark infringement and MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS unfair competition in violation of federal DOCUMENT IS PROVIDED “AS IS,” AND and state laws.
    [Show full text]
  • Building Python Modules on Circleci OS X Instances
    Building Python modules on CircleCI OS X instances Recently I've been building a couple of supplimental build tools in Python for enhancing the development process of the iOS application I work on. I've been trying to make these tools to be appealing for other developers to use and integrate into their systems as well. I see having CI and unit tests as a core part of this goal. I started using CircleCI for my continuous integration environment for these projects. This was working out very well until I started working on some code that relies on a couple of OS X specific APIs. Due to that requirement I was unable to continue using the Linux platform for testing this code. Luckily CircleCI provides OS X instances for open source Mac and iOS projects. I put in a request and was granted access to using OS X instances for building this Python tool. However, I immediately ran into issues with getting the tool to be installed and have my tests run. CircleCI doesn't provide engineering support for free accounts, so I had to work all this out on my own, hopefully you can use this as a guide to also be able to support building Python on OS X build instances on CircleCI. Background The Python tool I am writing relies on the pyobjc framework. This allows Python to make calls into Cocoa and the various other frameworks provided by Apple on OS X. This comes pre-installed on OS X with the system Python version, 2.7.10.
    [Show full text]
  • Python Setup and Usage Release 3.3.3
    Python Setup and Usage Release 3.3.3 Guido van Rossum Fred L. Drake, Jr., editor November 17, 2013 Python Software Foundation Email: [email protected] CONTENTS 1 Command line and environment3 1.1 Command line............................................3 1.2 Environment variables........................................7 2 Using Python on Unix platforms 11 2.1 Getting and installing the latest version of Python.......................... 11 2.2 Building Python........................................... 12 2.3 Python-related paths and files.................................... 12 2.4 Miscellaneous............................................ 12 2.5 Editors................................................ 12 3 Using Python on Windows 15 3.1 Installing Python........................................... 15 3.2 Alternative bundles.......................................... 15 3.3 Configuring Python......................................... 16 3.4 Python Launcher for Windows.................................... 18 3.5 Additional modules......................................... 21 3.6 Compiling Python on Windows................................... 21 3.7 Other resources............................................ 22 4 Using Python on a Macintosh 23 4.1 Getting and Installing MacPython.................................. 23 4.2 The IDE............................................... 24 4.3 Installing Additional Python Packages................................ 24 4.4 GUI Programming on the Mac.................................... 24 4.5 Distributing Python Applications
    [Show full text]
  • Introduction to Pyobjc
    Introduction to PyObjC Author Bob Ippolito Conference PyCon DC, March 2005 Intended Audience • Python developers using Mac OS X 10.3 or later • Spies from the Linux and Win32 camps • Hopefully a GNUstep porter/maintainer Topics • Installing PyObjC • Why Bother? • Objective-C Primer • Crossing the Bridge • Interface Builder • Your First Application • Help! • Who's Using This Stuff? Installing PyObjC Install Xcode: http://developer.apple.com/ Install PyObjC: http://pyobjc.sourceforge.net/ Why Bother? • You paid for that Mac • The tools kick ass • Apple (often) writes good code • The tools kick ass • Objective-C and Python are friends Objective-C • True superset of C • Everything is not an object • Looks kinda like Smalltalk Classes • Flat Namespace • Single Inheritance • ... with Categories and Protocols • Classes are objects • Instance Variables Objective-C Interface @interface MyClass : NSObject { int myInt; } +(id)myClassWithInt:(int)anInt; -(int)myInt; @end Objective-C Implementation @implementation MyClass +(id)myClassWithInt:(int)anInt; { self = [[self alloc] init]; intInstanceVariable = anInt; return self; } -(int)myInt { return myInt; } @end Objects • Separate alloc/init • Everything is an accessor • ... except when using Key-Value Coding • Reference counted • ... but we take care of that • ... except where Apple doesn't Messages • Target • ... can be nil • Selector • Arguments Exceptions • Exceptions are exceptional • Expect bad code to just crash • ... even from Python Crossing the Bridge • unicode, int, long, float work magically • ... str is not safely bridged! • None is just like nil • ... except you can't send messages to it! Objective-C Messages Objective-C Message: [aMutableArray addObject:@"someObject"] Target: aMutableArray Selector: addObject: Arguments: @"someObject" PyObjC Messages Python Message: aMutableArray.addObject_(u'someObject') Target: aMutableArray Selector: addObject: (with colons replaced by underscores!) Arguments: u'someObject' (unicode is equivalent to @"string") Key-Value Coding • Kinda like getattr protocol • ..
    [Show full text]
  • Objective C Property Class
    Objective C Property Class Heptavalent Demetrius shines half-heartedly. Canopic and Heraclean Chance imprisons so unco that Amadeus uprouse his exoplasms. Is Kalvin canted or spleeny after surrendered Georg foretell so wholesomely? Value objects should be immutable: this is required for the implicit contract that two value objects created equal, should remain equal. Having both versions of VIPER in a project will enrich an agriculture with Wireframe naming since both versions of VIPER base wireframes have to same name. Conversion from Celsius to Fahrenheit. You want to create class methods that access static variables which, as others have said, have only a slightly different syntax. Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings. NSObject is cold most basic class that Objective-C provides You'll. Objc The PyObjC bridge PyObjC the Python to Objective. Which contradict this dream to, ivar or property? No compile errors and no unnecessary cluttered interface file! You can extract the help developers focus on the heart to make a parent. Any articles or links that only serve to promote a paid product or service may be removed at our discretion. Default to extract name after the property prefixed by the underscore. Having called a property provides an object but the properties and classes can add it only initialize immutable and even from. To do this, were over again your leave and linger the Build Settings tab. What i forgot apple, which will be copied as local owning module in objective c name. If god have an expertise and want make call each instance method, how would bale do it? The following attributes allow commission to legal custom names instead.
    [Show full text]
  • Python Setup and Usage Release 3.4.3
    Python Setup and Usage Release 3.4.3 Guido van Rossum and the Python development team July 16, 2015 Python Software Foundation Email: [email protected] Contents 1 Command line and environment3 1.1 Command line............................................3 1.2 Environment variables........................................7 2 Using Python on Unix platforms 11 2.1 Getting and installing the latest version of Python.......................... 11 2.2 Building Python........................................... 12 2.3 Python-related paths and files.................................... 12 2.4 Miscellaneous............................................ 12 2.5 Editors................................................ 12 3 Using Python on Windows 15 3.1 Installing Python........................................... 15 3.2 Alternative bundles.......................................... 15 3.3 Configuring Python......................................... 15 3.4 Python Launcher for Windows.................................... 17 3.5 Additional modules......................................... 21 3.6 Compiling Python on Windows................................... 21 3.7 Other resources............................................ 22 4 Using Python on a Macintosh 23 4.1 Getting and Installing MacPython.................................. 23 4.2 The IDE............................................... 24 4.3 Installing Additional Python Packages................................ 24 4.4 GUI Programming on the Mac.................................... 24 4.5 Distributing Python Applications
    [Show full text]
  • Py2app Documentation Release 0.26
    py2app Documentation Release 0.26 Ronald Oussoren, Bob Ippolito Sep 19, 2021 Contents 1 Contents 3 1.1 Installation................................................3 1.2 Tutorial..................................................4 1.3 Debugging application building.....................................5 1.4 Dependencies...............................................6 1.5 Environment in launched applications..................................6 1.6 Frequently Asked Questions.......................................7 1.7 Tweaking your Info.plist.........................................8 1.8 Example setup.py templates.......................................9 1.9 py2app Options.............................................. 11 1.10 Recipes.................................................. 14 1.11 Implementation Details......................................... 16 1.12 py2applet................................................. 18 1.13 Release history.............................................. 18 2 Online Resources 43 3 License 45 i ii py2app Documentation, Release 0.26 py2app is a Python setuptools command which will allow you to make standalone application bundles and plugins from Python scripts. py2app is similar in purpose and design to py2exe for Windows. Contents 1 py2app Documentation, Release 0.26 2 Contents CHAPTER 1 Contents 1.1 Installation 1.1.1 Installing with pip To install py2app using pip, or to upgrade to the latest released version of py2app: $ pip3 install -U py2app 1.1.2 Installing from source To install py2app from source, simply
    [Show full text]