You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2019/07/08 08:12:25 UTC

[flink] branch master updated: [FLINK-13137][py][docs] Remove legacy python docs

This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 2a91b05  [FLINK-13137][py][docs] Remove legacy python docs
2a91b05 is described below

commit 2a91b05270cd870a131d0fbce34d75fa6b2bb8b1
Author: HuangXingBo <hx...@gmail.com>
AuthorDate: Mon Jul 8 16:12:13 2019 +0800

    [FLINK-13137][py][docs] Remove legacy python docs
---
 docs/dev/batch/dataset_transformations.md    | 381 +--------------------------
 docs/dev/batch/dataset_transformations.zh.md | 381 +--------------------------
 docs/dev/batch/zip_elements_guide.md         |  15 --
 docs/dev/batch/zip_elements_guide.zh.md      |  15 --
 4 files changed, 2 insertions(+), 790 deletions(-)

diff --git a/docs/dev/batch/dataset_transformations.md b/docs/dev/batch/dataset_transformations.md
index 112572f..f93d79d 100644
--- a/docs/dev/batch/dataset_transformations.md
+++ b/docs/dev/batch/dataset_transformations.md
@@ -65,13 +65,6 @@ val intSums = intPairs.map { pair => pair._1 + pair._2 }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- intSums = intPairs.map(lambda x: sum(x))
-{% endhighlight %}
-
-</div>
 </div>
 
 ### FlatMap
@@ -109,13 +102,6 @@ val words = textLines.flatMap { _.split(" ") }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- words = lines.flat_map(lambda x,c: [line.split() for line in x])
-{% endhighlight %}
-
-</div>
 </div>
 
 ### MapPartition
@@ -157,13 +143,6 @@ val counts = texLines.mapPartition { in => Some(in.size) }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- counts = lines.map_partition(lambda x,c: [sum(1 for _ in x)])
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Filter
@@ -198,13 +177,6 @@ val naturalNumbers = intNumbers.filter { _ > 0 }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- naturalNumbers = intNumbers.filter(lambda x: x > 0)
-{% endhighlight %}
-
-</div>
 </div>
 
 **IMPORTANT:** The system assumes that the function does not modify the elements on which the predicate is applied. Violating this assumption
@@ -251,13 +223,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-out = in.project(2,0);
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Transformations on Grouped DataSet
@@ -338,12 +303,6 @@ val wordCounts = words.groupBy("word").reduce {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-</div>
 </div>
 
 #### Reduce on DataSet Grouped by KeySelector Function
@@ -407,19 +366,6 @@ val wordCounts = words.groupBy { _.word } reduce {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-class WordCounter(ReduceFunction):
-    def reduce(self, in1, in2):
-        return (in1[0], in1[1] + in2[1])
-
-words = // [...]
-wordCounts = words \
-    .group_by(lambda x: x[0]) \
-    .reduce(WordCounter())
-{% endhighlight %}
-</div>
 </div>
 
 #### Reduce on DataSet Grouped by Field Position Keys (Tuple DataSets only)
@@ -449,13 +395,6 @@ val reducedTuples = tuples.groupBy(0, 1).reduce { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- reducedTuples = tuples.group_by(0, 1).reduce( ... )
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Reduce on DataSet grouped by Case Class Fields
@@ -479,12 +418,6 @@ val reducedTuples = tuples.groupBy("a", "b").reduce { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-</div>
 </div>
 
 ### GroupReduce on Grouped DataSet
@@ -544,21 +477,6 @@ val output = input.groupBy(0).reduceGroup {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class DistinctReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     dic = dict()
-     for value in iterator:
-       dic[value[1]] = 1
-     for key in dic.keys():
-       collector.collect(key)
-
- output = data.group_by(0).reduce_group(DistinctReduce())
-{% endhighlight %}
-
-</div>
 </div>
 
 #### GroupReduce on DataSet Grouped by Key Expression, KeySelector Function, or Case Class Fields
@@ -627,22 +545,6 @@ val output = input.groupBy(0).sortGroup(1, Order.ASCENDING).reduceGroup {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class DistinctReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     dic = dict()
-     for value in iterator:
-       dic[value[1]] = 1
-     for key in dic.keys():
-       collector.collect(key)
-
- output = data.group_by(0).sort_group(1, Order.ASCENDING).reduce_group(DistinctReduce())
-{% endhighlight %}
-
-
-</div>
 </div>
 
 **Note:** A GroupSort often comes for free if the grouping is established using a sort-based execution strategy of an operator before the reduce operation.
@@ -730,26 +632,6 @@ class MyCombinableGroupReducer
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class GroupReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     key, int_sum = iterator.next()
-     for value in iterator:
-       int_sum += value[1]
-     collector.collect(key + "-" + int_sum))
-
-   def combine(self, iterator, collector):
-     key, int_sum = iterator.next()
-     for value in iterator:
-       int_sum += value[1]
-     collector.collect((key, int_sum))
-
-data.reduce_group(GroupReduce(), combinable=True)
-{% endhighlight %}
-
-</div>
 </div>
 
 ### GroupCombine on a Grouped DataSet
@@ -853,13 +735,6 @@ val output: DataSet[(String, Int)] = combinedWords
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The above alternative WordCount implementation demonstrates how the GroupCombine
@@ -900,16 +775,6 @@ val output = input.groupBy(1).aggregate(SUM, 0).and(MIN, 2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-from flink.functions.Aggregation import Sum, Min
-
-input = # [...]
-output = input.group_by(1).aggregate(Sum, 0).and_agg(Min, 2)
-{% endhighlight %}
-
-</div>
 </div>
 
 To apply multiple aggregations on a DataSet it is necessary to use the `.and()` function after the first aggregate, that means `.aggregate(SUM, 0).and(MIN, 2)` produces the sum of field 0 and the minimum of field 2 of the original DataSet.
@@ -944,13 +809,6 @@ val output: DataSet[(Int, String, Double)] = input
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Reduce on full DataSet
@@ -986,14 +844,6 @@ val sum = intNumbers.reduce (_ + _)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- intNumbers = env.from_elements(1,2,3)
- sum = intNumbers.reduce(lambda x,y: x + y)
-{% endhighlight %}
-
-</div>
 </div>
 
 Reducing a full DataSet using the Reduce transformation implies that the final Reduce operation cannot be done in parallel. However, a reduce function is automatically combinable such that a Reduce transformation does not limit scalability for most use cases.
@@ -1023,13 +873,6 @@ val output = input.reduceGroup(new MyGroupReducer())
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- output = data.reduce_group(MyGroupReducer())
-{% endhighlight %}
-
-</div>
 </div>
 
 **Note:** A GroupReduce transformation on a full DataSet cannot be done in parallel if the
@@ -1076,16 +919,6 @@ val output = input.aggregate(SUM, 0).and(MIN, 2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-from flink.functions.Aggregation import Sum, Min
-
-input = # [...]
-output = input.aggregate(Sum, 0).and_agg(Min, 2)
-{% endhighlight %}
-
-</div>
 </div>
 
 **Note:** Extending the set of supported aggregation functions is on our roadmap.
@@ -1115,13 +948,6 @@ val output: DataSet[(Int, String, Double)] = input
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Distinct
@@ -1148,13 +974,6 @@ val output = input.distinct()
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 It is also possible to change how the distinction of the elements in the DataSet is decided, using:
@@ -1184,13 +1003,6 @@ val output = input.distinct(0,2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Distinct with KeySelector function
@@ -1221,13 +1033,6 @@ val output = input.distinct {x => Math.abs(x)}
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Distinct with key expression
@@ -1261,13 +1066,6 @@ val output = input.distinct("aName", "aNumber")
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 It is also possible to indicate to use all the fields by the wildcard character:
@@ -1292,13 +1090,6 @@ val output = input.distinct("_")
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Join
@@ -1343,13 +1134,6 @@ val result = input1.join(input2).where(0).equalTo(1)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- result = input1.join(input2).where(0).equal_to(1)
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join with Join Function
@@ -1412,20 +1196,6 @@ val weightedRatings = ratings.join(weights).where("category").equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class PointWeighter(JoinFunction):
-   def join(self, rating, weight):
-     return (rating[0], rating[1] * weight[1])
-       if value1[3]:
-
- weightedRatings =
-   ratings.join(weights).where(0).equal_to(0). \
-   with(new PointWeighter());
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join with Flat-Join Function
@@ -1471,12 +1241,9 @@ val weightedRatings = ratings.join(weights).where("category").equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-Not supported.
-</div>
 </div>
 
-#### Join with Projection (Java/Python Only)
+#### Join with Projection (Java Only)
 
 A Join transformation can construct result tuples using a projection as shown here:
 
@@ -1508,17 +1275,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- result = input1.join(input2).where(0).equal_to(0) \
-  .project_first(0,2).project_second(1).project_first(1);
-{% endhighlight %}
-
-`project_first(int...)` and `project_second(int...)` select the fields of the first and second joined input that should be assembled into an output Tuple. The order of indexes defines the order of fields in the output tuple.
-The join projection works also for non-Tuple DataSets. In this case, `project_first()` or `project_second()` must be called without arguments to add a joined element to the output Tuple.
-
-</div>
 </div>
 
 #### Join with DataSet Size Hint
@@ -1563,19 +1319,6 @@ val result1 = input1.joinWithHuge(input2).where(0).equalTo(0)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-
- #hint that the second DataSet is very small
- result1 = input1.join_with_tiny(input2).where(0).equal_to(0)
-
- #hint that the second DataSet is very large
- result1 = input1.join_with_huge(input2).where(0).equal_to(0)
-
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join Algorithm Hints
@@ -1609,13 +1352,6 @@ val result1 = input1.join(input2, JoinHint.BROADCAST_HASH_FIRST).where("id").equ
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The following hints are available:
@@ -1719,13 +1455,6 @@ val moviesWithPoints = movies.leftOuterJoin(ratings).where(0).equalTo("name") {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### OuterJoin with Flat-Join Function
@@ -1765,13 +1494,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join Algorithm Hints
@@ -1811,13 +1533,6 @@ val result2 = input1.rightOuterJoin(input2, JoinHint.BROADCAST_HASH_FIRST).where
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The following hints are available.
@@ -1940,27 +1655,6 @@ val distances = coords1.cross(coords2) {
 
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class Euclid(CrossFunction):
-   def cross(self, c1, c2):
-     return (c1[0], c2[0], sqrt(pow(c1[1] - c2.[1], 2) + pow(c1[2] - c2[2], 2)))
-
- distances = coords1.cross(coords2).using(Euclid())
-{% endhighlight %}
-
-#### Cross with Projection
-
-A Cross transformation can also construct result tuples using a projection as shown here:
-
-{% highlight python %}
-result = input1.cross(input2).projectFirst(1,0).projectSecond(0,1);
-{% endhighlight %}
-
-The field selection in a Cross projection works the same way as in the projection of Join results.
-
-</div>
 </div>
 
 #### Cross with DataSet Size Hint
@@ -2005,18 +1699,6 @@ val result1 = input1.crossWithHuge(input2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- #hint that the second DataSet is very small
- result1 = input1.cross_with_tiny(input2)
-
- #hint that the second DataSet is very large
- result1 = input1.cross_with_huge(input2)
-
-{% endhighlight %}
-
-</div>
 </div>
 
 ### CoGroup
@@ -2091,25 +1773,6 @@ val output = iVals.coGroup(dVals).where(0).equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class CoGroup(CoGroupFunction):
-   def co_group(self, ivals, dvals, collector):
-     ints = dict()
-     # add all Integer values in group to set
-     for value in ivals:
-       ints[value[1]] = 1
-     # multiply each Double value with each unique Integer values of group
-     for value in dvals:
-       for i in ints.keys():
-         collector.collect(value[1] * i)
-
-
- output = ivals.co_group(dvals).where(0).equal_to(0).using(CoGroup())
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2139,13 +1802,6 @@ val unioned = vals1.union(vals2).union(vals3)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- unioned = vals1.union(vals2).union(vals3)
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Rebalance
@@ -2171,13 +1827,6 @@ val out = in.rebalance().map { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2206,13 +1855,6 @@ val out = in.partitionByHash(0).mapPartition { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Range-Partition
@@ -2240,13 +1882,6 @@ val out = in.partitionByRange(0).mapPartition { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2283,13 +1918,6 @@ val out = in.sortPartition(1, Order.ASCENDING)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### First-n
@@ -2330,13 +1958,6 @@ val out3 = in.groupBy(0).sortGroup(1, Order.ASCENDING).first(3)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 {% top %}
diff --git a/docs/dev/batch/dataset_transformations.zh.md b/docs/dev/batch/dataset_transformations.zh.md
index 112572f..f93d79d 100644
--- a/docs/dev/batch/dataset_transformations.zh.md
+++ b/docs/dev/batch/dataset_transformations.zh.md
@@ -65,13 +65,6 @@ val intSums = intPairs.map { pair => pair._1 + pair._2 }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- intSums = intPairs.map(lambda x: sum(x))
-{% endhighlight %}
-
-</div>
 </div>
 
 ### FlatMap
@@ -109,13 +102,6 @@ val words = textLines.flatMap { _.split(" ") }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- words = lines.flat_map(lambda x,c: [line.split() for line in x])
-{% endhighlight %}
-
-</div>
 </div>
 
 ### MapPartition
@@ -157,13 +143,6 @@ val counts = texLines.mapPartition { in => Some(in.size) }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- counts = lines.map_partition(lambda x,c: [sum(1 for _ in x)])
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Filter
@@ -198,13 +177,6 @@ val naturalNumbers = intNumbers.filter { _ > 0 }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- naturalNumbers = intNumbers.filter(lambda x: x > 0)
-{% endhighlight %}
-
-</div>
 </div>
 
 **IMPORTANT:** The system assumes that the function does not modify the elements on which the predicate is applied. Violating this assumption
@@ -251,13 +223,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-out = in.project(2,0);
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Transformations on Grouped DataSet
@@ -338,12 +303,6 @@ val wordCounts = words.groupBy("word").reduce {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-</div>
 </div>
 
 #### Reduce on DataSet Grouped by KeySelector Function
@@ -407,19 +366,6 @@ val wordCounts = words.groupBy { _.word } reduce {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-class WordCounter(ReduceFunction):
-    def reduce(self, in1, in2):
-        return (in1[0], in1[1] + in2[1])
-
-words = // [...]
-wordCounts = words \
-    .group_by(lambda x: x[0]) \
-    .reduce(WordCounter())
-{% endhighlight %}
-</div>
 </div>
 
 #### Reduce on DataSet Grouped by Field Position Keys (Tuple DataSets only)
@@ -449,13 +395,6 @@ val reducedTuples = tuples.groupBy(0, 1).reduce { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- reducedTuples = tuples.group_by(0, 1).reduce( ... )
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Reduce on DataSet grouped by Case Class Fields
@@ -479,12 +418,6 @@ val reducedTuples = tuples.groupBy("a", "b").reduce { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-</div>
 </div>
 
 ### GroupReduce on Grouped DataSet
@@ -544,21 +477,6 @@ val output = input.groupBy(0).reduceGroup {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class DistinctReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     dic = dict()
-     for value in iterator:
-       dic[value[1]] = 1
-     for key in dic.keys():
-       collector.collect(key)
-
- output = data.group_by(0).reduce_group(DistinctReduce())
-{% endhighlight %}
-
-</div>
 </div>
 
 #### GroupReduce on DataSet Grouped by Key Expression, KeySelector Function, or Case Class Fields
@@ -627,22 +545,6 @@ val output = input.groupBy(0).sortGroup(1, Order.ASCENDING).reduceGroup {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class DistinctReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     dic = dict()
-     for value in iterator:
-       dic[value[1]] = 1
-     for key in dic.keys():
-       collector.collect(key)
-
- output = data.group_by(0).sort_group(1, Order.ASCENDING).reduce_group(DistinctReduce())
-{% endhighlight %}
-
-
-</div>
 </div>
 
 **Note:** A GroupSort often comes for free if the grouping is established using a sort-based execution strategy of an operator before the reduce operation.
@@ -730,26 +632,6 @@ class MyCombinableGroupReducer
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class GroupReduce(GroupReduceFunction):
-   def reduce(self, iterator, collector):
-     key, int_sum = iterator.next()
-     for value in iterator:
-       int_sum += value[1]
-     collector.collect(key + "-" + int_sum))
-
-   def combine(self, iterator, collector):
-     key, int_sum = iterator.next()
-     for value in iterator:
-       int_sum += value[1]
-     collector.collect((key, int_sum))
-
-data.reduce_group(GroupReduce(), combinable=True)
-{% endhighlight %}
-
-</div>
 </div>
 
 ### GroupCombine on a Grouped DataSet
@@ -853,13 +735,6 @@ val output: DataSet[(String, Int)] = combinedWords
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The above alternative WordCount implementation demonstrates how the GroupCombine
@@ -900,16 +775,6 @@ val output = input.groupBy(1).aggregate(SUM, 0).and(MIN, 2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-from flink.functions.Aggregation import Sum, Min
-
-input = # [...]
-output = input.group_by(1).aggregate(Sum, 0).and_agg(Min, 2)
-{% endhighlight %}
-
-</div>
 </div>
 
 To apply multiple aggregations on a DataSet it is necessary to use the `.and()` function after the first aggregate, that means `.aggregate(SUM, 0).and(MIN, 2)` produces the sum of field 0 and the minimum of field 2 of the original DataSet.
@@ -944,13 +809,6 @@ val output: DataSet[(Int, String, Double)] = input
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Reduce on full DataSet
@@ -986,14 +844,6 @@ val sum = intNumbers.reduce (_ + _)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- intNumbers = env.from_elements(1,2,3)
- sum = intNumbers.reduce(lambda x,y: x + y)
-{% endhighlight %}
-
-</div>
 </div>
 
 Reducing a full DataSet using the Reduce transformation implies that the final Reduce operation cannot be done in parallel. However, a reduce function is automatically combinable such that a Reduce transformation does not limit scalability for most use cases.
@@ -1023,13 +873,6 @@ val output = input.reduceGroup(new MyGroupReducer())
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- output = data.reduce_group(MyGroupReducer())
-{% endhighlight %}
-
-</div>
 </div>
 
 **Note:** A GroupReduce transformation on a full DataSet cannot be done in parallel if the
@@ -1076,16 +919,6 @@ val output = input.aggregate(SUM, 0).and(MIN, 2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-from flink.functions.Aggregation import Sum, Min
-
-input = # [...]
-output = input.aggregate(Sum, 0).and_agg(Min, 2)
-{% endhighlight %}
-
-</div>
 </div>
 
 **Note:** Extending the set of supported aggregation functions is on our roadmap.
@@ -1115,13 +948,6 @@ val output: DataSet[(Int, String, Double)] = input
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Distinct
@@ -1148,13 +974,6 @@ val output = input.distinct()
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 It is also possible to change how the distinction of the elements in the DataSet is decided, using:
@@ -1184,13 +1003,6 @@ val output = input.distinct(0,2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Distinct with KeySelector function
@@ -1221,13 +1033,6 @@ val output = input.distinct {x => Math.abs(x)}
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Distinct with key expression
@@ -1261,13 +1066,6 @@ val output = input.distinct("aName", "aNumber")
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 It is also possible to indicate to use all the fields by the wildcard character:
@@ -1292,13 +1090,6 @@ val output = input.distinct("_")
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Join
@@ -1343,13 +1134,6 @@ val result = input1.join(input2).where(0).equalTo(1)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- result = input1.join(input2).where(0).equal_to(1)
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join with Join Function
@@ -1412,20 +1196,6 @@ val weightedRatings = ratings.join(weights).where("category").equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class PointWeighter(JoinFunction):
-   def join(self, rating, weight):
-     return (rating[0], rating[1] * weight[1])
-       if value1[3]:
-
- weightedRatings =
-   ratings.join(weights).where(0).equal_to(0). \
-   with(new PointWeighter());
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join with Flat-Join Function
@@ -1471,12 +1241,9 @@ val weightedRatings = ratings.join(weights).where("category").equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-Not supported.
-</div>
 </div>
 
-#### Join with Projection (Java/Python Only)
+#### Join with Projection (Java Only)
 
 A Join transformation can construct result tuples using a projection as shown here:
 
@@ -1508,17 +1275,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- result = input1.join(input2).where(0).equal_to(0) \
-  .project_first(0,2).project_second(1).project_first(1);
-{% endhighlight %}
-
-`project_first(int...)` and `project_second(int...)` select the fields of the first and second joined input that should be assembled into an output Tuple. The order of indexes defines the order of fields in the output tuple.
-The join projection works also for non-Tuple DataSets. In this case, `project_first()` or `project_second()` must be called without arguments to add a joined element to the output Tuple.
-
-</div>
 </div>
 
 #### Join with DataSet Size Hint
@@ -1563,19 +1319,6 @@ val result1 = input1.joinWithHuge(input2).where(0).equalTo(0)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-
- #hint that the second DataSet is very small
- result1 = input1.join_with_tiny(input2).where(0).equal_to(0)
-
- #hint that the second DataSet is very large
- result1 = input1.join_with_huge(input2).where(0).equal_to(0)
-
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join Algorithm Hints
@@ -1609,13 +1352,6 @@ val result1 = input1.join(input2, JoinHint.BROADCAST_HASH_FIRST).where("id").equ
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The following hints are available:
@@ -1719,13 +1455,6 @@ val moviesWithPoints = movies.leftOuterJoin(ratings).where(0).equalTo("name") {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### OuterJoin with Flat-Join Function
@@ -1765,13 +1494,6 @@ Not supported.
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 #### Join Algorithm Hints
@@ -1811,13 +1533,6 @@ val result2 = input1.rightOuterJoin(input2, JoinHint.BROADCAST_HASH_FIRST).where
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 The following hints are available.
@@ -1940,27 +1655,6 @@ val distances = coords1.cross(coords2) {
 
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class Euclid(CrossFunction):
-   def cross(self, c1, c2):
-     return (c1[0], c2[0], sqrt(pow(c1[1] - c2.[1], 2) + pow(c1[2] - c2[2], 2)))
-
- distances = coords1.cross(coords2).using(Euclid())
-{% endhighlight %}
-
-#### Cross with Projection
-
-A Cross transformation can also construct result tuples using a projection as shown here:
-
-{% highlight python %}
-result = input1.cross(input2).projectFirst(1,0).projectSecond(0,1);
-{% endhighlight %}
-
-The field selection in a Cross projection works the same way as in the projection of Join results.
-
-</div>
 </div>
 
 #### Cross with DataSet Size Hint
@@ -2005,18 +1699,6 @@ val result1 = input1.crossWithHuge(input2)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- #hint that the second DataSet is very small
- result1 = input1.cross_with_tiny(input2)
-
- #hint that the second DataSet is very large
- result1 = input1.cross_with_huge(input2)
-
-{% endhighlight %}
-
-</div>
 </div>
 
 ### CoGroup
@@ -2091,25 +1773,6 @@ val output = iVals.coGroup(dVals).where(0).equalTo(0) {
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- class CoGroup(CoGroupFunction):
-   def co_group(self, ivals, dvals, collector):
-     ints = dict()
-     # add all Integer values in group to set
-     for value in ivals:
-       ints[value[1]] = 1
-     # multiply each Double value with each unique Integer values of group
-     for value in dvals:
-       for i in ints.keys():
-         collector.collect(value[1] * i)
-
-
- output = ivals.co_group(dvals).where(0).equal_to(0).using(CoGroup())
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2139,13 +1802,6 @@ val unioned = vals1.union(vals2).union(vals3)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
- unioned = vals1.union(vals2).union(vals3)
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Rebalance
@@ -2171,13 +1827,6 @@ val out = in.rebalance().map { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2206,13 +1855,6 @@ val out = in.partitionByHash(0).mapPartition { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### Range-Partition
@@ -2240,13 +1882,6 @@ val out = in.partitionByRange(0).mapPartition { ... }
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 
@@ -2283,13 +1918,6 @@ val out = in.sortPartition(1, Order.ASCENDING)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 ### First-n
@@ -2330,13 +1958,6 @@ val out3 = in.groupBy(0).sortGroup(1, Order.ASCENDING).first(3)
 {% endhighlight %}
 
 </div>
-<div data-lang="python" markdown="1">
-
-{% highlight python %}
-Not supported.
-{% endhighlight %}
-
-</div>
 </div>
 
 {% top %}
diff --git a/docs/dev/batch/zip_elements_guide.md b/docs/dev/batch/zip_elements_guide.md
index 0ec5f84..4012b8e 100644
--- a/docs/dev/batch/zip_elements_guide.md
+++ b/docs/dev/batch/zip_elements_guide.md
@@ -64,21 +64,6 @@ env.execute()
 {% endhighlight %}
 </div>
 
-<div data-lang="python" markdown="1">
-{% highlight python %}
-from flink.plan.Environment import get_environment
-
-env = get_environment()
-env.set_parallelism(2)
-input = env.from_elements("A", "B", "C", "D", "E", "F", "G", "H")
-
-result = input.zip_with_index()
-
-result.write_text(result_path)
-env.execute()
-{% endhighlight %}
-</div>
-
 </div>
 
 may yield the tuples: (0,G), (1,H), (2,A), (3,B), (4,C), (5,D), (6,E), (7,F)
diff --git a/docs/dev/batch/zip_elements_guide.zh.md b/docs/dev/batch/zip_elements_guide.zh.md
index 0ec5f84..4012b8e 100644
--- a/docs/dev/batch/zip_elements_guide.zh.md
+++ b/docs/dev/batch/zip_elements_guide.zh.md
@@ -64,21 +64,6 @@ env.execute()
 {% endhighlight %}
 </div>
 
-<div data-lang="python" markdown="1">
-{% highlight python %}
-from flink.plan.Environment import get_environment
-
-env = get_environment()
-env.set_parallelism(2)
-input = env.from_elements("A", "B", "C", "D", "E", "F", "G", "H")
-
-result = input.zip_with_index()
-
-result.write_text(result_path)
-env.execute()
-{% endhighlight %}
-</div>
-
 </div>
 
 may yield the tuples: (0,G), (1,H), (2,A), (3,B), (4,C), (5,D), (6,E), (7,F)