[Python-checkins] peps: Add PEP 482, 483, 484 -- type hints. The latter two are stubs.
guido.van.rossum
python-checkins at python.org
Thu Jan 8 20:10:40 CET 2015
https://hg.python.org/peps/rev/7cbb166b30fd
changeset: 5662:7cbb166b30fd
user: Guido van Rossum <guido at python.org>
date: Thu Jan 08 11:10:25 2015 -0800
summary:
Add PEP 482, 483, 484 -- type hints. The latter two are stubs.
files:
pep-0482.txt | 222 +++++++++++++++++++++++++++++++++++++++
pep-0483.txt | 28 ++++
pep-0484.txt | 28 ++++
3 files changed, 278 insertions(+), 0 deletions(-)
diff --git a/pep-0482.txt b/pep-0482.txt
new file mode 100644
--- /dev/null
+++ b/pep-0482.txt
@@ -0,0 +1,222 @@
+PEP: 482
+Title: Literature Overview for Type Hinting
+Version: $Revision$
+Last-Modified: $Date$
+Author: Łukasz Langa <lukasz at langa.pl>
+Discussions-To: Python-Ideas <python-ideas at python.org>
+Status: Draft
+Type: Informational
+Content-Type: text/x-rst
+Created: 08-Jan-2015
+Post-History:
+Resolution:
+
+Abstract
+========
+
+This PEP is one of three related to type hinting. This PEP gives a
+literature overview of related work.
+
+
+Existing Approaches in Other Languages
+======================================
+
+mypy
+----
+
+(This section is a stub, since mypy [mypy]_ is essentially what we're
+proposing.)
+
+ActionScript
+------------
+
+ActionScript [actionscript]_ is a class-based, single inheritance,
+object-oriented superset of ECMAScript. It supports inferfaces and
+strong runtime-checked static typing. Compilation supports a “strict
+dialect” where type mismatches are reported at compile-time.
+
+Example code with types::
+
+ package {
+ import flash.events.Event;
+
+ public class BounceEvent extends Event {
+ public static const BOUNCE:String = "bounce";
+ private var _side:String = "none";
+
+ public function get side():String {
+ return _side;
+ }
+
+ public function BounceEvent(type:String, side:String){
+ super(type, true);
+ _side = side;
+ }
+
+ public override function clone():Event {
+ return new BounceEvent(type, _side);
+ }
+ }
+ }
+
+Dart
+----
+
+Dart [dart]_ is a class-based, single inheritance, object-oriented
+language with C-style syntax. It supports interfaces, abstract classes,
+reified generics, and optional typing.
+
+Types are inferred when possible. The runtime differentiates between two
+modes of execution: *checked mode* aimed for development (catching type
+errors at runtime) and *production mode* recommended for speed execution
+(ignoring types and asserts).
+
+Example code with types::
+
+ class Point {
+ final num x, y;
+
+ Point(this.x, this.y);
+
+ num distanceTo(Point other) {
+ var dx = x - other.x;
+ var dy = y - other.y;
+ return math.sqrt(dx * dx + dy * dy);
+ }
+ }
+
+Hack
+----
+
+Hack [hack]_ is a programming language that interoperates seamlessly
+with PHP. It provides opt-in static type checking, type aliasing,
+generics, nullable types, and lambdas.
+
+Example code with types::
+
+ <?hh
+ class MyClass {
+ private ?string $x = null;
+
+ public function alpha(): int {
+ return 1;
+ }
+
+ public function beta(): string {
+ return 'hi test';
+ }
+ }
+
+ function f(MyClass $my_inst): string {
+ // Will generate a hh_client error
+ return $my_inst->alpha();
+ }
+
+TypeScript
+----------
+
+TypeScript [typescript]_ is a typed superset of JavaScript that adds
+interfaces, classes, mixins and modules to the language.
+
+Type checks are duck typed. Multiple valid function signatures are
+specified by supplying overloaded function declarations. Functions and
+classes can use generics as type parametrization. Interfaces can have
+optional fields. Interfaces can specify array and dictionary types.
+Classes can have constructors that implicitly add arguments as fields.
+Classes can have static fields. Classes can have private fields.
+Classes can have getters/setters for fields (like property). Types are
+inferred.
+
+Example code with types::
+
+ interface Drivable {
+ start(): void;
+ drive(distance: number): boolean;
+ getPosition(): number;
+ }
+
+ class Car implements Drivable {
+ private _isRunning: boolean;
+ private _distanceFromStart: number;
+
+ constructor() {
+ this._isRunning = false;
+ this._distanceFromStart = 0;
+ }
+
+ public start() {
+ this._isRunning = true;
+ }
+
+ public drive(distance: number): boolean {
+ if (this._isRunning) {
+ this._distanceFromStart += distance;
+ return true;
+ }
+ return false;
+ }
+
+ public getPosition(): number {
+ return this._distanceFromStart;
+ }
+ }
+
+
+References
+==========
+
+.. [pep-3107]
+ http://www.python.org/dev/peps/pep-3107/
+
+.. [mypy]
+ http://mypy-lang.org
+
+.. [obiwan]
+ http://pypi.python.org/pypi/obiwan
+
+.. [numba]
+ http://numba.pydata.org
+
+.. [pytypedecl]
+ https://github.com/google/pytypedecl
+
+.. [argumentclinic]
+ https://docs.python.org/3/howto/clinic.html
+
+.. [numpy]
+ http://www.numpy.org
+
+.. [typescript]
+ http://www.typescriptlang.org
+
+.. [hack]
+ http://hacklang.org
+
+.. [dart]
+ https://www.dartlang.org
+
+.. [actionscript]
+ http://livedocs.adobe.com/specs/actionscript/3/
+
+.. [pyflakes]
+ https://github.com/pyflakes/pyflakes/
+
+.. [pylint]
+ http://www.pylint.org
+
+
+Copyright
+=========
+
+This document has been placed in the public domain.
+
+
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
diff --git a/pep-0483.txt b/pep-0483.txt
new file mode 100644
--- /dev/null
+++ b/pep-0483.txt
@@ -0,0 +1,28 @@
+PEP: 483
+Title: The Theory of Type Hinting
+Version: $Revision$
+Last-Modified: $Date$
+Author: Guido van Rossum <guido at python.org>
+Discussions-To: Python-Ideas <python-ideas at python.org>
+Status: Draft
+Type: Informational
+Content-Type: text/x-rst
+Created: 08-Jan-2015
+Post-History:
+Resolution:
+
+Abstract
+========
+
+This PEP is currently a stub. The content should be copied from
+https://quip.com/r69HA9GhGa7J and reformatted.
+
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
diff --git a/pep-0484.txt b/pep-0484.txt
new file mode 100644
--- /dev/null
+++ b/pep-0484.txt
@@ -0,0 +1,28 @@
+PEP: 484
+Title: Type Hints
+Version: $Revision$
+Last-Modified: $Date$
+Author: Guido van Rossum <guido at python.org>, Jukka Lehtosalo <jukka.lehtosalo at iki.fi>, Łukasz Langa <lukasz at langa.pl>
+Discussions-To: Python-Ideas <python-ideas at python.org>
+Status: Draft
+Type: Standards Track
+Content-Type: text/x-rst
+Created: 08-Jan-2015
+Post-History:
+Resolution:
+
+Abstract
+========
+
+This PEP is currently a stub. The content should be copied from
+https://github.com/ambv/typehinting (but omitting the literature overview, which is PEP 482) and reformatted.
+
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
--
Repository URL: https://hg.python.org/peps
More information about the Python-checkins
mailing list