Provided by: python3-libsass_0.20.1-3build1_amd64 bug

NAME

       libsass - libsass Documentation

       This  package  provides  a  simple  Python  extension module sass which is binding LibSass
       (written in C/C++ by Hampton Catlin and Aaron Leung).  It's very straightforward and there
       isn't  any  headache  related Python distribution/deployment.  That means you can add just
       libsass into your setup.py's install_requires list or requirements.txt file.

       It currently supports CPython 2.6, 2.7, 3.5--3.7, and PyPy 2.3+!

FEATURES

       • You don't need any Ruby/Node.js stack at all, for development or deployment either.

       • Fast. (LibSass is written in C++.)

       • Simple API.  See example code for details.

       • Custom functions.

       • @import callbacks.

       • Support both tabbed (Sass) and braces (SCSS) syntax.

       • WSGI middleware for ease of development.  It automatically compiles Sass/SCSS files  for
         each request.  See also sassutils.wsgi for details.

       • setuptools/distutils  integration.   You  can  build  all Sass/SCSS files using setup.py
         build_sass command.  See also sassutils.distutils for details.

       • Works also on PyPy.

       • Provides prebuilt wheel (PEP 427) binaries for Windows and Mac.

INSTALL

       It's available on PyPI, so you can install it using pip:

          $ pip install libsass

       NOTE:
          libsass requires some features introduced by the recent C++ standard.  You need  a  C++
          compiler that support those features.  See also libsass project's README file.

EXAMPLES

   Compile a String of Sass to CSS
       >>> import sass
       >>> sass.compile(string='a { b { color: blue; } }')
       'a b {\n  color: blue; }\n'

   Compile a Directory of Sass Files to CSS
       >>> import sass
       >>> import os
       >>> os.mkdir('css')
       >>> os.mkdir('sass')
       >>> scss = """\
       ... $theme_color: #cc0000;
       ... body {
       ...     background-color: $theme_color;
       ... }
       ... """
       >>> with open('sass/example.scss', 'w') as example_scss:
       ...      example_scss.write(scss)
       ...
       >>> sass.compile(dirname=('sass', 'css'), output_style='compressed')
       >>> with open('css/example.css') as example_css:
       ...     print(example_css.read())
       ...
       body{background-color:#c00}

USER'S GUIDE

   Using with Flask
       This  guide  explains  how to use libsass with the Flask web framework.  sassutils package
       provides several tools that can be integrated into web applications written in Flask.

   ContentsUsing with FlaskDirectory layoutDefining manifestBuilding Sass/SCSS for each requestBuilding Sass/SCSS for each deployment

   Directory layout
       Imagine the project contained in such directory layout:

       • setup.pymyapp/__init__.pystatic/sass/css/templates/

       Sass/SCSS files will go inside myapp/static/sass/ directory.  Compiled CSS files  will  go
       inside   myapp/static/css/   directory.    CSS   files   can   be   regenerated,   so  add
       myapp/static/css/ into your ignore list like .gitignore or .hgignore.

   Defining manifest
       The sassutils defines a concept  named  manifest.   Manifest  is  the  build  settings  of
       Sass/SCSS.  It specifies some paths related to building Sass/SCSS:

       • The path of the directory which contains Sass/SCSS source files.

       • The path of the directory which the compiled CSS files will go.

       • The  path,  exposed  to  HTTP  (through  WSGI),  of  the directory that will contain the
         compiled CSS files.

       Every package may have its own manifest.  Paths have to be relative to  the  path  of  the
       package.

       For  example, in the above project, the package name is myapp.  The path of the package is
       myapp/.  The path of the Sass/SCSS directory is  static/sass/  (relative  to  the  package
       directory).   The  path  of  the  CSS  directory  is  static/css/.   The  exposed  path is
       /static/css.

       These settings can be represented as the following manifests:

          {
              'myapp': ('static/sass', 'static/css', '/static/css')
          }

       As you can see the above, the set of manifests are represented in dictionary, in which the
       keys are packages names and the values are tuples of paths.

   Building Sass/SCSS for each request
       SEE ALSO:

          Flask --- Hooking in WSGI Middlewares
                 The section which explains how to integrate WSGI middlewares to Flask.

          Flask --- Application Dispatching
                 The documentation which explains how Flask dispatches each request internally.

       In  development,  manually  building  Sass/SCSS  files  for each change is a tedious task.
       SassMiddleware  makes  the  web  application  build  Sass/SCSS  files  for  each   request
       automatically.   It's  a WSGI middleware, so it can be plugged into the web app written in
       Flask.

       SassMiddleware takes two required parameters:

       • The WSGI-compliant callable object.

       • The set of manifests represented as a dictionary.

       So:

          from flask import Flask
          from sassutils.wsgi import SassMiddleware

          app = Flask(__name__)

          app.wsgi_app = SassMiddleware(app.wsgi_app, {
              'myapp': ('static/sass', 'static/css', '/static/css')
          })

       And then, if you want to link a compiled CSS file, use the url_for() function:

          <link href="{{ url_for('static', filename='css/style.scss.css') }}"
                rel="stylesheet" type="text/css">

       NOTE:
          The linked filename is style.scss.css, not just  style.scss.   All  compiled  filenames
          have trailing .css suffix.

   Building Sass/SCSS for each deployment
       NOTE:
          This section assumes that you use setuptools for deployment.

       SEE ALSO:

          Flask --- Deploying with Setuptools
                 How to deploy Flask application using setuptools.

       If  libsass is installed in the site-packages (for example, your virtualenv), the setup.py
       script also gets a new command provided by libsass: build_sass.  The command is  aware  of
       the  sass_manifests  option  of setup.py and builds all Sass/SCSS sources according to the
       manifests.

       Add these arguments to setup.py script:

          setup(
              # ...,
              setup_requires=['libsass >= 0.6.0'],
              sass_manifests={
                  'myapp': ('static/sass', 'static/css', '/static/css')
              }
          )

       The setup_requires option makes sure that  libsass  is  installed  in  site-packages  (for
       example,  your virtualenv) before the setup.py script.  That means if you run the setup.py
       script and libsass isn't installed in  advance,  it  will  automatically  install  libsass
       first.

       The sass_manifests specifies the manifests for libsass.

       Now  setup.py  build_sass  will  compile  all  Sass/SCSS  files  in the specified path and
       generates compiled CSS files inside the specified path (according to the manifests).

       If you use it with sdist or bdist commands, the  packed  archive  will  also  contain  the
       compiled CSS files!

          $ python setup.py build_sass sdist

       You  can add aliases to make these commands always run the build_sass command first.  Make
       setup.cfg config:

          [aliases]
          sdist = build_sass sdist
          bdist = build_sass bdist

       Now it automatically builds Sass/SCSS sources and include the compiled CSS  files  to  the
       package archive when you run setup.py sdist.

   Changelog
   Version 0.20.1
       Released on August 27, 2020.

       • (no changes, re-releasing to test build automation)

   Version 0.20.0
       Released on May 1, 2020.

       • Produce abi3 wheels on macos / linux [#307 by Anthony Sottile]

       • Follow  up the libsass upstream: 3.6.4 --- See the release notes of LibSass 3.6.4. [#313
         by Anthony Sottile]

   Version 0.19.4
       Released on November 3, 2019.

       • Follow up the libsass upstream: 3.6.3 --- See the release notes of LibSass 3.6.3.  [#304
         by Anthony Sottile]

   Version 0.19.3
       Released on October 5, 2019.

       • Follow  up the libsass upstream: 3.6.2 --- See the release notes of LibSass 3.6.2. [#302
         by Anthony Sottile]

   Version 0.19.2
       Released on June 16, 2019.

       • Follow up the libsass upstream: 3.6.1 --- See the release notes of LibSass 3.6.1.  [#298
         by Anthony Sottile]

   Version 0.19.1
       Released on May 18, 2019.

       • Re-release of 0.19.0 with windows python2.7 wheels [#297 by Anthony Sottile]

   Version 0.19.0
       Released on May 18, 2019.

       • Follow  up the libsass upstream: 3.6.0 --- See the release notes of LibSass 3.6.0. [#295
         by Anthony Sottile]

   Version 0.18.0
       Release on March 13, 2019

       • Add support for previous import  path  to  importer  callbacks  [#287  #291  by  Frankie
         Dintino]

   Version 0.17.0
       Release on January 03, 2019

       •

         Add several new cli options [#279 #268 by Frankie Dintino]--sourcemap-file: output file for source map

                • --sourcemap-contents: embed sourcesContent in source map

                • --sourcemap-embed: embed sourceMappingURL as data uri

                • --omit-sourcemap-url: omit source map url comment from output

                • --sourcemap-root: base path, emitted as sourceRoot in source map

       • Fix .sass in WsgiMiddleware (again) [#280 by Anthony Sottile]

   Version 0.16.1
       Released on November 25, 2018.

       • Fix compilation on macos mojave [#276 #277 by Anthony Sottile]

       • Fix .sass in WsgiMiddleware for strip_extension=True [#278 by Anthony Sottile]

   Version 0.16.0
       Released on November 13, 2018.

       • Use  -lc++ link flag when compiling with clang [#270 by Christian Thieme #271 by Anthony
         Sottile]

       • Honor strip_extension in SassMiddleware [#274 by Anthony Sottile]

       • Follow up the libsass upstream: 3.5.5 --- See the release notes of LibSass 3.5.5.  [#275
         by Anthony Sottile]

   Version 0.15.1
       Released on September 24, 2018.

       • Fix setup.py sdist (regressed in 0.15.0) [#267 by Anthony Sottile]

   Version 0.15.0
       Released on September 16, 2018.

       • Fix invalid escape sequences [#249 by Anthony Sottile]

       • Add code of conduct [#251 by Nick Schonning]

       • Add support for python3.7 and remove testing for python3.4 [#254 by Anthony Sottile]

       • Add  strip_extension  option  for  wsgi / distutils builder [#55 #258 by Anthony Sottile
         #260 by Morten Brekkevold]

       • Deprecate sassc (replaced by pysassc).  [#262 by Anthony Sottile]

       • Import abc classes from collections.abc to remove DeprecationWarning [#264 by  Gary  van
         der Merwe #265 by Anthony Sottile]

   Version 0.14.5
       Released on April 25, 2018.

       • Follow  up the libsass upstream: 3.5.4 --- See the release notes of LibSass 3.5.4. [#247
         by Anthony Sottile]

   Version 0.14.4
       Released on April 24, 2018.

       • Add ability to specify imports for custom extensions.  This provides  a  way  to  enable
         imports of .css files (which was removed in 3.5.3).  Specify --import-extensions .css to
         restore the previous behavior.  [#246 by Samuel Colvin]

   Version 0.14.3
       Released on April 23, 2018.

       • Follow up the libsass upstream: 3.5.3 --- See the release notes of LibSass 3.5.3.  [#244
         by Anthony Sottile]

   Version 0.14.2
       Released on March 16, 2018.

       • Follow  up the libsass upstream: 3.5.2 --- See the release notes of LibSass 3.5.2. [#243
         by Anthony Sottile]

   Version 0.14.1
       Released on March 12, 2018.

       • Follow up the libsass upstream: 3.5.1 --- See the release notes of LibSass 3.5.1.  [#242
         by Anthony Sottile]

   Version 0.14.0
       Released on March 6, 2018.

       • Follow  up the libsass upstream: 3.5.0 --- See the release notes of LibSass 3.5.0. [#241
         by Anthony Sottile]

       • SassList type gained an additional option bracketed=False to match the upstream  changes
         to the sass_list type. [#184 by Anthony Sottile]

   Version 0.13.7
       Released on February 5, 2018.

       • Follow  up the libsass upstream: 3.4.9 --- See the release notes of LibSass 3.4.9. [#232
         by Anthony Sottile]

   Version 0.13.6
       Released on January 19, 2018.

       • libsass-python has moved to the sass organization!

   Version 0.13.5
       Released on January 11, 2018.

       • Follow up the libsass upstream: 3.4.8 --- See the release notes of LibSass 3.4.8.  [#228
         by Anthony Sottile]

   Version 0.13.4
       Released on November 14, 2017.

       • Follow  up the libsass upstream: 3.4.7 --- See the release notes of LibSass 3.4.7. [#226
         by Anthony Sottile]

   Version 0.13.3
       Released on October 11, 2017.

       • Sort input files for determinism [#212 by Bernhard M. Wiedemann]

       • Include LICENSE file in distributions [#216 by Dougal J. Sutherland]

       • Add a pysassc entry to replace sassc [#218 by Anthony Sottile]

       • Enable building with dynamic linking [#219 by Marcel Plch]

       • Follow up the libsass upstream: 3.4.6 --- See the release notes of LibSass 3.4.6.  [#221
         by Anthony Sottile]

   Version 0.13.2
       Released on June 14, 2017.

       • Always add cwd to import paths [#208 by Anthony Sottile]

   Version 0.13.1
       Released on June 8, 2017.

       • Follow  up the libsass upstream: 3.4.5 --- See the release notes of LibSass 3.4.5. [#207
         by Anthony Sottile]

   Version 0.13.0
       Released on June 7, 2017.

       • Use getfullargspec when available in python 3. [#188 by Thom Wiggers]

       • Use sass_copy_c_string instead of strdup for portability [#196 by Anthony Sottile]

       • Use -std=gnu++0x to fix installation under cygwin [#195 #197 by Anthony Sottile]

       • Correct source map url [#201 #202 by Anthony Sottile]

       • Remove --watch [#203 by Anthony Sottile]

       • Follow up the libsass upstream: 3.4.4 --- See the release notes of LibSass 3.4.4.  [#205
         by Anthony Sottile]

   Version 0.12.3
       Released on January 7, 2017.

       • Follow  up the libsass upstream: 3.4.3 --- See the release notes of LibSass 3.4.3. [#178
         by Anthony Sottile]

   Version 0.12.2
       Released on January 5, 2017.

       • Follow up the libsass upstream: 3.4.2 --- See the release notes of LibSass 3.4.2.  [#176
         by Anthony Sottile]

   Version 0.12.1
       Released on December 20, 2016.

       • Follow  up the libsass upstream: 3.4.1 --- See the release notes of LibSass 3.4.1. [#175
         by Anthony Sottile]

   Version 0.12.0
       Released on December 10, 2016.

       • Follow up the libsass upstream: 3.4.0 --- See the release notes of LibSass 3.4.0.  [#173
         by Anthony Sottile]

   Version 0.11.2
       Released on October 24, 2016.

       • Drop support for python2.6 [#158 by Anthony Sottile]

       • Deprecate --watch [#156 by Anthony Sottile]

       • Preserve line endings [#160 by Anthony Sottile]

       • Follow  up the libsass upstream: 3.3.6 --- See the release notes of LibSass 3.3.6. [#167
         by Anthony Sottile]

   Version 0.11.1
       Released on April 22, 2016.

       • Follow up the libsass upstream: 3.3.5 --- See the release notes of LibSass 3.3.5.  [#148
         by Anthony Sottile]

   Version 0.11.0
       Released on March 23, 2016.

       • Follow  up the libsass upstream: 3.3.4 --- See the release notes of LibSass 3.3.4. [#144
         by Anthony Sottile]

       • Expose libsass version in sassc --version and sass.libsass_version [#142  #141  #140  by
         Anthony Sottile]

       • Fix warning about unused enum on switch [#127 #131 by Anthony Sottile]

       • Sourcemaps no longer imply source comments [#124 #130 by Tim Tisdall]

       • Add --source-comments option to sassc [#124 #130 by Anthony Sottile]

       • Improve formatting of CompileError under python3 [#123 by Anthony Sottile]

       • Raise when compiling a directory which does not exist [#116 #119 by Anthony Sottile]

   Version 0.10.1
       Released on January 29, 2016.

       • Follow  up  the  libsass upstream: 3.3.3 --- See the release notes of LibSass 3.3.3. [by
         Anthony Sottile]

       • Allow -t for style like sassc [#98 by Anthony Sottile]

   Version 0.10.0
       Released on December 15, 2015.

       • Support custom import callbacks [#81 by Alice Zoë Bevan–McGregor, Anthony Sottile]

       • Disallow arbitrary kwargs in compile() [#109 by Anthony Sottile]

   Version 0.9.3
       Released on December 03, 2015.

       • Support "indented" Sass compilation [#41 by Alice Zoë Bevan–McGregor]

       • Fix wheels on windows [#28 #49 by Anthony Sottile]

   Version 0.9.2
       Released on November 12, 2015.

       • Follow up the libsass upstream: 3.3.2 --- See the release notes of  LibSass  3.3.2.  [by
         Anthony Sottile]

       • Require VS 2015 to build on windows [#99 by Anthony Sottile]

   Version 0.9.1
       Released on October 29, 2015.

       • Follow  up  the  libsass upstream: 3.3.1 --- See the release notes of LibSass 3.3.1. [by
         Anthony Sottile]

   Version 0.9.0
       Released on October 28, 2015.

       • Fix a bug with writing UTF-8 to a file [#72 by Caleb Ely]

       • Fix a segmentation fault on ^C [#87 by Anthony Sottile]

       • Follow up the libsass upstream: 3.3.0 --- See the release notes of LibSass  3.3.0.  [#96
         by Anthony Sottile]

   Version 0.8.3
       Released on August 2, 2015.

       • Follow up the libsass upstream: 3.2.5 --- See the release notes of LibSass 3.2.5.  [#79,
         #80 by Anthony Sottile]

       • Fixed a bug that *.sass files were ignored.  [#78 by Guilhem MAS-PAITRAULT]

   Version 0.8.2
       Released on May 19, 2015.

       • Follow up the libsass upstream: 3.2.4 --- See the release notes of  LibSass  3.2.3,  and
         3.2.4.  [#69 by Anthony Sottile]

       • The  default  value  of  SassMiddleware's  error_status  parameter was changed from '500
         Internal Server Error' to '200 OK' so that Mozilla Firefox can render the error  message
         well.  [#67, #68, #70 by zxv]

   Version 0.8.1
       Released on May 14, 2015.

       • Fixed  a  bug  that there was no 'expanded' in sass.OUTPUT_STYLES but 'expected' instead
         which is a typo.  [#66 by Triangle717]

       • Fixed broken FreeBSD build.  [#65 by Toshiharu Moriyama]

   Version 0.8.0
       Released on May 3, 2015.

       • Follow up the libsass upstream: 3.2.2 --- See the release notes of LibSass 3.2.0, 3.2.1,
         and 3.2.2.  [#61, #52, #56, #58, #62, #64 by Anthony Sottile]

         • Compact and expanded output styles  [#37]

         • Strings and interpolation closer to Ruby Sass

         • The correctness of the generated sourcemap files

         • Directive buddling

         • Full support for the @at-root directive

         • Full support for !global variable scoping

       • Now underscored files are ignored when compiling a directory.  [#57 by Anthony Sottile]

       • Fixed broken FreeBSD build.  [#34, #60 by Ilya Baryshev]

       • SassMiddleware   became   to   log   syntax   errors  if  exist  during  compilation  to
         sassutils.wsgi.SassMiddleware logger with level ERROR.  [#42]

   Version 0.7.0
       Released on March 6, 2015.

       Anthony Sottile contributed to the most of this release.  Huge thanks to him!

       • Follow up the libsass upstream: 3.1.0 --- See the release note of LibSass.  [#38, #43 by
         Anthony Sottile]

         • Custom functions and imports

         • Decrementing in @for loops

         • @debug and @errornot operator

         • nth() for maps

         • inspect()feature-exists()unique-id()random()

       • Added custom functions support.  [#13, #44 by Anthony Sottile]

         • Added sass.SassFunction class.

         • Added custom_functions parameter to sass.compile() function.

         • Added data types for custom functions:

           • sass.SassNumbersass.SassColorsass.SassListsass.SassMapsass.SassErrorsass.SassWarning

       • Added precision parameter to sass.compile() function.  [#39 by Andrea Stagi]

       • sassc has a new -p/--precision option.  [#39 by Andrea Stagi]

   Version 0.6.2
       Released on November 25, 2014.

       Although  0.6.0--0.6.1  have needed GCC (G++) 4.8+, LLVM Clang 3.3+, now it became back to
       only need GCC (G++) 4.6+, LLVM Clang 2.9+, or Visual Studio 2013 Update 4+.

       • Follow up the libsass upstream: 3.0.2 --- See the release  note  of  libsass.   [#33  by
         Rodolphe Pelloux-Prayer]

       • Fixed  a  bug that sassc --watch crashed when a file is not compilable on the first try.
         [#32 by Alan Justino da Silva]

       • Fixed broken build on Windows.

   Version 0.6.1
       Released on November 6, 2014.

       • Follow up the libsass upstream: 3.0.1 --- See the release note of LibSass.

       • Fixed a bug that SassMiddleware never closes  the  socket  on  some  WSGI  servers  e.g.
         eventlet.wsgi.

   Version 0.6.0
       Released on October 27, 2014.

       Note  that  since  libsass-python  0.6.0  (and  libsass 3.0) it requires C++11 to compile.
       Although 0.6.2 became back to only need GCC (G++) 4.6+, LLVM Clang  2.9+,  from  0.6.0  to
       0.6.1 you need GCC (G++) 4.8+, LLVM Clang 3.3+, or Visual Studio 2013 Update 4+.

       • Follow up the libsass upstream: 3.0 --- See the release note of LibSass.

         • Decent extends support

         • Basic Sass Maps Support

         • Better UTF-8 Support

         • call() function

         • Better Windows Support

         • Spec Enhancements

       • Added missing partial import support.  [#27 by item4]

       • SOURCE_COMMENTS became deprecated.

       • sass.compile()'s  parameter  source_comments  now  can  take  only  bool instead of str.
         String values like 'none', 'line_numbers', and 'map'  become  deprecated,  and  will  be
         obsolete soon.

       • build_directory() function has a new optional parameter output_style.

       • build() method has a new optional parameter output_style.

       • Added --output-style/-s option to build_sass command.  [#25]

   Version 0.5.1
       Released on September 23, 2014.

       • Fixed a bug that SassMiddleware yielded str instead of bytes on Python 3.

       • Fixed several Unicode-related bugs on Windows.

       • Fixed  a  bug  that  build_directory(), SassMiddleware, and build_sass don't recursively
         build subdirectories.

   Version 0.5.0
       Released on June 6, 2014.

       • Follow up the libsass upstream: 2.0 --- See the release note of LibSass.

         • Added indented syntax support (*.sass files).

         • Added expanded selector support (BEM).

         • Added string functions.

         • Fixed UTF-8 support.

         • Backward incompatibility: broken extends.

   Unstable version 0.4.2.20140529.cd3ee1cbe3
       Released on May 29, 2014.

       • Version scheme changed to use periods (.) instead of hyphens (-) due to setuptools seems
         to treat hyphens special.

       • Fixed malformed packaging that doesn't correctly preserve the package name and version.

   Unstable Version 0.4.2-20140528-cd3ee1cbe3
       Released on May 28, 2014.

       • Follow up the libsass upstream: cd3ee1cbe34d5316eb762a43127a3de9575454ee.

   Version 0.4.2
       Released on May 22, 2014.

       • Fixed build failing on Mac OS X 10.8 or earlier.  [#19]

       • Fixed  UnicodeEncodeError  that  Manifest.build_one() method rises when the input source
         contains any non-ASCII Unicode characters.

   Version 0.4.1
       Released on May 20, 2014.

       • Fixed UnicodeEncodeError that rise when the input source contains any non-ASCII  Unicode
         characters.

   Version 0.4.0
       Released on May 6, 2014.

       • sassc has a new -w/--watch option.

       • Expose source maps support:

         • sassc has a new -m/-g/--sourcemap option.

         • SassMiddleware  now  also  creates  source  map  files with filenames followed by .map
           suffix.

         • Manifest.build_one() method has a new source_map option.  This option  builds  also  a
           source map file with the filename followed by .map suffix.

         • sass.compile()  has  a  new  optional  parameter  source_comments.   It  can be one of
           sass.SOURCE_COMMENTS keys.  It also has a new parameter source_map_filename  which  is
           required only when source_comments='map'.

       • Fixed Python 3 incompatibility of sassc program.

       • Fixed a bug that multiple include_paths doesn't work on Windows.

   Version 0.3.0
       Released on February 21, 2014.

       • Added support for Python 3.3.  [#7]

       • Dropped support for Python 2.5.

       • Fixed build failing on Mac OS X.  [#4, #5, #6 by Hyungoo Kang]

       • Now builder creates target recursive subdirectories even if it doesn't exist yet, rather
         than siliently fails.  [#8, #9 by Philipp Volguine]

       • Merged recent changes from libsass 1.0.1: 57a2f62--v1.0.1.

         • Supports variable arguments.

         • Supports sourcemaps.

   Version 0.2.4
       Released on December 4, 2012.

       • Added sassc CLI executable script.

       • Added sass.OUTPUT_STYLES constant map.

       • Merged recent changes from libsass upstream: e997102--a84b181.

   Version 0.2.3
       Released on October 24, 2012.

       • sassutils.distutils: Prevent double monkey patch of sdist.

       • Merged upstream changes of libsass.

   Version 0.2.2
       Released on September 28, 2012.

       • Fixed a link error on PyPy and Linux.

       • Fixed build errors on Windows.

   Version 0.2.1
       Released on September 12, 2012.

       • Support Windows.

   Version 0.2.0
       Released on August 24, 2012.

       • Added new sassutils package.

         • Added sassutils.builder module to build the whole directory at a time.

         • Added sassutils.distutils module for distutils and setuptools integration.

         • Added sassutils.wsgi module which provides a development-purpose WSGI middleware.

       • Added build_sass command for distutils/setuptools.

   Version 0.1.1
       Released on August 18, 2012.

       • Fixed segmentation fault for reading filename which does not exist.   Now  it  raises  a
         proper exceptions.IOError exception.

   Version 0.1.0
       Released on August 17, 2012.  Initial version.

REFERENCES

   pysassc --- SassC compliant command line interface
       This provides SassC compliant CLI executable named pysassc:

          $ pysassc
          Usage: pysassc [options] SCSS_FILE [CSS_FILE]

       There are options as well:

       -t <style>, --style <style>
              Coding  style  of  the  compiled  result.   The  same  as sass.compile() function's
              output_style keyword argument.  Default is nested.

       -s <style>, --output-style <style>
              Alias for -t / --style.

              Deprecated since version 0.11.0.

       -I <dir>, --include-path <dir>
              Optional directory path to find @imported (S)CSS files.  Can be multiply used.

       -m, -g, --sourcemap
              Emit source map.  Requires the second argument (output CSS filename).  The filename
              of source map will be the output CSS filename followed by .map.

              New in version 0.4.0.

       -p, --precision
              Set the precision for numbers. Default is 5.

              New in version 0.7.0.

       --source-comments
              Include debug info in output.

              New in version 0.11.0.

       --sourcemap-file
              Output file for source map

              New in version 0.17.0.

       --sourcemap-contents
              Embed sourcesContent in source map.

              New in version 0.17.0.

       --sourcemap-embed
              Embed sourceMappingUrl as data URI

              New in version 0.17.0.

       --omit-sourcemap-url
              Omit source map URL comment from output

              New in version 0.17.0.

       --sourcemap-root
              Base path, will be emitted to sourceRoot in source-map as is

              New in version 0.17.0.

       -v, --version
              Prints the program version.

       -h, --help
              Prints the help message.

   sass --- Binding of libsass
       This simple C extension module provides a very simple binding of libsass, which is written
       in C/C++.  It contains only one function and one exception type.

       >>> import sass
       >>> sass.compile(string='a { b { color: blue; } }')
       'a b {
         color: blue; }
       '

       exception sass.CompileError(msg)
              The  exception  type  that  is  raised  by  compile().   It   is   a   subtype   of
              exceptions.ValueError.

       sass.MODES = frozenset({'dirname', 'filename', 'string'})
              (frozenset) The set of keywords compile() can take.

       sass.OUTPUT_STYLES = {'compact': 2, 'compressed': 3, 'expanded': 1, 'nested': 0}
              (collections.abc.Mapping)  The  dictionary  of output styles.  Keys are output name
              strings, and values are flag integers.

       sass.SOURCE_COMMENTS = {'default': 1, 'line_numbers': 1, 'map': 2, 'none': 0}
              (collections.abc.Mapping) The dictionary of source comments styles.  Keys are  mode
              names, and values are corresponding flag integers.

              New in version 0.4.0.

              Deprecated since version 0.6.0.

       class sass.SassColor(r, g, b, a)

       class sass.SassError(msg)

       class sass.SassFunction(name, arguments, callable_)
              Custom  function  for  Sass.   It  can  be  instantiated  using  from_lambda()  and
              from_named_function() as well.

              Parametersname (str) -- the function name

                     • arguments (collections.abc.Sequence) -- the argument names

                     • callable (collections.abc.Callable) -- the actual function to be called

              New in version 0.7.0.

              classmethod from_lambda(name, lambda_)
                     Make a SassFunction object from the given lambda_  function.   Since  lambda
                     functions  don't  have  their name, it need its name as well.  Arguments are
                     automatically inspected.

                     Parametersname (str) -- the function name

                            • lambda (types.LambdaType) --  the  actual  lambda  function  to  be
                              called

                     Returns
                            a custom function wrapper of the lambda_ function

                     Return type
                            SassFunction

              classmethod from_named_function(function)
                     Make  a  SassFunction  object  from  the  named function.  Function name and
                     arguments are automatically inspected.

                     Parameters
                            function (types.FunctionType) -- the named function to be called

                     Returns
                            a custom function wrapper of the function

                     Return type
                            SassFunction

              property signature
                     Signature string of the function.

       class sass.SassList(items, separator, bracketed=False)

       class sass.SassMap(*args, **kwargs)
              Because sass maps can have mapping types as keys, we  need  an  immutable  hashable
              mapping type.

              New in version 0.7.0.

       class sass.SassNumber(value, unit)

       class sass.SassWarning(msg)

       sass.and_join(strings)
              Join the given strings by commas with last ' and ' conjuction.

              >>> and_join(['Korea', 'Japan', 'China', 'Taiwan'])
              'Korea, Japan, China, and Taiwan'

              Parameters
                     strings -- a list of words to join

              Returns
                     a joined string

              Return type
                     str, basestring

       sass.compile(**kwargs)
              There  are  three  modes  of  parameters  compile() can take: string, filename, and
              dirname.

              The string parameter is the most basic way to compile  Sass.   It  simply  takes  a
              string of Sass code, and then returns a compiled CSS string.

              Parametersstring  (str)  -- Sass source code to compile.  it's exclusive to filename
                       and dirname parameters

                     • output_style (str) -- an optional coding style  of  the  compiled  result.
                       choose one of: 'nested' (default), 'expanded', 'compact', 'compressed'source_comments  (bool)  --  whether  to  add comments about source lines.
                       False by default

                     • source_map_contents (bool) -- embed include contents in map

                     • source_map_embed (bool) -- embed sourceMappingUrl as data URI

                     • omit_source_map_url (bool) -- omit source map URL comment from output

                     • source_map_root (str) -- base path, will be emitted in source map as is

                     • include_paths (collections.abc.Sequence) -- an optional list of  paths  to
                       find @imported Sass/CSS source files

                     • precision (int) -- optional precision for numbers. 5 by default.

                     • custom_functions  (set, collections.abc.Sequence, collections.abc.Mapping)
                       -- optional mapping of custom functions.  see also below custom  functions
                       description

                     • custom_import_extensions -- (ignored, for backward compatibility)

                     • indented  (bool) -- optional declaration that the string is Sass, not SCSS
                       formatted. False by default

                     • importers (collections.abc.Callable) -- optional callback functions.   see
                       also below importer callbacks description

              Returns
                     the compiled CSS string

              Return type
                     str

              Raises sass.CompileError  --  when  it  fails for any reason (for example the given
                     Sass has broken syntax)

              The filename is the most commonly used way.  It takes a string  of  Sass  filename,
              and then returns a compiled CSS string.

              Parametersfilename  (str)  --  the  filename  of  Sass source code to compile.  it's
                       exclusive to string and dirname parameters

                     • output_style (str) -- an optional coding style  of  the  compiled  result.
                       choose one of: 'nested' (default), 'expanded', 'compact', 'compressed'source_comments  (bool)  --  whether  to  add comments about source lines.
                       False by default

                     • source_map_filename (str) -- use source maps and indicate the  source  map
                       output filename.  None means not using source maps.  None by default.

                     • source_map_contents (bool) -- embed include contents in map

                     • source_map_embed (bool) -- embed sourceMappingUrl as data URI

                     • omit_source_map_url (bool) -- omit source map URL comment from output

                     • source_map_root (str) -- base path, will be emitted in source map as is

                     • include_paths  (collections.abc.Sequence)  -- an optional list of paths to
                       find @imported Sass/CSS source files

                     • precision (int) -- optional precision for numbers. 5 by default.

                     • custom_functions (set, collections.abc.Sequence,  collections.abc.Mapping)
                       --  optional mapping of custom functions.  see also below custom functions
                       description

                     • custom_import_extensions -- (ignored, for backward compatibility)

                     • importers (collections.abc.Callable) -- optional callback functions.   see
                       also below importer callbacks description

              Returns
                     the compiled CSS string, or a pair of the compiled CSS string and the source
                     map string if source_map_filename is set

              Return type
                     str, tuple

              Raisessass.CompileError -- when it fails for any reason (for example  the  given
                       Sass has broken syntax)

                     • exceptions.IOError -- when the filename doesn't exist or cannot be read

              The  dirname is useful for automation.  It takes a pair of paths.  The first of the
              dirname pair refers the source directory, contains several  Sass  source  files  to
              compiled.   Sass source files can be nested in directories.  The second of the pair
              refers the output directory that compiled CSS files would be saved.  Directory tree
              structure  of  the  source  directory will be maintained in the output directory as
              well.  If dirname parameter is used the function returns None.

              Parametersdirname (tuple) -- a pair of (source_dir, output_dir).  it's exclusive  to
                       string and filename parameters

                     • output_style  (str)  --  an  optional coding style of the compiled result.
                       choose one of: 'nested' (default), 'expanded', 'compact', 'compressed'source_comments (bool) -- whether to  add  comments  about  source  lines.
                       False by default

                     • source_map_contents (bool) -- embed include contents in map

                     • source_map_embed (bool) -- embed sourceMappingUrl as data URI

                     • omit_source_map_url (bool) -- omit source map URL comment from output

                     • source_map_root (str) -- base path, will be emitted in source map as is

                     • include_paths  (collections.abc.Sequence)  -- an optional list of paths to
                       find @imported Sass/CSS source files

                     • precision (int) -- optional precision for numbers. 5 by default.

                     • custom_functions (set, collections.abc.Sequence,  collections.abc.Mapping)
                       --  optional mapping of custom functions.  see also below custom functions
                       description

                     • custom_import_extensions -- (ignored, for backward compatibility)

              Raises sass.CompileError -- when it fails for any reason  (for  example  the  given
                     Sass has broken syntax)

              The custom_functions parameter can take three types of forms:

              set/Sequence of SassFunctions
                 It  is  the most general form.  Although pretty verbose, it can take any kind of
                 callables like type objects, unnamed functions, and user-defined callables.

                     sass.compile(
                         ...,
                         custom_functions={
                             sass.SassFunction('func-name', ('$a', '$b'), some_callable),
                             ...
                         }
                     )

              Mapping of names to functions
                     Less general, but easier-to-use form.  Although it's not  it  can  take  any
                     kind  of  callables,  it  can take any kind of functions defined using def/‐
                     lambda syntax.  It cannot take callables other than  them  since  inspecting
                     arguments is not always available for every kind of callables.

                        sass.compile(
                            ...,
                            custom_functions={
                                'func-name': lambda a, b: ...,
                                ...
                            }
                        )

              set/Sequence of named functions
                 Not  general, but the easiest-to-use form for named functions.  It can take only
                 named functions, defined using def.  It  cannot  take  lambdas  sinc  names  are
                 unavailable for them.

                     def func_name(a, b):
                         return ...

                     sass.compile(
                         ...,
                         custom_functions={func_name}
                     )

              Newer  versions  of  libsass  allow developers to define callbacks to be called and
              given a chance to process @import directives. You can define yours by passing in  a
              list  of  callables  via  the  importers parameter. The callables must be passed as
              2-tuples in the form:

                 (priority_int, callback_fn)

              A priority of zero is acceptable;  priority  determines  the  order  callbacks  are
              attempted.

              These  callbacks  can accept one or two string arguments. The first argument is the
              path that was passed to the @import directive; the second  (optional)  argument  is
              the  previous  resolved  path, where the @import directive was found. The callbacks
              must either return None to indicate the path wasn't handled by  that  callback  (to
              continue  with  others  or fall back on internal libsass filesystem behaviour) or a
              list of one or more tuples, each in one of three forms:

              • A 1-tuple representing an alternate path to handle internally; or,

              • A 2-tuple representing an alternate path and the content  that  path  represents;
                or,

              • A  3-tuple  representing  the  same  as  the  2-tuple  with  the  addition  of  a
                "sourcemap".

              All tuple return values must be strings. As a not overly realistic example:

                 def my_importer(path, prev):
                     return [(path, '#' + path + ' { color: red; }')]

                 sass.compile(
                         ...,
                         importers=[(0, my_importer)]
                     )

              Now, within the style source, attempting to @import 'button'; will  instead  attach
              color: red as a property of an element with the imported name.

              New in version 0.4.0: Added source_comments and source_map_filename parameters.

              Changed  in  version 0.6.0: The source_comments parameter becomes to take only bool
              instead of str.

              Deprecated since version 0.6.0: Values like 'none', 'line_numbers', and  'map'  for
              the source_comments parameter are deprecated.

              New in version 0.7.0: Added precision parameter.

              New in version 0.7.0: Added custom_functions parameter.

              New in version 0.11.0: source_map_filename no longer implies source_comments.

              New    in    version    0.17.0:    Added   source_map_contents,   source_map_embed,
              omit_source_map_url, and source_map_root parameters.

              New in version 0.18.0: The importer callbacks can now take a second  argument,  the
              previously- resolved path, so that importers can do relative path resolution.

   sassutils --- Additional utilities related to Sass
       This  package  provides  several  additional  utilities  related  to Sass which depends on
       libsass core (sass module).

   sassutils.builder --- Build the whole directory
       class      sassutils.builder.Manifest(sass_path,      css_path=None,       wsgi_path=None,
       strip_extension=None)
              Building manifest of Sass/SCSS.

              Parameterssass_path  (str,  basestring)  --  the path of the directory that contains
                       Sass/SCSS source files

                     • css_path (str, basestring) -- the path of the directory to store  compiled
                       CSS files

                     • strip_extension (bool) -- whether to remove the original file extension

              build(package_dir, output_style='nested')
                     Builds  the  Sass/SCSS files in the specified sass_path.  It finds sass_path
                     and locates css_path as relative to the given package_dir.

                     Parameterspackage_dir (str, basestring) -- the path of package directory

                            • output_style (str) -- an optional  coding  style  of  the  compiled
                              result.   choose one of: 'nested' (default), 'expanded', 'compact',
                              'compressed'

                     Returns
                            the set of compiled CSS filenames

                     Return type
                            frozenset

                     New in version 0.6.0: The output_style parameter.

              build_one(package_dir, filename, source_map=False)
                     Builds one Sass/SCSS file.

                     Parameterspackage_dir (str, basestring) -- the path of package directory

                            • filename (str, basestring) -- the filename of Sass/SCSS  source  to
                              compile

                            • source_map  (bool)  -- whether to use source maps.  if True it also
                              write a source map to a filename followed by .map suffix.   default
                              is False

                     Returns
                            the filename of compiled CSS

                     Return type
                            str, basestring

                     New in version 0.4.0: Added optional source_map parameter.

              resolve_filename(package_dir, filename)
                     Gets  a proper full relative path of Sass source and CSS source that will be
                     generated, according to package_dir and filename.

                     Parameterspackage_dir (str, basestring) -- the path of package directory

                            • filename (str, basestring) -- the filename of Sass/SCSS  source  to
                              compile

                     Returns
                            a pair of (sass, css) path

                     Return type
                            tuple

              unresolve_filename(package_dir, filename)
                     Retrieves the probable source path from the output filename.  Pass in a .css
                     path to get out a .scss path.

                     Parameterspackage_dir (str) -- the path of the package directory

                            • filename (str) -- the css filename

                     Returns
                            the scss filename

                     Return type
                            str

       sassutils.builder.SUFFIXES = frozenset({'sass', 'scss'})
              (frozenset) The set of supported filename suffixes.

       sassutils.builder.SUFFIX_PATTERN = re.compile('[.](sass|scss)$')
              (re.RegexObject) The regular expression  pattern  which  matches  to  filenames  of
              supported SUFFIXES.

       sassutils.builder.build_directory(sass_path,        css_path,       output_style='nested',
       _root_sass=None, _root_css=None, strip_extension=False)
              Compiles all Sass/SCSS files in path to CSS.

              Parameterssass_path (str, basestring) -- the path of the  directory  which  contains
                       source files to compile

                     • css_path (str, basestring) -- the path of the directory compiled CSS files
                       will go

                     • output_style (str) -- an optional coding style  of  the  compiled  result.
                       choose one of: 'nested' (default), 'expanded', 'compact', 'compressed'

              Returns
                     a dictionary of source filenames to compiled CSS filenames

              Return type
                     collections.abc.Mapping

              New in version 0.6.0: The output_style parameter.

   sassutils.distutils --- setuptools/distutils integration
       This  module  provides extensions (and some magical monkey-patches, sorry) of the standard
       distutils and setuptools (now it's named Distribute) for libsass.

       To use this, add libsass into setup_requires (not install_requires) option of the setup.py
       script:

          from setuptools import setup

          setup(
              # ...,
              setup_requires=['libsass >= 0.6.0']
          )

       It will adds build_sass command to the setup.py script:

          $ python setup.py build_sass

       This  commands  builds  Sass/SCSS files to compiled CSS files of the project and makes the
       package archive (made by sdist, bdist, and so on) to include these compiled CSS files.

       To set the directory of Sass/SCSS source files and the directory  to  store  compiled  CSS
       files, specify sass_manifests option:

          from setuptools import find_packages, setup

          setup(
              name='YourPackage',
              packages=find_packages(),
              sass_manifests={
                  'your.webapp': ('static/sass', 'static/css')
              },
              setup_requires=['libsass >= 0.6.0']
          )

       The option should be a mapping of package names to pairs of paths, e.g.:

          {
              'package': ('static/sass', 'static/css'),
              'package.name': ('static/scss', 'static')
          }

       The option can also be a mapping of package names to manifest dictionaries:

          {
              'package': {
                  'sass_path': 'static/sass',
                  'css_path': 'static/css',
                  'strip_extension': True,
              },
          }

       New  in  version  0.15.0:  Added strip_extension so a.scss is compiled to a.css instead of
       a.scss.css.  This option will default to True in the future.

       New in version 0.6.0: Added --output-style/-s option to build_sass command.

       class sassutils.distutils.build_sass(dist, **kw)
              Builds Sass/SCSS files to CSS files.

              finalize_options()
                     Set final values for all the options that this command  supports.   This  is
                     always  called  as  late as possible, ie.  after any option assignments from
                     the command-line or from other commands have been done.  Thus, this  is  the
                     place  to  code  option  dependencies: if 'foo' depends on 'bar', then it is
                     safe to set 'foo' from 'bar' as long as 'foo' still has the  same  value  it
                     was assigned in 'initialize_options()'.

                     This method must be implemented by all command classes.

              get_package_dir(package)
                     Returns the directory, relative to the top of the source distribution, where
                     package package should be found  (at  least  according  to  the  package_dir
                     option, if any).

                     Copied from distutils.command.build_py.get_package_dir() method.

              initialize_options()
                     Set  default  values  for  all the options that this command supports.  Note
                     that these defaults may be  overridden  by  other  commands,  by  the  setup
                     script,  by  config  files,  or  by the command-line.  Thus, this is not the
                     place    to    code     dependencies     between     options;     generally,
                     'initialize_options()' implementations are just a bunch of "self.foo = None"
                     assignments.

                     This method must be implemented by all command classes.

              run()  A command's raison d'etre: carry  out  the  action  it  exists  to  perform,
                     controlled  by the options initialized in 'initialize_options()', customized
                     by other commands, the setup script, the command-line, and config files, and
                     finalized  in  'finalize_options()'.   All  terminal  output  and filesystem
                     interaction should be done by 'run()'.

                     This method must be implemented by all command classes.

       sassutils.distutils.validate_manifests(dist, attr, value)
              Verifies    that    value    is    an    expected    mapping    of    package    to
              sassutils.builder.Manifest.

   sassutils.wsgi --- WSGI middleware for development purpose
       class sassutils.wsgi.SassMiddleware(app, manifests, package_dir={}, error_status='200 OK')
              WSGI  middleware  for  development  purpose.  Everytime a CSS file has requested it
              finds a matched Sass/SCSS source file and then compiled it into CSS.

              It shows syntax errors in three ways:

              Heading comment
                     The result CSS includes detailed error message in the  heading  CSS  comment
                     e.g.:

                        /*
                        Error: invalid property name
                        */

              Red text in body:before
                     The  result CSS draws detailed error message in :before pseudo-class of body
                     element e.g.:

                        body:before {
                            content: 'Error: invalid property name';
                            color: maroon;
                            background-color: white;
                        }

                     In most cases you could be aware of syntax error by refreshing your  working
                     document  because  it  will  removes  all other styles and leaves only a red
                     text.

              logging
                     It    logs    syntax    errors    if    exist    during    compilation    to
                     sassutils.wsgi.SassMiddleware logger with level ERROR.

                     To enable this:

                        from logging import Formatter, StreamHandler, getLogger
                        logger = getLogger('sassutils.wsgi.SassMiddleware')
                        handler = StreamHandler(level=logging.ERROR)
                        formatter = Formatter(fmt='*' * 80 + '\n%(message)s\n' + '*' * 80)
                        handler.setFormatter(formatter)
                        logger.addHandler(handler)

                     Or simply:

                        import logging
                        logging.basicConfig()

              Parametersapp (collections.abc.Callable) -- the WSGI application to wrap

                     • manifests (collections.abc.Mapping) -- build settings.  the same format to
                       setup.py script's sass_manifests option

                     • package_dir (collections.abc.Mapping) -- optional mapping of package names
                       to directories.  the same format to setup.py script's package_dir option

              Changed  in version 0.4.0: It creates also source map files with filenames followed
              by .map suffix.

              New in version 0.8.0:  It  logs  syntax  errors  if  exist  during  compilation  to
              sassutils.wsgi.SassMiddleware logger with level ERROR.

              static quote_css_string(s)
                     Quotes a string as CSS string literal.

CREDIT

       Hong Minhee wrote this Python binding of LibSass.

       Hampton  Catlin  and  Aaron Leung wrote LibSass, which is portable C/C++ implementation of
       Sass.

       Hampton  Catlin  originally  designed  Sass  language  and  wrote  the   first   reference
       implementation of it in Ruby.

       The above three softwares are all distributed under MIT license.

OPEN SOURCE

       GitHub (Git repository + issues)
              https://github.com/sass/libsass-python

       Azure Pipelines CI (linux + windows)
              https://dev.azure.com/asottile/asottile/_build/latest?definitionId=22&branchName=master
              Build     Status.TP     Azure     Pipelines      Coverage      (Test      coverage)
              https://dev.azure.com/asottile/asottile/_build/latest?definitionId=22&branchName=master
              Coverage Status.TP PyPI https://pypi.org/pypi/libsass/ PyPI.TP Changelog changes

INDICES AND TABLES

       • genindex

       • modindex

       • search

AUTHOR

       Hong Minhee

COPYRIGHT

       2021, Hong Minhee