1PYSASSC(1)                          libsass                         PYSASSC(1)
2
3
4

NAME

6       pysassc - libsass Documentation
7
8       This  package  provides  a simple Python extension module sass which is
9       binding LibSass (written in C/C++ by Hampton Catlin and  Aaron  Leung).
10       It's  very  straightforward and there isn't any headache related Python
11       distribution/deployment.  That means you can add just libsass into your
12       setup.py's install_requires list or requirements.txt file.
13
14       It currently supports CPython 2.6, 2.7, 3.5--3.7, and PyPy 2.3+!
15

FEATURES

17       • You  don't need any Ruby/Node.js stack at all, for development or de‐
18         ployment either.
19
20       • Fast. (LibSass is written in C++.)
21
22       • Simple API.  See example code for details.
23
24       • Custom functions.
25
26@import callbacks.
27
28       • Support both tabbed (Sass) and braces (SCSS) syntax.
29
30       • WSGI middleware for ease of development.  It  automatically  compiles
31         Sass/SCSS  files  for  each request.  See also sassutils.wsgi for de‐
32         tails.
33
34setuptools/distutils integration.  You can build all Sass/SCSS  files
35         using  setup.py build_sass command.  See also sassutils.distutils for
36         details.
37
38       • Works also on PyPy.
39
40       • Provides prebuilt wheel (PEP 427) binaries for Windows and Mac.
41

INSTALL

43       It's available on PyPI, so you can install it using pip:
44
45          $ pip install libsass
46
47       NOTE:
48          libsass requires some features introduced by the  recent  C++  stan‐
49          dard.   You  need  a  C++ compiler that support those features.  See
50          also libsass project's README file.
51

EXAMPLES

53   Compile a String of Sass to CSS
54       >>> import sass
55       >>> sass.compile(string='a { b { color: blue; } }')
56       'a b {\n  color: blue; }\n'
57
58   Compile a Directory of Sass Files to CSS
59       >>> import sass
60       >>> import os
61       >>> os.mkdir('css')
62       >>> os.mkdir('sass')
63       >>> scss = """\
64       ... $theme_color: #cc0000;
65       ... body {
66       ...     background-color: $theme_color;
67       ... }
68       ... """
69       >>> with open('sass/example.scss', 'w') as example_scss:
70       ...      example_scss.write(scss)
71       ...
72       >>> sass.compile(dirname=('sass', 'css'), output_style='compressed')
73       >>> with open('css/example.css') as example_css:
74       ...     print(example_css.read())
75       ...
76       body{background-color:#c00}
77

USER'S GUIDE

79   Using with Flask
80       This guide explains how to use libsass with the  Flask  web  framework.
81       sassutils  package  provides  several tools that can be integrated into
82       web applications written in Flask.
83
84   Contents
85Using with Flask
86
87Directory layout
88
89Defining manifest
90
91Building Sass/SCSS for each request
92
93Building Sass/SCSS for each deployment
94
95   Directory layout
96       Imagine the project contained in such directory layout:
97
98setup.py
99
100myapp/
101
102__init__.py
103
104static/
105
106sass/
107
108css/
109
110templates/
111
112       Sass/SCSS files will go inside myapp/static/sass/ directory.   Compiled
113       CSS files will go inside myapp/static/css/ directory.  CSS files can be
114       regenerated, so add myapp/static/css/ into your ignore list like  .git‐
115       ignore or .hgignore.
116
117   Defining manifest
118       The  sassutils defines a concept named manifest.  Manifest is the build
119       settings of Sass/SCSS.  It specifies some  paths  related  to  building
120       Sass/SCSS:
121
122       • The path of the directory which contains Sass/SCSS source files.
123
124       • The path of the directory which the compiled CSS files will go.
125
126       • The  path, exposed to HTTP (through WSGI), of the directory that will
127         contain the compiled CSS files.
128
129       Every package may have its own manifest.  Paths have to be relative  to
130       the path of the package.
131
132       For example, in the above project, the package name is myapp.  The path
133       of the package is myapp/.  The  path  of  the  Sass/SCSS  directory  is
134       static/sass/  (relative to the package directory).  The path of the CSS
135       directory is static/css/.  The exposed path is /static/css.
136
137       These settings can be represented as the following manifests:
138
139          {
140              'myapp': ('static/sass', 'static/css', '/static/css')
141          }
142
143       As you can see the above, the set of manifests are represented in  dic‐
144       tionary, in which the keys are packages names and the values are tuples
145       of paths.
146
147   Building Sass/SCSS for each request
148       SEE ALSO:
149
150          Flask --- Hooking in WSGI Middlewares
151                 The section which explains how to integrate WSGI  middlewares
152                 to Flask.
153
154          Flask --- flask:app-dispatch
155                 The  documentation  which  explains how Flask dispatches each
156                 request internally.
157
158       In development, manually building Sass/SCSS files for each change is  a
159       tedious task.  SassMiddleware makes the web application build Sass/SCSS
160       files for each request automatically.  It's a WSGI  middleware,  so  it
161       can be plugged into the web app written in Flask.
162
163       SassMiddleware takes two required parameters:
164
165       • The WSGI-compliant callable object.
166
167       • The set of manifests represented as a dictionary.
168
169       So:
170
171          from flask import Flask
172          from sassutils.wsgi import SassMiddleware
173
174          app = Flask(__name__)
175
176          app.wsgi_app = SassMiddleware(app.wsgi_app, {
177              'myapp': ('static/sass', 'static/css', '/static/css')
178          })
179
180       And  then,  if  you want to link a compiled CSS file, use the url_for()
181       function:
182
183          <link href="{{ url_for('static', filename='css/style.scss.css') }}"
184                rel="stylesheet" type="text/css">
185
186       NOTE:
187          The linked filename is style.scss.css,  not  just  style.scss.   All
188          compiled filenames have trailing .css suffix.
189
190   Building Sass/SCSS for each deployment
191       NOTE:
192          This section assumes that you use setuptools for deployment.
193
194       SEE ALSO:
195
196          Flask --- flask:distribute-deployment
197                 How to deploy Flask application using setuptools.
198
199       If  libsass  is  installed in the site-packages (for example, your vir‐
200       tualenv), the setup.py script also gets a new command provided by  lib‐
201       sass: build_sass.  The command is aware of the sass_manifests option of
202       setup.py and builds all Sass/SCSS sources according to the manifests.
203
204       Add these arguments to setup.py script:
205
206          setup(
207              # ...,
208              setup_requires=['libsass >= 0.6.0'],
209              sass_manifests={
210                  'myapp': ('static/sass', 'static/css', '/static/css')
211              }
212          )
213
214       The setup_requires option makes  sure  that  libsass  is  installed  in
215       site-packages  (for  example,  your  virtualenv)  before  the  setup.py
216       script.  That means if you run the setup.py script  and  libsass  isn't
217       installed in advance, it will automatically install libsass first.
218
219       The sass_manifests specifies the manifests for libsass.
220
221       Now  setup.py build_sass will compile all Sass/SCSS files in the speci‐
222       fied path and generates compiled CSS files inside  the  specified  path
223       (according to the manifests).
224
225       If  you  use  it  with sdist or bdist commands, the packed archive will
226       also contain the compiled CSS files!
227
228          $ python setup.py build_sass sdist
229
230       You can add aliases to make these commands always  run  the  build_sass
231       command first.  Make setup.cfg config:
232
233          [aliases]
234          sdist = build_sass sdist
235          bdist = build_sass bdist
236
237       Now  it automatically builds Sass/SCSS sources and include the compiled
238       CSS files to the package archive when you run setup.py sdist.
239
240   Changelog
241   Version 0.20.0
242       Released on November 3, 2019.
243
244       • Produce abi3 wheels on macos / linux [#307 by Anthony Sottile]
245
246       • Follow up the libsass upstream: 3.6.4 --- See the  release  notes  of
247         LibSass 3.6.4. [#313 by Anthony Sottile]
248
249   Version 0.19.4
250       Released on November 3, 2019.
251
252       • Follow  up  the  libsass upstream: 3.6.3 --- See the release notes of
253         LibSass 3.6.3. [#304 by Anthony Sottile]
254
255   Version 0.19.3
256       Released on October 5, 2019.
257
258       • Follow up the libsass upstream: 3.6.2 --- See the  release  notes  of
259         LibSass 3.6.2. [#302 by Anthony Sottile]
260
261   Version 0.19.2
262       Released on June 16, 2019.
263
264       • Follow  up  the  libsass upstream: 3.6.1 --- See the release notes of
265         LibSass 3.6.1. [#298 by Anthony Sottile]
266
267   Version 0.19.1
268       Released on May 18, 2019.
269
270       • Re-release of 0.19.0 with windows python2.7 wheels [#297  by  Anthony
271         Sottile]
272
273   Version 0.19.0
274       Released on May 18, 2019.
275
276       • Follow  up  the  libsass upstream: 3.6.0 --- See the release notes of
277         LibSass 3.6.0. [#295 by Anthony Sottile]
278
279   Version 0.18.0
280       Release on March 13, 2019
281
282       • Add support for previous import path to importer callbacks [#287 #291
283         by Frankie Dintino]
284
285   Version 0.17.0
286       Release on January 03, 2019
287
288
289
290         Add several new cli options [#279 #268 by Frankie Dintino]
291
292--sourcemap-file: output file for source map
293
294--sourcemap-contents: embed sourcesContent in source map
295
296--sourcemap-embed: embed sourceMappingURL as data uri
297
298--omit-sourcemap-url:  omit source map url comment from out‐
299                  put
300
301--sourcemap-root: base path, emitted as sourceRoot in source
302                  map
303
304       • Fix .sass in WsgiMiddleware (again) [#280 by Anthony Sottile]
305
306   Version 0.16.1
307       Released on November 25, 2018.
308
309       • Fix compilation on macos mojave [#276 #277 by Anthony Sottile]
310
311       • Fix .sass in WsgiMiddleware for strip_extension=True [#278 by Anthony
312         Sottile]
313
314   Version 0.16.0
315       Released on November 13, 2018.
316
317       • Use -lc++ link flag when compiling  with  clang  [#270  by  Christian
318         Thieme #271 by Anthony Sottile]
319
320       • Honor strip_extension in SassMiddleware [#274 by Anthony Sottile]
321
322       • Follow  up  the  libsass upstream: 3.5.5 --- See the release notes of
323         LibSass 3.5.5. [#275 by Anthony Sottile]
324
325   Version 0.15.1
326       Released on September 24, 2018.
327
328       • Fix setup.py sdist (regressed in 0.15.0) [#267 by Anthony Sottile]
329
330   Version 0.15.0
331       Released on September 16, 2018.
332
333       • Fix invalid escape sequences [#249 by Anthony Sottile]
334
335       • Add code of conduct [#251 by Nick Schonning]
336
337       • Add support for python3.7 and remove testing for python3.4  [#254  by
338         Anthony Sottile]
339
340       • Add  strip_extension option for wsgi / distutils builder [#55 #258 by
341         Anthony Sottile #260 by Morten Brekkevold]
342
343       • Deprecate sassc (replaced by pysassc).  [#262 by Anthony Sottile]
344
345       • Import abc classes from collections.abc to remove  DeprecationWarning
346         [#264 by Gary van der Merwe #265 by Anthony Sottile]
347
348   Version 0.14.5
349       Released on April 25, 2018.
350
351       • Follow  up  the  libsass upstream: 3.5.4 --- See the release notes of
352         LibSass 3.5.4. [#247 by Anthony Sottile]
353
354   Version 0.14.4
355       Released on April 24, 2018.
356
357       • Add ability to specify imports for custom extensions.  This  provides
358         a  way  to enable imports of .css files (which was removed in 3.5.3).
359         Specify --import-extensions .css to restore  the  previous  behavior.
360         [#246 by Samuel Colvin]
361
362   Version 0.14.3
363       Released on April 23, 2018.
364
365       • Follow  up  the  libsass upstream: 3.5.3 --- See the release notes of
366         LibSass 3.5.3. [#244 by Anthony Sottile]
367
368   Version 0.14.2
369       Released on March 16, 2018.
370
371       • Follow up the libsass upstream: 3.5.2 --- See the  release  notes  of
372         LibSass 3.5.2. [#243 by Anthony Sottile]
373
374   Version 0.14.1
375       Released on March 12, 2018.
376
377       • Follow  up  the  libsass upstream: 3.5.1 --- See the release notes of
378         LibSass 3.5.1. [#242 by Anthony Sottile]
379
380   Version 0.14.0
381       Released on March 6, 2018.
382
383       • Follow up the libsass upstream: 3.5.0 --- See the  release  notes  of
384         LibSass 3.5.0. [#241 by Anthony Sottile]
385
386SassList  type  gained  an additional option bracketed=False to match
387         the upstream changes to the sass_list type. [#184 by Anthony Sottile]
388
389   Version 0.13.7
390       Released on February 5, 2018.
391
392       • Follow up the libsass upstream: 3.4.9 --- See the  release  notes  of
393         LibSass 3.4.9. [#232 by Anthony Sottile]
394
395   Version 0.13.6
396       Released on January 19, 2018.
397
398       • libsass-python has moved to the sass organization!
399
400   Version 0.13.5
401       Released on January 11, 2018.
402
403       • Follow  up  the  libsass upstream: 3.4.8 --- See the release notes of
404         LibSass 3.4.8. [#228 by Anthony Sottile]
405
406   Version 0.13.4
407       Released on November 14, 2017.
408
409       • Follow up the libsass upstream: 3.4.7 --- See the  release  notes  of
410         LibSass 3.4.7. [#226 by Anthony Sottile]
411
412   Version 0.13.3
413       Released on October 11, 2017.
414
415       • Sort input files for determinism [#212 by Bernhard M. Wiedemann]
416
417       • Include LICENSE file in distributions [#216 by Dougal J. Sutherland]
418
419       • Add a pysassc entry to replace sassc [#218 by Anthony Sottile]
420
421       • Enable building with dynamic linking [#219 by Marcel Plch]
422
423       • Follow  up  the  libsass upstream: 3.4.6 --- See the release notes of
424         LibSass 3.4.6. [#221 by Anthony Sottile]
425
426   Version 0.13.2
427       Released on June 14, 2017.
428
429       • Always add cwd to import paths [#208 by Anthony Sottile]
430
431   Version 0.13.1
432       Released on June 8, 2017.
433
434       • Follow up the libsass upstream: 3.4.5 --- See the  release  notes  of
435         LibSass 3.4.5. [#207 by Anthony Sottile]
436
437   Version 0.13.0
438       Released on June 7, 2017.
439
440       • Use getfullargspec when available in python 3. [#188 by Thom Wiggers]
441
442       • Use sass_copy_c_string instead of strdup for portability [#196 by An‐
443         thony Sottile]
444
445       • Use -std=gnu++0x to fix installation under cygwin [#195 #197  by  An‐
446         thony Sottile]
447
448       • Correct source map url [#201 #202 by Anthony Sottile]
449
450       • Remove --watch [#203 by Anthony Sottile]
451
452       • Follow  up  the  libsass upstream: 3.4.4 --- See the release notes of
453         LibSass 3.4.4. [#205 by Anthony Sottile]
454
455   Version 0.12.3
456       Released on January 7, 2017.
457
458       • Follow up the libsass upstream: 3.4.3 --- See the  release  notes  of
459         LibSass 3.4.3. [#178 by Anthony Sottile]
460
461   Version 0.12.2
462       Released on January 5, 2017.
463
464       • Follow  up  the  libsass upstream: 3.4.2 --- See the release notes of
465         LibSass 3.4.2. [#176 by Anthony Sottile]
466
467   Version 0.12.1
468       Released on December 20, 2016.
469
470       • Follow up the libsass upstream: 3.4.1 --- See the  release  notes  of
471         LibSass 3.4.1. [#175 by Anthony Sottile]
472
473   Version 0.12.0
474       Released on December 10, 2016.
475
476       • Follow  up  the  libsass upstream: 3.4.0 --- See the release notes of
477         LibSass 3.4.0. [#173 by Anthony Sottile]
478
479   Version 0.11.2
480       Released on October 24, 2016.
481
482       • Drop support for python2.6 [#158 by Anthony Sottile]
483
484       • Deprecate --watch [#156 by Anthony Sottile]
485
486       • Preserve line endings [#160 by Anthony Sottile]
487
488       • Follow up the libsass upstream: 3.3.6 --- See the  release  notes  of
489         LibSass 3.3.6. [#167 by Anthony Sottile]
490
491   Version 0.11.1
492       Released on April 22, 2016.
493
494       • Follow  up  the  libsass upstream: 3.3.5 --- See the release notes of
495         LibSass 3.3.5. [#148 by Anthony Sottile]
496
497   Version 0.11.0
498       Released on March 23, 2016.
499
500       • Follow up the libsass upstream: 3.3.4 --- See the  release  notes  of
501         LibSass 3.3.4. [#144 by Anthony Sottile]
502
503       • Expose libsass version in sassc --version and sass.libsass_version [‐
504         #142 #141 #140 by Anthony Sottile]
505
506       • Fix warning about unused enum on switch [#127 #131  by  Anthony  Sot‐
507         tile]
508
509       • Sourcemaps no longer imply source comments [#124 #130 by Tim Tisdall]
510
511       • Add --source-comments option to sassc [#124 #130 by Anthony Sottile]
512
513       • Improve  formatting  of  CompileError  under python3 [#123 by Anthony
514         Sottile]
515
516       • Raise when compiling a directory which does not exist [#116  #119  by
517         Anthony Sottile]
518
519   Version 0.10.1
520       Released on January 29, 2016.
521
522       • Follow  up  the  libsass upstream: 3.3.3 --- See the release notes of
523         LibSass 3.3.3. [by Anthony Sottile]
524
525       • Allow -t for style like sassc [#98 by Anthony Sottile]
526
527   Version 0.10.0
528       Released on December 15, 2015.
529
530       • Support custom import callbacks [#81 by Alice Zoë Bevan–McGregor, An‐
531         thony Sottile]
532
533       • Disallow arbitrary kwargs in compile() [#109 by Anthony Sottile]
534
535   Version 0.9.3
536       Released on December 03, 2015.
537
538       • Support "indented" Sass compilation [#41 by Alice Zoë Bevan–McGregor]
539
540       • Fix wheels on windows [#28 #49 by Anthony Sottile]
541
542   Version 0.9.2
543       Released on November 12, 2015.
544
545       • Follow  up  the  libsass upstream: 3.3.2 --- See the release notes of
546         LibSass 3.3.2. [by Anthony Sottile]
547
548       • Require VS 2015 to build on windows [#99 by Anthony Sottile]
549
550   Version 0.9.1
551       Released on October 29, 2015.
552
553       • Follow up the libsass upstream: 3.3.1 --- See the  release  notes  of
554         LibSass 3.3.1. [by Anthony Sottile]
555
556   Version 0.9.0
557       Released on October 28, 2015.
558
559       • Fix a bug with writing UTF-8 to a file [#72 by Caleb Ely]
560
561       • Fix a segmentation fault on ^C [#87 by Anthony Sottile]
562
563       • Follow  up  the  libsass upstream: 3.3.0 --- See the release notes of
564         LibSass 3.3.0. [#96 by Anthony Sottile]
565
566   Version 0.8.3
567       Released on August 2, 2015.
568
569       • Follow up the libsass upstream: 3.2.5 --- See the  release  notes  of
570         LibSass 3.2.5.  [#79, #80 by Anthony Sottile]
571
572       • Fixed  a  bug  that  *.sass  files  were  ignored.   [#78  by Guilhem
573         MAS-PAITRAULT]
574
575   Version 0.8.2
576       Released on May 19, 2015.
577
578       • Follow up the libsass upstream: 3.2.4 --- See the  release  notes  of
579         LibSass 3.2.3, and 3.2.4.  [#69 by Anthony Sottile]
580
581       • The  default  value  of  SassMiddleware's  error_status parameter was
582         changed from '500 Internal Server Error' to '200 OK' so that  Mozilla
583         Firefox can render the error message well.  [#67, #68, #70 by zxv]
584
585   Version 0.8.1
586       Released on May 14, 2015.
587
588       • Fixed  a  bug  that there was no 'expanded' in sass.OUTPUT_STYLES but
589         'expected' instead which is a typo.  [#66 by Triangle717]
590
591       • Fixed broken FreeBSD build.  [#65 by Toshiharu Moriyama]
592
593   Version 0.8.0
594       Released on May 3, 2015.
595
596       • Follow up the libsass upstream: 3.2.2 --- See the  release  notes  of
597         LibSass  3.2.0,  3.2.1,  and 3.2.2.  [#61, #52, #56, #58, #62, #64 by
598         Anthony Sottile]
599
600         • Compact and expanded output styles  [#37]
601
602         • Strings and interpolation closer to Ruby Sass
603
604         • The correctness of the generated sourcemap files
605
606         • Directive buddling
607
608         • Full support for the @at-root directive
609
610         • Full support for !global variable scoping
611
612       • Now underscored files are ignored when compiling a  directory.   [#57
613         by Anthony Sottile]
614
615       • Fixed broken FreeBSD build.  [#34, #60 by Ilya Baryshev]
616
617SassMiddleware  became  to log syntax errors if exist during compila‐
618         tion to sassutils.wsgi.SassMiddleware logger with level ERROR.  [#42]
619
620   Version 0.7.0
621       Released on March 6, 2015.
622
623       Anthony Sottile contributed to the most of this release.   Huge  thanks
624       to him!
625
626       • Follow  up  the  libsass  upstream: 3.1.0 --- See the release note of
627         LibSass.  [#38, #43 by Anthony Sottile]
628
629         • Custom functions and imports
630
631         • Decrementing in @for loops
632
633@debug and @error
634
635not operator
636
637nth() for maps
638
639inspect()
640
641feature-exists()
642
643unique-id()
644
645random()
646
647       • Added custom functions support.  [#13, #44 by Anthony Sottile]
648
649         • Added sass.SassFunction class.
650
651         • Added custom_functions parameter to sass.compile() function.
652
653         • Added data types for custom functions:
654
655sass.SassNumber
656
657sass.SassColor
658
659sass.SassList
660
661sass.SassMap
662
663sass.SassError
664
665sass.SassWarning
666
667       • Added precision parameter to sass.compile() function.  [#39 by Andrea
668         Stagi]
669
670sassc has a new -p/--precision option.  [#39 by Andrea Stagi]
671
672   Version 0.6.2
673       Released on November 25, 2014.
674
675       Although  0.6.0--0.6.1 have needed GCC (G++) 4.8+, LLVM Clang 3.3+, now
676       it became back to only need GCC (G++) 4.6+, LLVM Clang 2.9+, or  Visual
677       Studio 2013 Update 4+.
678
679       • Follow  up  the  libsass  upstream: 3.0.2 --- See the release note of
680         libsass.  [#33 by Rodolphe Pelloux-Prayer]
681
682       • Fixed a bug that sassc --watch crashed when a file is not  compilable
683         on the first try.  [#32 by Alan Justino da Silva]
684
685       • Fixed broken build on Windows.
686
687   Version 0.6.1
688       Released on November 6, 2014.
689
690       • Follow  up  the  libsass  upstream: 3.0.1 --- See the release note of
691         LibSass.
692
693       • Fixed a bug that SassMiddleware never closes the socket on some  WSGI
694         servers e.g. eventlet.wsgi.
695
696   Version 0.6.0
697       Released on October 27, 2014.
698
699       Note  that  since  libsass-python  0.6.0  (and libsass 3.0) it requires
700       C++11 to compile.  Although 0.6.2 became back to only  need  GCC  (G++)
701       4.6+,  LLVM  Clang  2.9+,  from 0.6.0 to 0.6.1 you need GCC (G++) 4.8+,
702       LLVM Clang 3.3+, or Visual Studio 2013 Update 4+.
703
704       • Follow up the libsass upstream: 3.0 --- See the release note of  Lib‐
705         Sass.
706
707         • Decent extends support
708
709         • Basic Sass Maps Support
710
711         • Better UTF-8 Support
712
713call() function
714
715         • Better Windows Support
716
717         • Spec Enhancements
718
719       • Added missing partial import support.  [#27 by item4]
720
721SOURCE_COMMENTS became deprecated.
722
723sass.compile()'s parameter source_comments now can take only bool in‐
724         stead of str.  String values like 'none', 'line_numbers',  and  'map'
725         become deprecated, and will be obsolete soon.
726
727build_directory() function has a new optional parameter output_style.
728
729build() method has a new optional parameter output_style.
730
731       • Added --output-style/-s option to build_sass command.  [#25]
732
733   Version 0.5.1
734       Released on September 23, 2014.
735
736       • Fixed  a  bug  that  SassMiddleware  yielded  str instead of bytes on
737         Python 3.
738
739       • Fixed several Unicode-related bugs on Windows.
740
741       • Fixed a bug that build_directory(),  SassMiddleware,  and  build_sass
742         don't recursively build subdirectories.
743
744   Version 0.5.0
745       Released on June 6, 2014.
746
747       • Follow  up the libsass upstream: 2.0 --- See the release note of Lib‐
748         Sass.
749
750         • Added indented syntax support (*.sass files).
751
752         • Added expanded selector support (BEM).
753
754         • Added string functions.
755
756         • Fixed UTF-8 support.
757
758         • Backward incompatibility: broken extends.
759
760   Unstable version 0.4.2.20140529.cd3ee1cbe3
761       Released on May 29, 2014.
762
763       • Version scheme changed to use periods (.) instead of hyphens (-)  due
764         to setuptools seems to treat hyphens special.
765
766       • Fixed malformed packaging that doesn't correctly preserve the package
767         name and version.
768
769   Unstable Version 0.4.2-20140528-cd3ee1cbe3
770       Released on May 28, 2014.
771
772       • Follow          up          the           libsass           upstream:
773         cd3ee1cbe34d5316eb762a43127a3de9575454ee.
774
775   Version 0.4.2
776       Released on May 22, 2014.
777
778       • Fixed build failing on Mac OS X 10.8 or earlier.  [#19]
779
780       • Fixed  UnicodeEncodeError that Manifest.build_one() method rises when
781         the input source contains any non-ASCII Unicode characters.
782
783   Version 0.4.1
784       Released on May 20, 2014.
785
786       • Fixed UnicodeEncodeError that rise when the input source contains any
787         non-ASCII Unicode characters.
788
789   Version 0.4.0
790       Released on May 6, 2014.
791
792sassc has a new -w/--watch option.
793
794       • Expose source maps support:
795
796sassc has a new -m/-g/--sourcemap option.
797
798SassMiddleware  now  also  creates  source map files with filenames
799           followed by .map suffix.
800
801Manifest.build_one() method has a new source_map option.  This  op‐
802           tion  builds  also  a source map file with the filename followed by
803           .map suffix.
804
805sass.compile() has a new optional  parameter  source_comments.   It
806           can be one of sass.SOURCE_COMMENTS keys.  It also has a new parame‐
807           ter source_map_filename which is  required  only  when  source_com‐
808           ments='map'.
809
810       • Fixed Python 3 incompatibility of sassc program.
811
812       • Fixed a bug that multiple include_paths doesn't work on Windows.
813
814   Version 0.3.0
815       Released on February 21, 2014.
816
817       • Added support for Python 3.3.  [#7]
818
819       • Dropped support for Python 2.5.
820
821       • Fixed build failing on Mac OS X.  [#4, #5, #6 by Hyungoo Kang]
822
823       • Now  builder  creates  target  recursive  subdirectories  even  if it
824         doesn't exist yet, rather than siliently fails.  [#8, #9  by  Philipp
825         Volguine]
826
827       • Merged recent changes from libsass 1.0.1: 57a2f62--v1.0.1.
828
829         • Supports variable arguments.
830
831         • Supports sourcemaps.
832
833   Version 0.2.4
834       Released on December 4, 2012.
835
836       • Added sassc CLI executable script.
837
838       • Added sass.OUTPUT_STYLES constant map.
839
840       • Merged recent changes from libsass upstream: e997102--a84b181.
841
842   Version 0.2.3
843       Released on October 24, 2012.
844
845sassutils.distutils: Prevent double monkey patch of sdist.
846
847       • Merged upstream changes of libsass.
848
849   Version 0.2.2
850       Released on September 28, 2012.
851
852       • Fixed a link error on PyPy and Linux.
853
854       • Fixed build errors on Windows.
855
856   Version 0.2.1
857       Released on September 12, 2012.
858
859       • Support Windows.
860
861   Version 0.2.0
862       Released on August 24, 2012.
863
864       • Added new sassutils package.
865
866         • Added  sassutils.builder  module  to build the whole directory at a
867           time.
868
869         • Added sassutils.distutils module for distutils and setuptools inte‐
870           gration.
871
872         • Added  sassutils.wsgi  module  which provides a development-purpose
873           WSGI middleware.
874
875       • Added build_sass command for distutils/setuptools.
876
877   Version 0.1.1
878       Released on August 18, 2012.
879
880       • Fixed segmentation fault for reading filename which does  not  exist.
881         Now it raises a proper exceptions.IOError exception.
882
883   Version 0.1.0
884       Released on August 17, 2012.  Initial version.
885

REFERENCES

887   pysassc --- SassC compliant command line interface
888       This provides SassC compliant CLI executable named pysassc:
889
890          $ pysassc
891          Usage: pysassc [options] SCSS_FILE [CSS_FILE]
892
893       There are options as well:
894
895       -t <style>, --style <style>
896              Coding style of the compiled result.  The same as sass.compile()
897              function's output_style keyword argument.  Default is nested.
898
899       -s <style>, --output-style <style>
900              Alias for -t / --style.
901
902              Deprecated since version 0.11.0.
903
904
905       -I <dir>, --include-path <dir>
906              Optional directory path to find @imported (S)CSS files.  Can  be
907              multiply used.
908
909       -m, -g, --sourcemap
910              Emit source map.  Requires the second argument (output CSS file‐
911              name).  The filename of source map will be the output CSS  file‐
912              name followed by .map.
913
914              New in version 0.4.0.
915
916
917       -p, --precision
918              Set the precision for numbers. Default is 5.
919
920              New in version 0.7.0.
921
922
923       --source-comments
924              Include debug info in output.
925
926              New in version 0.11.0.
927
928
929       --sourcemap-file
930              Output file for source map
931
932              New in version 0.17.0.
933
934
935       --sourcemap-contents
936              Embed sourcesContent in source map.
937
938              New in version 0.17.0.
939
940
941       --sourcemap-embed
942              Embed sourceMappingUrl as data URI
943
944              New in version 0.17.0.
945
946
947       --omit-sourcemap-url
948              Omit source map URL comment from output
949
950              New in version 0.17.0.
951
952
953       --sourcemap-root
954              Base path, will be emitted to sourceRoot in source-map as is
955
956              New in version 0.17.0.
957
958
959       -v, --version
960              Prints the program version.
961
962       -h, --help
963              Prints the help message.
964
965   sass --- Binding of libsass
966       This  simple  C extension module provides a very simple binding of lib‐
967       sass, which is written in C/C++.  It contains only one function and one
968       exception type.
969
970       >>> import sass
971       >>> sass.compile(string='a { b { color: blue; } }')
972       'a b {
973         color: blue; }
974       '
975
976       exception sass.CompileError(msg)
977              The exception type that is raised by compile().  It is a subtype
978              of exceptions.ValueError.
979
980       sass.MODES = frozenset({'dirname', 'filename', 'string'})
981              (frozenset) The set of keywords compile() can take.
982
983       sass.OUTPUT_STYLES = {'compact': 2,  'compressed':  3,  'expanded':  1,
984       'nested': 0}
985              (collections.abc.Mapping) The dictionary of output styles.  Keys
986              are output name strings, and values are flag integers.
987
988       sass.SOURCE_COMMENTS = {'default':  1,  'line_numbers':  1,  'map':  2,
989       'none': 0}
990              (collections.abc.Mapping)  The  dictionary  of  source  comments
991              styles.  Keys are mode names, and values are corresponding  flag
992              integers.
993
994              New in version 0.4.0.
995
996
997              Deprecated since version 0.6.0.
998
999
1000       class sass.SassColor(r, g, b, a)
1001
1002       class sass.SassError(msg)
1003
1004       class sass.SassFunction(name, arguments, callable_)
1005              Custom   function  for  Sass.   It  can  be  instantiated  using
1006              from_lambda() and from_named_function() as well.
1007
1008              Parameters
1009
1010name (str) -- the function name
1011
1012arguments (collections.abc.Sequence)  --  the  argument
1013                       names
1014
1015callable (collections.abc.Callable) -- the actual func‐
1016                       tion to be called
1017
1018              New in version 0.7.0.
1019
1020
1021              classmethod from_lambda(name, lambda_)
1022                     Make a SassFunction object from the given  lambda_  func‐
1023                     tion.   Since  lambda functions don't have their name, it
1024                     need its name as well.  Arguments are  automatically  in‐
1025                     spected.
1026
1027                     Parameters
1028
1029name (str) -- the function name
1030
1031lambda  (types.LambdaType)  -- the actual lambda
1032                              function to be called
1033
1034                     Returns
1035                            a custom function wrapper of the lambda_ function
1036
1037                     Return type
1038                            SassFunction
1039
1040              classmethod from_named_function(function)
1041                     Make a  SassFunction  object  from  the  named  function.
1042                     Function name and arguments are automatically inspected.
1043
1044                     Parameters
1045                            function  (types.FunctionType)  -- the named func‐
1046                            tion to be called
1047
1048                     Returns
1049                            a custom function wrapper of the function
1050
1051                     Return type
1052                            SassFunction
1053
1054              property signature
1055                     Signature string of the function.
1056
1057       class sass.SassList(items, separator, bracketed=False)
1058
1059       class sass.SassMap(*args, **kwargs)
1060              Because sass maps can have mapping types as keys, we need an im‐
1061              mutable hashable mapping type.
1062
1063              New in version 0.7.0.
1064
1065
1066       class sass.SassNumber(value, unit)
1067
1068       class sass.SassWarning(msg)
1069
1070       sass.and_join(strings)
1071              Join the given strings by commas with last ' and ' conjuction.
1072
1073              >>> and_join(['Korea', 'Japan', 'China', 'Taiwan'])
1074              'Korea, Japan, China, and Taiwan'
1075
1076              Parameters
1077                     strings -- a list of words to join
1078
1079              Returns
1080                     a joined string
1081
1082              Return type
1083                     str, basestring
1084
1085       sass.compile(**kwargs)
1086              There  are three modes of parameters compile() can take: string,
1087              filename, and dirname.
1088
1089              The string parameter is the most basic way to compile Sass.   It
1090              simply  takes a string of Sass code, and then returns a compiled
1091              CSS string.
1092
1093              Parameters
1094
1095string (str) -- Sass source code to compile.  it's  ex‐
1096                       clusive to filename and dirname parameters
1097
1098output_style  (str)  -- an optional coding style of the
1099                       compiled result.  choose one  of:  'nested'  (default),
1100                       'expanded', 'compact', 'compressed'
1101
1102source_comments (bool) -- whether to add comments about
1103                       source lines.  False by default
1104
1105source_map_contents (bool) -- embed include contents in
1106                       map
1107
1108source_map_embed  (bool)  --  embed sourceMappingUrl as
1109                       data URI
1110
1111omit_source_map_url (bool) -- omit source map URL  com‐
1112                       ment from output
1113
1114source_map_root  (str) -- base path, will be emitted in
1115                       source map as is
1116
1117include_paths (collections.abc.Sequence) -- an optional
1118                       list of paths to find @imported Sass/CSS source files
1119
1120precision (int) -- optional precision for numbers. 5 by
1121                       default.
1122
1123custom_functions (set,  collections.abc.Sequence,  col‐
1124                       lections.abc.Mapping)  --  optional  mapping  of custom
1125                       functions.  see also below custom functions description
1126
1127custom_import_extensions -- (ignored, for backward com‐
1128                       patibility)
1129
1130indented (bool) -- optional declaration that the string
1131                       is Sass, not SCSS formatted. False by default
1132
1133importers (collections.abc.Callable) -- optional  call‐
1134                       back  functions.  see also below importer callbacks de‐
1135                       scription
1136
1137              Returns
1138                     the compiled CSS string
1139
1140              Return type
1141                     str
1142
1143              Raises sass.CompileError -- when it fails for  any  reason  (for
1144                     example the given Sass has broken syntax)
1145
1146              The  filename  is the most commonly used way.  It takes a string
1147              of Sass filename, and then returns a compiled CSS string.
1148
1149              Parameters
1150
1151filename (str) -- the filename of Sass source  code  to
1152                       compile.   it's exclusive to string and dirname parame‐
1153                       ters
1154
1155output_style (str) -- an optional coding style  of  the
1156                       compiled  result.   choose  one of: 'nested' (default),
1157                       'expanded', 'compact', 'compressed'
1158
1159source_comments (bool) -- whether to add comments about
1160                       source lines.  False by default
1161
1162source_map_filename  (str) -- use source maps and indi‐
1163                       cate the source map output filename.   None  means  not
1164                       using source maps.  None by default.
1165
1166source_map_contents (bool) -- embed include contents in
1167                       map
1168
1169source_map_embed (bool) --  embed  sourceMappingUrl  as
1170                       data URI
1171
1172omit_source_map_url  (bool) -- omit source map URL com‐
1173                       ment from output
1174
1175source_map_root (str) -- base path, will be emitted  in
1176                       source map as is
1177
1178include_paths (collections.abc.Sequence) -- an optional
1179                       list of paths to find @imported Sass/CSS source files
1180
1181precision (int) -- optional precision for numbers. 5 by
1182                       default.
1183
1184custom_functions  (set,  collections.abc.Sequence, col‐
1185                       lections.abc.Mapping) --  optional  mapping  of  custom
1186                       functions.  see also below custom functions description
1187
1188custom_import_extensions -- (ignored, for backward com‐
1189                       patibility)
1190
1191importers (collections.abc.Callable) -- optional  call‐
1192                       back  functions.  see also below importer callbacks de‐
1193                       scription
1194
1195              Returns
1196                     the compiled CSS string, or a pair of  the  compiled  CSS
1197                     string  and  the source map string if source_map_filename
1198                     is set
1199
1200              Return type
1201                     str, tuple
1202
1203              Raises
1204
1205sass.CompileError -- when it fails for any reason  (for
1206                       example the given Sass has broken syntax)
1207
1208exceptions.IOError  --  when the filename doesn't exist
1209                       or cannot be read
1210
1211              The dirname is useful for automation.  It takes a pair of paths.
1212              The  first of the dirname pair refers the source directory, con‐
1213              tains several Sass source files to compiled.  Sass source  files
1214              can be nested in directories.  The second of the pair refers the
1215              output directory that compiled CSS files would be saved.  Direc‐
1216              tory  tree  structure of the source directory will be maintained
1217              in the output directory as well.  If dirname parameter  is  used
1218              the function returns None.
1219
1220              Parameters
1221
1222dirname  (tuple) -- a pair of (source_dir, output_dir).
1223                       it's exclusive to string and filename parameters
1224
1225output_style (str) -- an optional coding style  of  the
1226                       compiled  result.   choose  one of: 'nested' (default),
1227                       'expanded', 'compact', 'compressed'
1228
1229source_comments (bool) -- whether to add comments about
1230                       source lines.  False by default
1231
1232source_map_contents (bool) -- embed include contents in
1233                       map
1234
1235source_map_embed (bool) --  embed  sourceMappingUrl  as
1236                       data URI
1237
1238omit_source_map_url  (bool) -- omit source map URL com‐
1239                       ment from output
1240
1241source_map_root (str) -- base path, will be emitted  in
1242                       source map as is
1243
1244include_paths (collections.abc.Sequence) -- an optional
1245                       list of paths to find @imported Sass/CSS source files
1246
1247precision (int) -- optional precision for numbers. 5 by
1248                       default.
1249
1250custom_functions  (set,  collections.abc.Sequence, col‐
1251                       lections.abc.Mapping) --  optional  mapping  of  custom
1252                       functions.  see also below custom functions description
1253
1254custom_import_extensions -- (ignored, for backward com‐
1255                       patibility)
1256
1257              Raises sass.CompileError -- when it fails for  any  reason  (for
1258                     example the given Sass has broken syntax)
1259
1260              The custom_functions parameter can take three types of forms:
1261
1262              set/Sequence of SassFunctions
1263                 It is the most general form.  Although pretty verbose, it can
1264                 take any kind of callables like type objects,  unnamed  func‐
1265                 tions, and user-defined callables.
1266
1267                     sass.compile(
1268                         ...,
1269                         custom_functions={
1270                             sass.SassFunction('func-name', ('$a', '$b'), some_callable),
1271                             ...
1272                         }
1273                     )
1274
1275              Mapping of names to functions
1276                     Less  general, but easier-to-use form.  Although it's not
1277                     it can take any kind of callables, it can take  any  kind
1278                     of  functions defined using def/lambda syntax.  It cannot
1279                     take callables other than them since inspecting arguments
1280                     is not always available for every kind of callables.
1281
1282                        sass.compile(
1283                            ...,
1284                            custom_functions={
1285                                'func-name': lambda a, b: ...,
1286                                ...
1287                            }
1288                        )
1289
1290              set/Sequence of named functions
1291                 Not general, but the easiest-to-use form for named functions.
1292                 It can take only named functions, defined using def.  It can‐
1293                 not take lambdas sinc names are unavailable for them.
1294
1295                     def func_name(a, b):
1296                         return ...
1297
1298                     sass.compile(
1299                         ...,
1300                         custom_functions={func_name}
1301                     )
1302
1303              Newer  versions  of libsass allow developers to define callbacks
1304              to be called and given a chance to process  @import  directives.
1305              You  can  define yours by passing in a list of callables via the
1306              importers parameter. The callables must be passed as 2-tuples in
1307              the form:
1308
1309                 (priority_int, callback_fn)
1310
1311              A  priority of zero is acceptable; priority determines the order
1312              callbacks are attempted.
1313
1314              These callbacks can accept one  or  two  string  arguments.  The
1315              first argument is the path that was passed to the @import direc‐
1316              tive; the second (optional) argument is  the  previous  resolved
1317              path,  where the @import directive was found. The callbacks must
1318              either return None to indicate the path wasn't handled  by  that
1319              callback  (to continue with others or fall back on internal lib‐
1320              sass filesystem behaviour) or a list of one or more tuples, each
1321              in one of three forms:
1322
1323              • A 1-tuple representing an alternate path to handle internally;
1324                or,
1325
1326              • A 2-tuple representing an alternate path and the content  that
1327                path represents; or,
1328
1329              • A  3-tuple representing the same as the 2-tuple with the addi‐
1330                tion of a "sourcemap".
1331
1332              All tuple return values must be strings. As a not overly realis‐
1333              tic example:
1334
1335                 def my_importer(path, prev):
1336                     return [(path, '#' + path + ' { color: red; }')]
1337
1338                 sass.compile(
1339                         ...,
1340                         importers=[(0, my_importer)]
1341                     )
1342
1343              Now,  within  the  style source, attempting to @import 'button';
1344              will instead attach color: red as a property of an element  with
1345              the imported name.
1346
1347              New in version 0.4.0: Added source_comments and source_map_file‐
1348              name parameters.
1349
1350
1351              Changed in version 0.6.0: The source_comments parameter  becomes
1352              to take only bool instead of str.
1353
1354
1355              Deprecated  since  version 0.6.0: Values like 'none', 'line_num‐
1356              bers', and 'map' for the source_comments  parameter  are  depre‐
1357              cated.
1358
1359
1360              New in version 0.7.0: Added precision parameter.
1361
1362
1363              New in version 0.7.0: Added custom_functions parameter.
1364
1365
1366              New  in  version  0.11.0:  source_map_filename no longer implies
1367              source_comments.
1368
1369
1370              New in version 0.17.0: Added source_map_contents, source_map_em‐
1371              bed, omit_source_map_url, and source_map_root parameters.
1372
1373
1374              New  in  version  0.18.0:  The importer callbacks can now take a
1375              second argument, the previously-  resolved  path,  so  that  im‐
1376              porters can do relative path resolution.
1377
1378
1379   sassutils --- Additional utilities related to Sass
1380       This  package  provides  several  additional  utilities related to Sass
1381       which depends on libsass core (sass module).
1382
1383   sassutils.builder --- Build the whole directory
1384       class       sassutils.builder.Manifest(sass_path,        css_path=None,
1385       wsgi_path=None, strip_extension=None)
1386              Building manifest of Sass/SCSS.
1387
1388              Parameters
1389
1390sass_path  (str,  basestring) -- the path of the direc‐
1391                       tory that contains Sass/SCSS source files
1392
1393css_path (str, basestring) -- the path of the directory
1394                       to store compiled CSS files
1395
1396strip_extension  (bool) -- whether to remove the origi‐
1397                       nal file extension
1398
1399              build(package_dir, output_style='nested')
1400                     Builds the Sass/SCSS files in  the  specified  sass_path.
1401                     It  finds  sass_path  and locates css_path as relative to
1402                     the given package_dir.
1403
1404                     Parameters
1405
1406package_dir (str, basestring)  --  the  path  of
1407                              package directory
1408
1409output_style  (str)  -- an optional coding style
1410                              of the compiled result.  choose one of: 'nested'
1411                              (default), 'expanded', 'compact', 'compressed'
1412
1413                     Returns
1414                            the set of compiled CSS filenames
1415
1416                     Return type
1417                            frozenset
1418
1419                     New in version 0.6.0: The output_style parameter.
1420
1421
1422              build_one(package_dir, filename, source_map=False)
1423                     Builds one Sass/SCSS file.
1424
1425                     Parameters
1426
1427package_dir  (str,  basestring)  --  the path of
1428                              package directory
1429
1430filename (str, basestring) --  the  filename  of
1431                              Sass/SCSS source to compile
1432
1433source_map (bool) -- whether to use source maps.
1434                              if True it also write a source map to a filename
1435                              followed by .map suffix.  default is False
1436
1437                     Returns
1438                            the filename of compiled CSS
1439
1440                     Return type
1441                            str, basestring
1442
1443                     New  in  version 0.4.0: Added optional source_map parame‐
1444                     ter.
1445
1446
1447              resolve_filename(package_dir, filename)
1448                     Gets a proper full relative path of Sass source  and  CSS
1449                     source  that  will be generated, according to package_dir
1450                     and filename.
1451
1452                     Parameters
1453
1454package_dir (str, basestring)  --  the  path  of
1455                              package directory
1456
1457filename  (str,  basestring)  -- the filename of
1458                              Sass/SCSS source to compile
1459
1460                     Returns
1461                            a pair of (sass, css) path
1462
1463                     Return type
1464                            tuple
1465
1466              unresolve_filename(package_dir, filename)
1467                     Retrieves the probable source path from the output  file‐
1468                     name.  Pass in a .css path to get out a .scss path.
1469
1470                     Parameters
1471
1472package_dir (str) -- the path of the package di‐
1473                              rectory
1474
1475filename (str) -- the css filename
1476
1477                     Returns
1478                            the scss filename
1479
1480                     Return type
1481                            str
1482
1483       sassutils.builder.SUFFIXES = frozenset({'sass', 'scss'})
1484              (frozenset) The set of supported filename suffixes.
1485
1486       sassutils.builder.SUFFIX_PATTERN = re.compile('[.](scss|sass)$')
1487              (re.RegexObject) The regular expression pattern which matches to
1488              filenames of supported SUFFIXES.
1489
1490       sassutils.builder.build_directory(sass_path,       css_path,       out‐
1491       put_style='nested',   _root_sass=None,   _root_css=None,   strip_exten‐
1492       sion=False)
1493              Compiles all Sass/SCSS files in path to CSS.
1494
1495              Parameters
1496
1497sass_path  (str,  basestring) -- the path of the direc‐
1498                       tory which contains source files to compile
1499
1500css_path (str, basestring) -- the path of the directory
1501                       compiled CSS files will go
1502
1503output_style  (str)  -- an optional coding style of the
1504                       compiled result.  choose one  of:  'nested'  (default),
1505                       'expanded', 'compact', 'compressed'
1506
1507              Returns
1508                     a  dictionary  of  source filenames to compiled CSS file‐
1509                     names
1510
1511              Return type
1512                     collections.abc.Mapping
1513
1514              New in version 0.6.0: The output_style parameter.
1515
1516
1517   sassutils.distutils --- setuptools/distutils integration
1518       This module  provides  extensions  (and  some  magical  monkey-patches,
1519       sorry)  of  the  standard distutils and setuptools (now it's named Dis‐
1520       tribute) for libsass.
1521
1522       To use this, add libsass into setup_requires (not install_requires) op‐
1523       tion of the setup.py script:
1524
1525          from setuptools import setup
1526
1527          setup(
1528              # ...,
1529              setup_requires=['libsass >= 0.6.0']
1530          )
1531
1532       It will adds build_sass command to the setup.py script:
1533
1534          $ python setup.py build_sass
1535
1536       This  commands  builds  Sass/SCSS  files  to  compiled CSS files of the
1537       project and makes the package archive (made by sdist, bdist, and so on)
1538       to include these compiled CSS files.
1539
1540       To  set  the  directory  of Sass/SCSS source files and the directory to
1541       store compiled CSS files, specify sass_manifests option:
1542
1543          from setuptools import find_packages, setup
1544
1545          setup(
1546              name='YourPackage',
1547              packages=find_packages(),
1548              sass_manifests={
1549                  'your.webapp': ('static/sass', 'static/css')
1550              },
1551              setup_requires=['libsass >= 0.6.0']
1552          )
1553
1554       The option should be a mapping of package  names  to  pairs  of  paths,
1555       e.g.:
1556
1557          {
1558              'package': ('static/sass', 'static/css'),
1559              'package.name': ('static/scss', 'static')
1560          }
1561
1562       The  option  can also be a mapping of package names to manifest dictio‐
1563       naries:
1564
1565          {
1566              'package': {
1567                  'sass_path': 'static/sass',
1568                  'css_path': 'static/css',
1569                  'strip_extension': True,
1570              },
1571          }
1572
1573       New in version 0.15.0: Added strip_extension so a.scss is  compiled  to
1574       a.css  instead  of a.scss.css.  This option will default to True in the
1575       future.
1576
1577
1578       New in version 0.6.0: Added --output-style/-s option to build_sass com‐
1579       mand.
1580
1581
1582       class sassutils.distutils.build_sass(dist, **kw)
1583              Builds Sass/SCSS files to CSS files.
1584
1585              finalize_options()
1586                     Set  final  values  for all the options that this command
1587                     supports.  This is always called as late as possible, ie.
1588                     after  any  option  assignments  from the command-line or
1589                     from other commands have been done.  Thus,  this  is  the
1590                     place  to  code  option dependencies: if 'foo' depends on
1591                     'bar', then it is safe to set 'foo' from 'bar' as long as
1592                     'foo'  still  has the same value it was assigned in 'ini‐
1593                     tialize_options()'.
1594
1595                     This method must be implemented by all command classes.
1596
1597              get_package_dir(package)
1598                     Returns the directory, relative to the top of the  source
1599                     distribution,  where  package package should be found (at
1600                     least according to the package_dir option, if any).
1601
1602                     Copied from  distutils.command.build_py.get_package_dir()
1603                     method.
1604
1605              initialize_options()
1606                     Set  default values for all the options that this command
1607                     supports.  Note that these defaults may be overridden  by
1608                     other  commands, by the setup script, by config files, or
1609                     by the command-line.  Thus, this is not the place to code
1610                     dependencies  between options; generally, 'initialize_op‐
1611                     tions()' implementations are just a bunch of "self.foo  =
1612                     None" assignments.
1613
1614                     This method must be implemented by all command classes.
1615
1616              run()  A command's raison d'etre: carry out the action it exists
1617                     to perform, controlled  by  the  options  initialized  in
1618                     'initialize_options()', customized by other commands, the
1619                     setup script, the command-line, and config files, and fi‐
1620                     nalized in 'finalize_options()'.  All terminal output and
1621                     filesystem interaction should be done by 'run()'.
1622
1623                     This method must be implemented by all command classes.
1624
1625       sassutils.distutils.validate_manifests(dist, attr, value)
1626              Verifies that value is an expected mapping of package to  sassu‐
1627              tils.builder.Manifest.
1628
1629   sassutils.wsgi --- WSGI middleware for development purpose
1630       class sassutils.wsgi.SassMiddleware(app, manifests, package_dir={}, er‐
1631       ror_status='200 OK')
1632              WSGI middleware for development purpose.  Everytime a  CSS  file
1633              has  requested it finds a matched Sass/SCSS source file and then
1634              compiled it into CSS.
1635
1636              It shows syntax errors in three ways:
1637
1638              Heading comment
1639                     The result CSS includes detailed  error  message  in  the
1640                     heading CSS comment e.g.:
1641
1642                        /*
1643                        Error: invalid property name
1644                        */
1645
1646              Red text in body:before
1647                     The  result  CSS  draws detailed error message in :before
1648                     pseudo-class of body element e.g.:
1649
1650                        body:before {
1651                            content: 'Error: invalid property name';
1652                            color: maroon;
1653                            background-color: white;
1654                        }
1655
1656                     In most cases you could be aware of syntax error  by  re‐
1657                     freshing  your  working  document because it will removes
1658                     all other styles and leaves only a red text.
1659
1660              logging
1661                     It logs syntax errors if exist during compilation to sas‐
1662                     sutils.wsgi.SassMiddleware logger with level ERROR.
1663
1664                     To enable this:
1665
1666                        from logging import Formatter, StreamHandler, getLogger
1667                        logger = getLogger('sassutils.wsgi.SassMiddleware')
1668                        handler = StreamHandler(level=logging.ERROR)
1669                        formatter = Formatter(fmt='*' * 80 + '\n%(message)s\n' + '*' * 80)
1670                        handler.setFormatter(formatter)
1671                        logger.addHandler(handler)
1672
1673                     Or simply:
1674
1675                        import logging
1676                        logging.basicConfig()
1677
1678              Parameters
1679
1680app  (collections.abc.Callable) -- the WSGI application
1681                       to wrap
1682
1683manifests (collections.abc.Mapping) -- build  settings.
1684                       the same format to setup.py script's sass_manifests op‐
1685                       tion
1686
1687package_dir (collections.abc.Mapping) -- optional  map‐
1688                       ping  of package names to directories.  the same format
1689                       to setup.py script's package_dir option
1690
1691              Changed in version 0.4.0: It creates also source map files  with
1692              filenames followed by .map suffix.
1693
1694
1695              New in version 0.8.0: It logs syntax errors if exist during com‐
1696              pilation to sassutils.wsgi.SassMiddleware logger with level  ER‐
1697              ROR.
1698
1699
1700              static quote_css_string(s)
1701                     Quotes a string as CSS string literal.
1702

CREDIT

1704       Hong Minhee wrote this Python binding of LibSass.
1705
1706       Hampton  Catlin  and Aaron Leung wrote LibSass, which is portable C/C++
1707       implementation of Sass.
1708
1709       Hampton Catlin originally designed Sass language and  wrote  the  first
1710       reference implementation of it in Ruby.
1711
1712       The above three softwares are all distributed under MIT license.
1713

OPEN SOURCE

1715       GitHub (Git repository + issues)
1716              https://github.com/sass/libsass-python
1717
1718       Azure Pipelines CI (linux + windows)
1719              https://dev.azure.com/asottile/asottile/_build/latest?definitionId=22&branchName=master
1720              Build  Status.TP  Azure  Pipelines  Coverage   (Test   coverage)
1721              https://dev.azure.com/asottile/asottile/_build/latest?definitionId=22&branchName=master
1722              Coverage Status.TP PyPI  https://pypi.org/pypi/libsass/  PyPI.TP
1723              Changelog changes
1724

INDICES AND TABLES

1726       • genindex
1727
1728       • modindex
1729
1730       • search
1731

AUTHOR

1733       Hong Minhee
1734
1736       2021, Hong Minhee
1737
1738
1739
1740
17410.20.0                           Jan 27, 2021                       PYSASSC(1)
Impressum