Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

preprocessor

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

preprocessor

Preprocessor for files.

  • 1.1.3
  • PyPI
  • Socket score

Maintainers
1

Preprocessor

Suited for simple preprocessing of Python files. The original use case of the package was annoying Cython work to do with data types. Notice that Preprocessor can run on any type of file (e.g. TSV, C++ sources etc.). To avoid clashes with other programming language preprocessor prefix and suffix is fully tunable.

Example

Here's a small file where we replicate the same Cython code 3 times - once for every of int, float and double datatypes. You can find the code for typed_expression function in sample_utils.py in this repo.

pyp
from sample_utils import typed_expression
ypy

cdef class Mat:
    cdef CMat[dtype] matinternal
    int dtype

    def sum(Mat self):
        # Inline preprcoessor expression. Executes a function.
        # Generally inline expressions should be one line,
        # But can be extended to multiple where all the data
        # on second line and following will be captured into
        # a string argument passed as last positional argument
        # to a function
        pypinline typed_expression(pyp, "self.matinternal", "CMat",
            print('siema')
            return WrapMat(TYPED_EXPRESSION.sum())
        ypy

The output of the preprocessed file looks like this:

cdef class Mat:
    cdef CMat[dtype] matinternal
    int dtype

    def sum(Mat self):
        # Inline preprcoessor expression. Executes a function.
        # Generally inline expressions should be one line,
        # But can be extended to multiple where all the data
        # on second line and following will be captured into
        # a string argument passed as last positional argument
        # to a function
        if self.dtype == np.int32:
            print('siema')
            return WrapMat((<CMat[int]>(self.matinternal)).sum())
        elif self.dtype == np.float32:
            print('siema')
            return WrapMat((<CMat[float]>(self.matinternal)).sum())
        elif self.dtype == np.float64:
            print('siema')
            return WrapMat((<CMat[double]>(self.matinternal)).sum())
        else:
            raise ValueError("Invalid dtype:" + self.dtype + " (should be one of int32, float32, float64)")
Command Line Interface

Preprocessor comes with a command line script, to easily run the preprocessor form environments outside of Python

preprocessor --input sample.py.pre --output sample.py

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc