Metadata-Version: 2.1
Name: streamcpy
Version: 1.0
Summary: The Stream Api in Python
Home-page: https://github.com/littlebutt/streamcpy
Author: littlebutt
Author-email: luogan1996@icloud.com
License: GPL-3.0 license
Platform: UNKNOWN
Classifier: 

Classifier: L
Classifier: i
Classifier: c
Classifier: e
Classifier: n
Classifier: s
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: O
Classifier: S
Classifier: I
Classifier:  
Classifier: A
Classifier: p
Classifier: p
Classifier: r
Classifier: o
Classifier: v
Classifier: e
Classifier: d
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: G
Classifier: P
Classifier: L
Classifier:  
Classifier: L
Classifier: i
Classifier: c
Classifier: e
Classifier: n
Classifier: s
Classifier: e
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: C
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: 3
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: 3
Classifier: .
Classifier: 9
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: 3
Classifier: .
Classifier: 1
Classifier: 0
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: 3
Classifier: .
Classifier: 1
Classifier: 1
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: 3
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: O
Classifier: n
Classifier: l
Classifier: y
Classifier: 

Classifier: P
Classifier: r
Classifier: o
Classifier: g
Classifier: r
Classifier: a
Classifier: m
Classifier: m
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: L
Classifier: a
Classifier: n
Classifier: g
Classifier: u
Classifier: a
Classifier: g
Classifier: e
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: I
Classifier: m
Classifier: p
Classifier: l
Classifier: e
Classifier: m
Classifier: e
Classifier: n
Classifier: t
Classifier: a
Classifier: t
Classifier: i
Classifier: o
Classifier: n
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: C
Classifier: P
Classifier: y
Classifier: t
Classifier: h
Classifier: o
Classifier: n
Classifier: 

Classifier: T
Classifier: o
Classifier: p
Classifier: i
Classifier: c
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: S
Classifier: o
Classifier: f
Classifier: t
Classifier: w
Classifier: a
Classifier: r
Classifier: e
Classifier:  
Classifier: D
Classifier: e
Classifier: v
Classifier: e
Classifier: l
Classifier: o
Classifier: p
Classifier: m
Classifier: e
Classifier: n
Classifier: t
Classifier: 

Classifier: T
Classifier: y
Classifier: p
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: T
Classifier: y
Classifier: p
Classifier: e
Classifier: d
Classifier: 

Classifier: O
Classifier: p
Classifier: e
Classifier: r
Classifier: a
Classifier: t
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: S
Classifier: y
Classifier: s
Classifier: t
Classifier: e
Classifier: m
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: M
Classifier: i
Classifier: c
Classifier: r
Classifier: o
Classifier: s
Classifier: o
Classifier: f
Classifier: t
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: W
Classifier: i
Classifier: n
Classifier: d
Classifier: o
Classifier: w
Classifier: s
Classifier: 

Classifier: O
Classifier: p
Classifier: e
Classifier: r
Classifier: a
Classifier: t
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: S
Classifier: y
Classifier: s
Classifier: t
Classifier: e
Classifier: m
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: P
Classifier: O
Classifier: S
Classifier: I
Classifier: X
Classifier: 

Classifier: O
Classifier: p
Classifier: e
Classifier: r
Classifier: a
Classifier: t
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: S
Classifier: y
Classifier: s
Classifier: t
Classifier: e
Classifier: m
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: U
Classifier: n
Classifier: i
Classifier: x
Classifier: 

Classifier: O
Classifier: p
Classifier: e
Classifier: r
Classifier: a
Classifier: t
Classifier: i
Classifier: n
Classifier: g
Classifier:  
Classifier: S
Classifier: y
Classifier: s
Classifier: t
Classifier: e
Classifier: m
Classifier:  
Classifier: :
Classifier: :
Classifier:  
Classifier: M
Classifier: a
Classifier: c
Classifier: O
Classifier: S
Classifier: 

License-File: LICENSE

streamcpy: The Stream Api in Python
===================================

Streamcpy can provide an approach of processing the data in a
high-effenciency way. Like in
`Java <https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html>`__,
you can use stream-like methods (``map``, ``filter``, ``for_each`` and
so on) to do parrallel calculation and lazy calculation, which can
accelerating your programs. What’s more, The package is implemented in
pure C, which means its runtime speed is even higher!

Currently, the methods bellow is implemented.

-  ☒ filter
-  ☒ map
-  ☒ for_each
-  ☒ collect
-  ☒ distinct
-  ☒ limit
-  ☒ reduce
-  ☒ sorted
-  ☒ max/min
-  ☒ count
-  ☒ any_match/all_match

Installation
------------

(Not Uploaded yet)

Usage
-----

Like Stream Api in Java but slightly different in details

.. code:: python

   from streampy import *

   Stream.of([1, 2, 3])
       .map(lambda x: x * x)
       .for_each(lambda x: print(x))

This api supports various
`Iterable <https://docs.python.org/3/library/stdtypes.html#typeiter>`__
object in Python, like list, tuple and generator. As a result, you can
call it in these ways:

.. code:: python

   from streampy import *

   Stream.of((1, 2, 3))
       .map(lambda x: x * x)
       .for_each(lambda x: print(x))

   # OR

   def gen():
       l = [1, 2, 3]
       for i in l:
           yield i

   g = gen()

   Stream.of(g)
       .map(lambda x: x * x)
       .for_each(lambda x: print(x))

   # OR

   Stream.of(open("foo.txt", 'r'))
       .map(lambda x: x * x)
       .for_each(lambda x: print(x))   

Contribution
------------

Welcome to contribute to the project. The project is written in C. If
you cannot understand Python’s C API, you can refer to the code in
**python** package. It is the streamcpy implemented in python but will
not be packed in the package. Here is the detailed description for each
directory or file:

-  benchmark: a roughly comparison between Python and C++ (*Python
   wins*)
-  build: the built file of the package (``.pyd`` for Windows and
   ``.so`` for Linux or Mac)
-  modules: the source code for streamcpy in C
-  python: the source code for streamcpy in python and only for
   reference
-  vs: the project files for Visual Studio
-  setup.py: the setup file for python
-  streamcpy.c: the entrance file for streamcpy package
-  streamcpy.pyi: the ``.pyi`` file for streamcpy package

Build on Windows
~~~~~~~~~~~~~~~~

-  Download and install the latest `Visual
   Studio <https://visualstudio.microsoft.com/>`__
-  Install Python Development workload. The workload includes the Python
   native development tools, which bring in the C++ workload and
   toolsets that are necessary for native extensions
-  Install Desktop Development with C++ workload. It comes with the
   default core editor, which includes basic code editing support for
   C/C++
-  Double-click the ``.vcxproj`` in vs folder and build the ``.sln``
   file
-  Run the project!

Build on Linux/Mac
~~~~~~~~~~~~~~~~~~

-  Download the Python interpreter from the offcial website
-  Download the gcc(>7.5.0)
-  Run the command below for building

.. code:: shell

   python setup.py build

-  Run the command below for installing

.. code:: shell

   python setup.py install

..

   NOTE: The method is also suitable for Windows if Visual Studio or
   Visual Studio Build Tools installed.


