معرفی شرکت ها


codeoven-0.1.3


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

Effortlessly integrates C code with Python.
ویژگی مقدار
سیستم عامل -
نام فایل codeoven-0.1.3
نام codeoven
نسخه کتابخانه 0.1.3
نگهدارنده []
ایمیل نگهدارنده []
نویسنده chocolate-icecream
ایمیل نویسنده -
آدرس صفحه اصلی https://github.com/chocolate-icecream/codeoven
آدرس اینترنتی https://pypi.org/project/codeoven/
مجوز -
## Introduction If you're working on scientific calculations using C programming, you might find it tedious to prepare an interface to call it from Python. However, Codeoven offers a simple solution to this problem. All you have to do is add some comment lines to the original C source code, and Codeoven will do the rest. By decorating your code with `@oven` comment lines, the code will be compiled and executed so that it can communicate with your Python script through *stdio*. Using Codeoven eliminates the need to prepare a separate interface to link your C code with Python. Instead, the `@oven` comment lines act as a bridge between the two programming languages. This approach has the added advantage of allowing the original source code to be run in any IDE, making debugging easier. Here is a quick example. Assume that we have a source code *main.c* that adds up from 1 to n. ```c #include <stdio.h> int main(void) { int i, total = 0; int n = 1; // @oven for(i = 1; i <= n; i++) { total += i; } printf("answer:%d\n", total); // @oven return 0; } ``` The following Python script will compile and run main.c to get the sum of 1 to 10. ```python from codeoven import Oven oven = Oven("main.c") result = oven.run({"n": 10}) print(result["answer"]) # -> print 55 ``` Notice that the only modification required to the source code is the `@oven` comments on the lines corresponding to input and output. In terms of the execution speed, the initial compilation and the communication between C and Python through *stdio* would be the major bottleneck. ## Usage #### Loading your source code ``` oven = Oven("main.c") ``` #### Running your program ``` parameter_dict = {"a": 1, "b": 2.0, "c": [3.0, 4.0, 5.0]} result = oven.run(parameter_dict) ``` #### Passing values from Python to C ##### Passing a scalar value ```c // At declaration int a = 1; // @oven //At substitution double b; b = 2; // @oven ``` ##### Passing an array ```c double c[] = {0.0}; ``` #### Passing value from C to Python You can output the results of your calculation using `printf`: ```python printf("key_name:%lf\n", value); // @oven ``` The format string must always be composed of a sequence of a key, a colon, a value, and a newline. As for the value, it can be a number, string tuple list, or dictionary, as long as it can be evaluated by Python's ast.literal_eval. ```c printf("a_and_b:(%d, %lf)\n", a, b); // @oven // This line passes ``` ```c printf("time_series:(%d, %lf)\n", 0, x); // @oven for(i = 0; i < n; i++) x += calculation(i, x); printf("time_series:(%d, %lf)\n", i+1, x); // @oven ``` If multiple outputs are made for the same key, the result is a list in the order of outputs. #### Accessing the results The return value of `run` is a dictionary. You can access it as usual. ``` print(result["a"]) ``` ## Code modifiers #### @oven Input ``` int n = 1; // @oven double array[] = {1.0, 2.0, 3.0}; // @oven ``` Output ``` printf("result:%d\n", n*n); // @oven ``` #### (Plan)@oven.assign (new plan)-> @oven.as: or @oven: Assign the value using a Python statement. ``` int array[] = {2, 3, 5}; // @oven int n = 3; // @oven.assign:array.size ``` ``` double map[][] = {{1.0, 2.0}, {2.0, 3.0}, {3.0, 4.0}}; // @oven int n_x = 2; // @oven.assign:map.shape[0] int n_y = 3; // @oven.assign:map.shape[1] ``` #### @oven.compile The input specified by `@oven.compile` is embdedded directrly in the source code. ``` int n = 1; // @oven.compile double array[] = {1.0, 2.0}; // @oven.compile int n = 2; // @oven.assign:array.size ``` ## Reference #### class `codeoven.Oven` ##### **`codeoven.Oven(file_name:str)`** - `file_name`: The file name of a source code to be processed When an instance of Oven is created, the source code is loaded and parsed. At this stage, no new code is written out yet; the oven instance generates code when `run` or `burn` is executed. ##### **`oven.run(parameters:dict=None) -> dict`** - `parameters`: Initialization or substitution statements commented with "@oven" in the C source code will be replaced using the value of the dictionary at runtime though *stdin*. The compilation will be done once for the first execution. ##### **`oven.burn(parameters:dict=None) -> dict`** - `parameters`: Initialization or substitution statements commented with "@oven" in the C source code will be replaced using the value of the dictionary. Each time the method `burn` is called, the new source code is output, compiled, and executed. No information exchange will be done at runtime, and all the parameters and data will be implemented in the source code. ## Examples ```c #include <stdio.h> int main(void) { double data[] = [1, 3, 5]; // @oven int n = 3; // @over:data.size double result = 0; int i; for (i = 0; i < n; i++) { result += data[i]; } printf("sum:%lf\n", result); // @oven return 0 } ``` ```c #include <stdio.h> int main(void) { double data = [[1, 2, 3], [2, 3, 4]]; // @oven.runtime int imax = 3; // @oven.assign:data.shape[0] int kmax = 2; // @oven.assign:data.shape[1] int i, k; for (i = 0; i <) } ```


نیازمندی

مقدار نام
>=1.0 numpy
>=1.0 pandas


زبان مورد نیاز

مقدار نام
>=3.6 Python


نحوه نصب


نصب پکیج whl codeoven-0.1.3:

    pip install codeoven-0.1.3.whl


نصب پکیج tar.gz codeoven-0.1.3:

    pip install codeoven-0.1.3.tar.gz