Skip to main content
Ask

Ask

Introduction

Ask is an open source, dynamic, and transpiled programming language built for building backends and APIs. Ask directly transpiles to Python, more specifically Flask.

Feature Highlights

  • Built-in JWT Authentication.
  • Super Simple Database Management.
  • Syntax Inspired by Python.
  • Built-in CORS Support.
  • Reduces Boilerplate.
  • Compatible with Python*

* = You can import external Python modules and call them from you Ask code.

Easy to Learn

Ask's syntax is heavily inspired by Python, and can almost be considered to be a superset of Python. This means that picking up Ask is super easy if you’re already familiar with Python.

The main idea behind Ask is to simplify common backend actions (e.g. working with databases). Building a full database CRUD REST API with JWT authentication in Ask is very straight forward and simple and requires virtually zero lines of boilerplate code and no setup whatsoever.

Extendable

Ask is a transpiled language (kind of like TypeScript) which means that it compiles the source code to another language that has a similar level of abstraction. In Ask's case, the target language is Python, more specifically a Flask app.

Flask is a very popular and well-established web framework for Python, so there's already a lot of tools, and services for deploying Flask apps.

The transpiled app is completely standalone and doesn't require Ask in any way.

Installation (normal usage)

  • You can install Ask from the PyPI. You can use pip but we recommend that you use pipx.
  • $ pipx install ask-lang.
  • Then run your apps with: $ ask [your file].ask.

Run locally (for development)

  1. Clone this repo: https://github.com/Buscedv/Ask.git.
  2. Install Poetry.
  3. Create a new virtual environment: python3 -m venv venv.
  4. Activate it: source venv/bin/activate.
  5. Install dependencies: poetry install.
  6. (Optional but helpful in some cases) Run Ask in development mode: Docs.

If you want to contribute please read the CONTRIBUTING.md file for code style, standards, etc.

Example (Ask vs Flask)

Here is the same basic app with one GET route written in Ask and in Python with Flask.

Ask

products = [
  {
    name: 'Product 1',
    price: 30.0,
    qty: 300
  },
  {
    name: 'Product 2',
    price: 15.5,
    qty: 20
  }
]

@get('/api/v1/products'):
  respond({products: products})

Flask

This is what the same application would look like in Flask.

from flask import Flask, jsonify

app = Flask(__name__)

products = [
  {
    'name': 'Product 1',
    'price': 30.0,
    'qty': 300
  },
  {
    'name': 'Product 2',
    'price': 15.5,
    'qty': 20
  }
]

@app.route('/api/v1/products', methods=['GET'])
def get_products():
  return jsonify({'products': products})

if __name__ == '__main__':
  app.run()

As you can see Ask hides away all the clutter and boilerplate.

Documentation

You can find the full documentation on docs.ask.edvard.dev.

Contact

Release files for ask_lang 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ask_lang 1.5.0
File Size Uploaded
ask_lang-1.5.0.tar.gz 37.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ask_lang 1.5.0
File Interpreter ABI Platform
ask_lang-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 95.8 kB

Release files / ask_lang-1.5.0.tar.gz

Download URL ask_lang-1.5.0.tar.gz
Size 37.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4216acc5f99d2b73fda72c7c2a75da65ac05e5c4322dffa79fb621d34d890b33
BLAKE2b-256 checksum
How to use checksums
2bcf79d08fcfe582bd658ec69fe4cf4f9133f2f7252ded26a036f23b8e4fecb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.6 Darwin/23.6.0

Release files / ask_lang-1.5.0-py3-none-any.whl

Download URL ask_lang-1.5.0-py3-none-any.whl
Size 58.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f16fa2c7b34241dd673e3857b13cac1d7a83f81901792d88969a155344398e53
BLAKE2b-256 checksum
How to use checksums
60378525eac7f7a29a32e410fa70bbdf0bf677b4416725335751b76cfab91c98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.6 Darwin/23.6.0

Release history Release notifications | RSS feed

This release

1.5.0 This release

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page