This also fixes a bug in liberty_float for numbers with a magnitute
between 9 and 15.
Previously:
>>> liberty_float(1e15)
'1000000000000000'
>>> liberty_float(1e10)
'10000000000.'
>>> liberty_float(1e9)
'1000000000.0'
>>> liberty_float(1e16)
'1.000000e+16'
Now:
>>> liberty_float(1e15)
'1.000000e+15'
>>> liberty_float(1e10)
'1.000000e+10'
>>> liberty_float(1e9)
'1000000000.0'
>>> liberty_float(1e16)
'1.000000e+16'
* Add functions for producing different types of values into liberty
output (plus doctests for them).
* Respect the type given by a `define()` statement.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
Fixes#37, #40.
The `LIBERTY_ATTRIBUTE_ORDER` template is used to control the ordering
of the liberty attribute output.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
[flake8](http://flake8.pycqa.org) testing of https://github.com/google/skywater-pdk on Python 3.8.3
$ __flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics__
```
./scripts/python-skywater-pdk/skywater_pdk/base.py:332:71: F821 undefined name 'minor'
return (self.milestone, self.major, self.minor, self.commits, minor)
^
1 F821 undefined name 'minor'
1
```
https://flake8.pycqa.org/en/latest/user/error-codes.html
On the flake8 test selection, this PR does _not_ focus on "_style violations_" (the majority of flake8 error codes that [__psf/black__](https://github.com/psf/black) can autocorrect). Instead these tests are focus on runtime safety and correctness:
* E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST). Often these issues are a sign of unused code or code that has not been ported to Python 3. These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user.
* F63 tests are usually about the confusion between identity and equality in Python. Use ==/!= to compare str, bytes, and int literals is the classic case. These are areas where __a == b__ is True but __a is b__ is False (or vice versa). Python >= 3.8 will raise SyntaxWarnings on these instances.
* F7 tests logic errors and syntax errors in type hints
* F82 tests are almost always _undefined names_ which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3. These also would be compile-time errors in a compiled language but in Python a __NameError__ is raised which will halt/crash the script on the user.
This work might look like extensive for just fixing a small issue like
the include rendering, but it will all be heavily reused by the
skywater-pdk scripts that will be released soon.
This commit;
- Adds Makefile for creating a self contained conda environment under
`env/conda`
- Installs required Python dependencies into the environment (which is
currently just the `rst_include` tool).
- Has a Makefile to generate `README.rst` from `README.src.rst`
- Has Travis CI run on repository and check that the `README.rst` file
has been rebuilt and committed if any of the dependencies have
change.
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>