This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

About

A simple problem solver written in pure Python

Module provides an easy way to solve various problems that require calculations. Lets imagine a problem formulated in a text file using a some template language. Some places within the problem formulation text correspond to variables that have default values. What does to solve a problem mean in this context? To solve the problem is to 1) define output template (used to render solution), 2) write code that exploits input variables, 3) set up output variables in the code and, finally, 4) render the solution template. With help of solver classes these steps of getting a problem solution can be made easily.

Solver features:
  • arbitrary and independent input and output markups used in problem formulation and solution templates.
  • ability of asynchronous problem solving (Celery is required).
  • heuristic testing of problem solvability.
  • using all of Python computational power (with third party libraries) to solve your problems.
  • using jinja2 template language to produce dynamic parts of a problem formulation/solution.

Requirements

The solver works under Python 2.7.x and Python 3.3 and higher. The only requirements:

  • jinja2
  • six

Installation

Install pysolver

$ pip install python-solver

Testing

To run tests enter the command (additionally numpy is required):

$ python -m solver.tests

Usage example

A simple test problem. My name is John. I have 100 $. I want to buy several papers. Each paper worth is 5 $. How many papers can I buy?

Test problem (abstraction level)

test_problem_template_formulation = """My name is {{username}}. I have {{total}} $.
I want to buy several papers. Each paper worth is {{paper_cost}}$.
How many papers can I buy?
"""

test_problem_solution_code = """
    OUTPUTS['result']=INPUTS['total']/INPUTS['paper_cost']
    OUTPUTS['name'] = INPUTS['username']
    """
test_problem_output_template="""
    My name is {{name}} and answer is {{result}}.
    """

from solver import Task, Solver

task = Task(test_problem_template_formulation,
            default_vals={'username': 'John',
            'total': 100, 'paper_cost': 20},
            solution_template=test_problem_output_template,
            code = test_problem_solution_code
            )

psolver = Solver(task)

Solve the problem

$ psolver.solve()

or you can try to solve the problem asynchronously instead. if error occur in async_solve, the solve() method will be invoked by default.

psolver.async_solve()

Before rendering the results check the problem solution is ready (This step is required, when getting the solution asynchronously)

if psolver.is_solved:
    task.render_outputs()
print(task.output)

And, finally, print rendered template or do something else.

Release History

Release History

0.0.3

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pysolver-0.0.3.tar.gz (10.5 kB) Copy SHA256 Checksum SHA256 Source Nov 24, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting