Skip to main content

The Stream Api in Python

Project description

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, 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

from streampy import *

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

This api supports various Iterable object in Python, like list, tuple and generator. As a result, you can call it in these ways:

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

  • 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

python setup.py build
  • Run the command below for installing

python setup.py install

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamcpy-1.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

streamcpy-1.0-cp39-cp39-win_amd64.whl (25.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

File details

Details for the file streamcpy-1.0.tar.gz.

File metadata

  • Download URL: streamcpy-1.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for streamcpy-1.0.tar.gz
Algorithm Hash digest
SHA256 8f4823ec0009d6262fd185d1641d0580d4fde8f33dbda638057d2aee365a98bc
MD5 70f0fb6fd6c2087dbce44500d36f7c63
BLAKE2b-256 df08e98a2167980f5931eb80bddeff6800683bfd2036892f667c55915e721a22

See more details on using hashes here.

File details

Details for the file streamcpy-1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: streamcpy-1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for streamcpy-1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3495387008c37746bd80e58a2b8ef7b32a1fa2052ce667059f7f6abbc8996dd7
MD5 09eec6c2d3b24aad207388bd456779ec
BLAKE2b-256 497d238cf49566fbd567aeb137a1afd69bae1eefa2d2a6c1c41cdb3c70bbcadb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page