Metadata-Version: 1.1
Name: confined
Version: 0.1.11
Summary: Safe Forth inspired templating language
Home-page: http://github.org/jul/confined
Author: Julien Tayon
Author-email: julien@tayon.net
License: License :: OSI Approved :: BSD License
Description: =====================================================
        Confined: a safe resource bound immutable interpreter
        =====================================================
        
        * source: https://github.com/jul/confined
        * ticketing: https://github.com/jul/confined/issues
        
        .. image:: 
           https://travis-ci.org/jul/confined.png
        
        Use
        ===
        
        The purpose of this interpreter is to confine the user in a predictable way
        so that you don't have to fear to give your user the possibility to execute 
        arbitrary code on your servers.
        
        The language is mapping its input/internal stack to immutable data structures
        so that remote it is safe to pass it 
        
        Usage
        =====
        
        can be used like python -mconfined
        
        For usage::
        
            python confined -mconfined -h
        
        Can also be used programmatically
        
        Example::
        
            print templatize(dict(
                price=1, 
                q=3, 
                vat=19.6, 
                name="super carcajou", country="FR"
            ),'''
            <:
            "hello":world
            :> ici <:
                $name
            :> has
            <:
                $price >NUM
                $q >NUM MUL
                $vat >NUM 100:_per_cent_to_per_one DIV 
                1:_having_price_AND_vat ADD MUL >STR
                " ":_separator
                CAT
                "comment in string and drop":_or_in_tag
                DROP
                "€":_cur "$":_cur 
                $country
                "FR":_cocorico
                1:_nb_of_lines_for_looking_match
                MATCH
                IFT
                CAT :>
            may I have a dict please? <:
                $price >NUM
                $q
                "a string":with_a_name
                "ignored":_because_tag_starts_with_
                1231231231231231:a_long_int
                "a new name":_with_space
                TAG
                EDICT
            :>  ....  
            <: "fin": :>
            end''')
        
        
        Gives::
        
            hello ici super carcajou has
            18.31 €
            may I have a dict please? {
                "q": "3", 
                "price": "1", 
                "with_a_name": "a string", 
                "a new name": "1231231231231231"
            }  ....  
            fin
            end
        
        
        Changelog
        =========
        
        * 0.1.0     initial release oops forgot __name__ == main
        * 0.1.1     initial release
        * 0.1.2     going to fast, mis clicked a button in pypi
        * 0.1.4     forgot howto declare requirements
        * 0.1.9     after too many failure, embedding check_arg in this
        * 0.1.10    python3 (overdue)
        * 0.1.11    improved error handling (light)
                    bug fixed in templating
        
        Roadmap before 1.0.0
        ********************
        
        * ensuring that stack is controled in size 
        * handle Decimal nitroglycerine correctly so that users CAN multiply safely
        * Having a cheatsheet for the language
        * create a loads/dumps to be able to serialize code from a user for remote
             execution
        * limiting the size of the input scripts
        * using only iterator to be able to do nth repeated operation without copying everything in memory
        * handle versions compatibility for remote execution
        * handle the precisions and formating of Decimal
        * enough tests to feel secure
        
        Bigger roadmap
        **************
        
        Affter reading this https://compudanzas.net/uxn_tutorial.html I want to make a virtual machine
        that is fun to work with for a kid.
        I want to add the possibility to extend the language both in python to create interfaces/drivers
        and in the language itslef (like in tcl).
        
        
        
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.9
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
