Skip to main content

Preprocessor for files.

Project description

### 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.

```Python
pyp
from sample_utils import typed_expression
endpyp

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
pyp:typed_expression(pyp, "self.matinternal", "CMat",
print('siema')
return WrapMat(TYPED_EXPRESSION.sum())
endpyp
```

The output of the preprocessed file looks like this:

```Python
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

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

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

preprocessor-1.0.5.tar.gz (3.6 kB view details)

Uploaded Source

File details

Details for the file preprocessor-1.0.5.tar.gz.

File metadata

  • Download URL: preprocessor-1.0.5.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for preprocessor-1.0.5.tar.gz
Algorithm Hash digest
SHA256 6bea94ab3fad2dd7f604bd297642293e770550c64c13a43f32bcc28e7f3e9ade
MD5 c5dec97b8ef3370a75b8dd8f1d1d388b
BLAKE2b-256 86bd9890d584ceefe27820cb4c686c357d72255bc8d5fd1c1ff9f09af801a021

See more details on using hashes here.

Supported by

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