7
If you have any suggestions, bug reports, or minor annoyances, please report
8
them to the issue tracker on GitHub: http://github.com/Kronuz/pyScss/issues
14
Please send us pull requests on GitHub! https://github.com/Kronuz/pyScss
17
Running the test suite
18
----------------------
20
The test suite is built atop the excellent `py.test`_ library, and can be run with::
24
from the root of a source checkout.
26
.. _py.test: http://pytest.org/latest/
28
Most of the tests are pairs of input/output files in ``scss/tests/files``; the
29
test suite scans for these, compiles all the ``.scss`` files, and compares the
30
output with the ``.css`` file of the same name. You can limit which file tests
33
py.test --test-file-filter=REGEX,REGEX,REGEX...
35
There are also several tests borrowed from the Ruby and C implementations.
36
Many of these don't work (due to missing features, different error messages,
37
slightly different formatting, etc.), so to reduce the useless noise produced
38
by a test run, you must explicitly opt into them with ``--include-ruby``, even
39
when using a file filter. These files are in the ``from-ruby/`` and
40
``from-sassc/`` subdirectories.
42
Additionally, test files in the ``xfail/`` subdirectory are assumed to fail.
43
Other than these cases, the directory names are arbitrary.
49
Copyright © 2012 German M. Bravo (Kronuz), with additional heavy contributions
50
by Eevee (Alex Munroe). Licensed under the `MIT license`_.
52
.. _MIT license: http://www.opensource.org/licenses/mit-license.php
54
pyScss is inspired by and partially derived from various projects:
56
* `Compass`_ © 2009 Christopher M. Eppstein
57
* `Sass`_ © 2006-2009 Hampton Catlin and Nathan Weizenbaum
58
* `xCSS`_ © 2010 Anton Pawlik
60
.. _Compass: http://compass-style.org/
61
.. _Sass: http://sass-lang.com/
62
.. _xCSS: http://xcss.antpaw.org/docs/
64
Special thanks to Yelp for allowing Eevee to contribute to pyScss during
65
working hours. Yelp does not claim copyright.
74
Very minor bugfix release.
76
* ``apply_extends`` is now threadsafe.
77
* Default function arguments that are strings containing interpolations of earlier function arguments now work... sort of. This allows Bootstrap 3.2 to compile correctly.
82
This is a significant release that greatly increases compatibility with the
83
reference compiler; in particular, the Sass port of Bootstrap now compiles.
85
There are a lot of changes here, so please feel free to report any bugs you
86
see! The goal is 100% compatibility with the Ruby project.
91
* Dashes and underscores are treated as interchangeable in variable, function, and mixin names.
92
* Rule blocks in the form ``background: red { ... }`` are now supported.
93
* Colors are output as their shortest representation, and never as ``hsl()``. The separate compiler options for compressing colors have been removed.
94
* The color modification functions (``adjust-color``, etc.) now work reliably.
95
* ``transparent`` is recognized as a color.
96
* Unrecognized units are now supported and treated as opaque.
97
* Arbitrary combinations of units (e.g., ``px * px``) are supported for intermediate values. Unit cancellation now works reliably.
98
* Comparison and addition are now more in line with the Ruby behavior.
99
* ``/`` is now left untouched when it appears between literals, as in ``font: 0 / 0``.
100
* ``null`` is supported.
101
* ``zip()`` is supported.
102
* ``grayscale()`` now knows it's also a CSS3 filter function, and won't be evaluated if its argument is a number.
103
* Slurpy arguments (``some-function($args...)``) are supported.
104
* ``@extend`` has been greatly improved: it eliminates common ancestors and works in many complex cases that used to produce strange results.
105
* Several Compass functions now adhere more closely to Compass's behavior. ``linear-gradient()`` is less likely to wreck valid CSS3 syntax.
106
* Compass's ``e()``, ``pow()``, ``log()``, and ``sqrt()`` are now supported.
111
* Interactive mode works. Again.
112
* Color names in strings and selectors are no longer replaced with hex equivalents.
113
* Unrecognized ``@``-rule blocks such as ``@keyframes`` are left alone, rather than being treated like selectors.
114
* ``@media`` blocks aren't repeated for every rule inside.
115
* Pound-interpolation always drops quotes on strings.
116
* Single quoted strings no longer lose their quotes when rendered.
117
* ``+ foo { ... }`` is now recognized as a nested block, not an include.
118
* ``color-stop()`` and several proposed CSS4 functions no longer produce "unrecognized function" warnings.
119
* Several obscure bugs with variable scoping have been fixed, though a couple others remain.
120
* Several bugfixes to the C speedups module to bring it in line with the behavior of the pure-Python scanner.
125
* Python 3 support. As a result, Python 2.5 no longer works; whether this is a bug or a feature is not yet clear.
126
* It's possible to write custom Sass functions in Python, though the API for this is not final.
127
* Experimental support for the map type and destructuring ``@each``, both unreleased additions to the Ruby project.
128
* Support for the new string and list functions in Sass 3.3.
129
* Added ``background-brushed``.
131
Backwards-incompatible changes
132
""""""""""""""""""""""""""""""
134
* Configuration via monkeypatching the ``scss`` module no longer works. Monkeypatch ``scss.config`` instead.
135
* ``em`` and ``px`` are no longer compatible.
136
* Unrecognized variable names are now a fatal error.
141
* No longer a single 5000-line file!
142
* Vastly expanded test suite, including some experimental tests borrowed from the Ruby and C implementations.
143
* Parser now produces an AST rather than evaluating expressions during the parse, which allows for heavier caching and fixes some existing cache bugs.
144
* The type system has been virtually rewritten; types now act much less like Python types, and compilation uses Sass types throughout rather than mixing Python types with Sass types.
149
* ``debug_info`` now properly produces rules that can be used by FireSass and Google Chrome SASS Source Maps.
150
* Improved memory usage for large sets of files to be used as sprites.
151
* Warns about IE 4095 maximum number of selectors.
152
* ``debug_info`` prints info as comments if specified as ``comments``.
153
* Better handling of undefined variables.
154
* Added CSS filter functions and ``skewX`` ``skewY``.
155
* Command line tool and entry point fixed.
156
* Fix cache buster URLs when paths already include queries or fragments.
162
* Added ``--debug-info`` command line option (for *FireSass* output).
163
* Added compass helper function ``reject()``.
164
* Added ``undefined`` keyword for undefined variables.
169
* Support for the new Sass 3.2.0 features (``@content`` and placeholder selectors)
170
* Fixed bug with line numbers throwing an exception.
175
* Regression bug fixed from 1.1.1
180
* Added optional C speedup module for an amazing boost in scanning speed!
181
* Added ``headings``, ``stylesheet-url``, ``font-url``, ``font-files``, ``inline-font-files`` and ``sprite-names``.
186
* Added ``min()`` and ``max()`` for lists.
187
* Removed exception raise.
192
* Optimizations in the scanner.
193
* Added ``background-noise()`` for compass-recipes support.
194
* ``enumerate()`` and ``range()`` can go backwards. Ex.: ``range(3, 0)`` goes from 3 to 0.
195
* Added line numbers and files for errors.
196
* Added support for *Firebug* with *FireSass*.
197
* ``nth(n)`` is round (returns the ``nth mod len`` item of the list).
198
* ``--watch`` added to the command line.
199
* Several bugs fixed.
204
* Changed source color (``$src-color``) default to black.
205
* Moved the module filename to ``__init__.py`` and module renamed back to scss.