1 | initial version |

Instead of `.sage`

files, use `.py`

files. Then everything works pythonically.

The difference between `.sage`

files and `.py`

files is that when Sage
reads `.py`

files no preparsing is applied and all imports must be explicit.

For example, if you want to use `matrix`

in such a file, you will have to use

```
from sage.matrix.constructor import matrix
```

Note that one can easily know what import statements to include, by using
the `import_statements`

function in a Sage session:

```
sage: import_statements('matrix')
from sage.matrix.constructor import matrix
sage: import_statements('ZZ')
from sage.rings.integer_ring import ZZ
```

and one can easily know how to replace Sage-specific constructs that take advantage of the Sage preparser, by asking Sage how they are preparsed:

```
sage: print(preparse('''
....: for i in (1 .. 7):
....: print(i)
....: '''))
for i in (ellipsis_iter(Integer(1), Ellipsis, Integer(7))):
print(i)
sage: print(preparse('R.<x> = PolynomialRing(QQ, 2)'))
R = PolynomialRing(QQ, Integer(2), names=('x',)); (x,) = R._first_ngens(1)
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.