Python-scss is SCSS compiler for python. Documentation available at pypi or github. This is part of zeta-library.
Python-scss has most of the funcitonality in Sass SCSS 3.2 and more. It supports:
Note
For @import support you can use zeta-library, python compass alternative.
Zeta-library supported @import url(path or http), but all static files css, scss.
Also zeta support js import require( '../jquery.js' );. Zeta allow you control all your static files.
python-scss should be installed using pip or setuptools:
pip install scss
easy_install scss
From python source code:
from scss import parser
file_path = path_to_file
src = open( file_path ).read()
# from file
print parser.load( 'file_path' )
# from string
print parser.parse( 'src' )
# Create parser object
p = parser.Stylesheet( options=dict( compress=True ) )
print p.loads( src )
p.load( file_path )
print p
From command line:
$ scss --help
Usage: scss [OPTION]... [INFILE] [OUTFILE]
Compile INFILE or standard input, to OUTFILE or standard output.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-c, --cache Create and use cache file. Only for files.
-i, --interactive Run in interactive shell mode.
-m, --compress Compress css output.
-w WATCH, --watch=WATCH
Watch files or directories for changes. The location
of the generated CSS can be set using a colon:
scss -w input.scss:output.css
-S, --no-sorted Do not sort declaration.
-C, --no-comments Clear css comments.
-W, --no-warnings Disable warnings.
In interactive mode:
scss -i
>>> 25px + 1.5em
Make sure you`ve read the following document if you are upgrading from previous versions of scss:
Example:
.selector {
a {
display: block;
}
strong {
color: blue;
}
}
...produces:
.selector a {
display: block}
.selector strong {
color: blue}
Example:
$main-color: #ce4dd6;
$style: solid;
$side: bottom;
#navbar {
border-#{$side}: {
color: $main-color;
style: $style;
}
}
...produces:
#navbar {
border-bottom-color: #ce4dd6;
border-bottom-style: solid}
Example:
@mixin rounded($side, $radius: 10px) {
border-#{$side}-radius: $radius;
-moz-border-radius-#{$side}: $radius;
-webkit-border-#{$side}-radius: $radius;
}
#navbar li { @include rounded(top); }
#footer { @include rounded(top, 5px); }
#sidebar { @include rounded(left, 8px); }
...produces:
#navbar li {
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
border-top-radius: 10px}
#footer {
-moz-border-radius-top: 5px;
-webkit-border-top-radius: 5px;
border-top-radius: 5px}
#sidebar {
-moz-border-radius-left: 8px;
-webkit-border-left-radius: 8px;
border-left-radius: 8px}
Example:
.error {
border: 1px #f00;
background-color: #fdd;
}
.error.intrusion {
background-image: url("/image/hacked.png");
}
.seriousError {
@extend .error;
border-width: 3px;
}
...produces:
.error, .seriousError {
background-color: #fdd;
border: 1px #f00}
.error .intrusion, .seriousError .intrusion {
background-image: url('/image/hacked.png')}
.seriousError {
border-width: 3px}
Example:
$ python scss.py --interactive
>>> 25px + 1.5em
44.5px
>>> lighten(rgba(130,130,130,.4),10%)
rgba(155,155,155,0.40)
>>> .rule { test: red; }
.rule {
test: red }
>>> _
Python-scss has the following options:
Option can be defined...
from command line:
scss -m -S file.scss
from python:
parser = Stylesheet( options=dict( compress=True ) )
from scss source:
@option compress: true, sort: false;
Note
python-scss is still at early stages of development
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/python-scss/issues
Development of python-scss happens at github: https://github.com/klen/python-scss
Licensed under a GNU lesser general public license.
Copyright (c) 2011 Kirill Klenov (horneds@gmail.com)