YAML-formatted plain-text file based models for Flask backed by Flask-SQLAlchemy

Overview

Flask-FileAlchemy

Flask-FileAlchemy is a Flask extension that lets you use Markdown or YAML formatted plain-text files as the main data store for your apps.

Installation

$ pip install flask-filealchemy

Background

The constraints on which data-store to use for applications that only have to run locally are quite relaxed as compared to the ones that have to serve production traffic. For such applications, it's normally OK to sacrifice on performance for ease of use.

One very strong use case here is generating static sites. While you can use Frozen-Flask to "freeze" an entire Flask application to a set of HTML files, your application still needs to read data from somewhere. This means you'll need to set up a data store, which (locally) tends to be file based SQLite. While that does the job extremely well, this also means executing SQL statements to input data.

Depending on how many data models you have and what types they contain, this can quickly get out of hand (imagine having to write an INSERT statement for a blog post).

In addition, you can't version control your data. Well, technically you can, but the diffs won't make any sense to a human.

Flask-FileAlchemy lets you use an alternative data store - plain text files.

Plain text files have the advantage of being much easier to handle for a human. Plus, you can version control them so your application data and code are both checked in together and share history.

Flask-FileAlchemy lets you enter your data in Markdown or YAML formatted plain text files and loads them according to the SQLAlchemy models you've defined using Flask-SQLAlchemy This data is then put into whatever data store you're using (in-memory SQLite works best) and is then ready for your app to query however it pleases.

This lets you retain the comfort of dynamic sites without compromising on the simplicity of static sites.

Usage

Define data models

Define your data models using the standard (Flask-)SQLAlchemy API. As an example, a BlogPost model can defined as follows.

app = Flask(__name__)

# configure Flask-SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'

db = SQLAlchemy(app)

class BlogPost(db.Model):
   __tablename__ = 'blog_posts'

   slug = Column(String(255), primary_key=True)
   title = Column(String(255), nullable=False)
   content = Column(Text, nullable=False)

Add some data

Next, create a data/ directory somewhere on your disk (to keep things simple, it's recommended to have this directory in the application root). For each model you've defined, create a directory under this data/ directory with the same name as the __tablename__ attribute.

We currently support three different ways to define data.

1. Multiple YAML files

The first way is to have multiple YAML files inside the data/<__tablename__>/ directory, each file corresponding to one record.

In case of the "blog" example, we can define a new BlogPost record by creating the file data/blog_posts/first-post-ever.yml with the following content.

slug: first-post-ever
title: First post ever!
content: |
  This blog post talks about how it's the first post ever!

Adding more such files in the same directory would result in more records.

2. Single YAML file

For "smaller" models which don't have more than 2-3 fields, Flask-FileAlchemy supports reading from an _all.yml file. In such a case, instead of adding one file for every row, simply add all the rows in the _all.yml file inside the table directory.

For the "blog" example, this would look like the following.

- slug: first-post-ever
  title: First post ever!
  content: This blog post talks about how it's the first post ever!

- slug: second-post-ever
  title: second post ever!
  content: This blog post talks about how it's the second post ever!

3. Markdown/Frontmatter

It's also possible to load data from Jekyll-style Markdown files containing Frontmatter metadata.

In case of the blog example, it's possible to create a new BlogPost record by defining a data/blog_posts/first-post-ever.md file with the following content.

---
slug: first-post-ever
title: First post ever!
---

This blog post talks about how it's the first post ever!

Please note that when defining data using markdown, the name of the column associated with the main markdown body needs to be content.

4. Configure and load

Finally, configure Flask-FileAlchemy with your setup and ask it to load all your data.

# configure Flask-FileAlchemy
app.config['FILEALCHEMY_DATA_DIR'] = os.path.join(
   os.path.dirname(os.path.realpath(__file__)), 'data'
)
app.config['FILEALCHEMY_MODELS'] = (BlogPost,)

# load tables
FileAlchemy(app, db).load_tables()

Flask-FileAlchemy then reads your data from the given directory, and stores them in the data store of your choice that you configured Flask-FileAlchemy with (the preference being sqlite:///:memory:).

Please note that it's not possible to write to this database using db.session. Well, technically it's allowed, but the changes your app makes will only be reflected in the in-memory data store but won't be persisted to disk.

Contributing

Contributions are most welcome!

Please make sure you have Python 3.5+ and Poetry installed.

  1. Git clone the repository - git clone https://github.com/siddhantgoel/flask-filealchemy.

  2. Install the packages required for development - poetry install.

  3. That's basically it. You should now be able to run the test suite - poetry run py.test.

Comments
  • chore(deps-dev): bump mypy from 0.982 to 0.990

    chore(deps-dev): bump mypy from 0.982 to 0.990

    Bumps mypy from 0.982 to 0.990.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • chore(deps): bump flask-sqlalchemy from 2.5.1 to 3.0.2

    chore(deps): bump flask-sqlalchemy from 2.5.1 to 3.0.2

    Bumps flask-sqlalchemy from 2.5.1 to 3.0.2.

    Release notes

    Sourced from flask-sqlalchemy's releases.

    3.0.2

    This is a fix release for the 3.0.x feature release. It updates compatibility with SQLAlchemy 2.0 beta 1.

    3.0.1

    This is a fix release for the 3.0.x feature release.

    3.0.0

    This is a feature release, which includes new features and removes previously deprecated code. The 3.0.x branch is now the supported bug fix branch, the 2.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    3.0.0a2

    This is a prerelease to preview the changes in 3.0, the next feature release. Prereleases are an opportunity to test and update your projects early before the final release.

    pip install -U --pre Flask-SQLAlchemy
    

    There were significant changes in pallets-eco/flask-sqlalchemy#1087, see the changelog for a full list. Many of those changes will raise deprecation warnings, but it was not feasible to implement warnings for some things.

    3.0.0a1

    This is a prerelease to preview the changes in 3.0, the next feature release. Prereleases are an opportunity to test and update your projects early before the final release.

    pip install -U --pre Flask-SQLAlchemy
    

    There were significant changes in pallets-eco/flask-sqlalchemy#1087, see the changelog for a full list. Many of those changes will raise deprecation warnings, but it was not feasible to implement warnings for some things.

    Changelog

    Sourced from flask-sqlalchemy's changelog.

    Version 3.0.2

    Released 2022-10-14

    • Update compatibility with SQLAlchemy 2. :issue:1122

    Version 3.0.1

    Released 2022-10-11

    • Export typing information instead of using external typeshed definitions. :issue:1112
    • If default engine options are set, but SQLALCHEMY_DATABASE_URI is not set, an invalid default bind will not be configured. :issue:1117

    Version 3.0.0

    Released 2022-10-04

    • Drop support for Python 2, 3.4, 3.5, and 3.6.
    • Bump minimum version of Flask to 2.2.
    • Bump minimum version of SQLAlchemy to 1.4.18.
    • Remove previously deprecated code.
    • The session is scoped to the current app context instead of the thread. This requires that an app context is active. This ensures that the session is cleaned up after every request.
    • An active Flask application context is always required to access session and engine, regardless of if an application was passed to the constructor. :issue:508, 944
    • Different bind keys use different SQLAlchemy MetaData registries, allowing tables in different databases to have the same name. Bind keys are stored and looked up on the resulting metadata rather than the model or table.
    • SQLALCHEMY_DATABASE_URI does not default to sqlite:///:memory:. An error is raised if neither it nor SQLALCHEMY_BINDS define any engines. :pr:731
    • Configuring SQLite with a relative path is relative to app.instance_path instead of app.root_path. The instance folder is created if necessary. :issue:462
    • Added get_or_404, first_or_404, one_or_404, and paginate methods to the extension object. These use SQLAlchemy's preferred session.execute(select()) pattern instead of the legacy query interface. :issue:1088
    • Setup methods that create the engines and session are renamed with a leading underscore. They are considered internal interfaces which may change at any time.
    • All parameters to SQLAlchemy except app are keyword-only.
    • Renamed the bind parameter to bind_key and removed the app parameter from various SQLAlchemy methods.
    • The extension object uses __getattr__ to alias names from the SQLAlchemy

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • chore(deps-dev): bump pytest from 7.1.2 to 7.1.3

    chore(deps-dev): bump pytest from 7.1.2 to 7.1.3

    Bumps pytest from 7.1.2 to 7.1.3.

    Release notes

    Sourced from pytest's releases.

    7.1.3

    pytest 7.1.3 (2022-08-31)

    Bug Fixes

    • #10060: When running with --pdb, TestCase.tearDown is no longer called for tests when the class has been skipped via unittest.skip or pytest.mark.skip.
    • #10190: Invalid XML characters in setup or teardown error messages are now properly escaped for JUnit XML reports.
    • #10230: Ignore .py files created by pyproject.toml-based editable builds introduced in pip 21.3.
    • #3396: Doctests now respect the --import-mode flag.
    • #9514: Type-annotate FixtureRequest.param as Any as a stop gap measure until 8073{.interpreted-text role="issue"} is fixed.
    • #9791: Fixed a path handling code in rewrite.py that seems to work fine, but was incorrect and fails in some systems.
    • #9917: Fixed string representation for pytest.approx{.interpreted-text role="func"} when used to compare tuples.

    Improved Documentation

    • #9937: Explicit note that tmpdir{.interpreted-text role="fixture"} fixture is discouraged in favour of tmp_path{.interpreted-text role="fixture"}.

    Trivial/Internal Changes

    Commits
    • 4645bcd Remove incorrect output in how-to/fixtures.rst
    • fadfb4f Prepare release version 7.1.3
    • ab96ea8 Merge pull request #10258 from pytest-dev/backport-10252-to-7.1.x
    • fc0e024 [7.1.x] Fix regendoc
    • 8f5088f Merge pull request #10249 from pytest-dev/backport-10231-to-7.1.x
    • aae93d6 Ignore type-errors related to attr.asdict
    • 71b79fc [7.1.x] Ignore editable installation modules
    • 89f7518 Merge pull request #10222 from pytest-dev/backport-10171-to-7.1.x
    • 88fc45b [7.1.x] Update fixtures.rst w/ finalizer order
    • d0b53d6 Merge pull request #10221 from pytest-dev/backport-10217-to-7.1.x
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • chore(deps-dev): bump black from 22.6.0 to 22.10.0

    chore(deps-dev): bump black from 22.6.0 to 22.10.0

    Bumps black from 22.6.0 to 22.10.0.

    Release notes

    Sourced from black's releases.

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off (#3281)

    Preview style

    • Fix a crash when formatting some dicts with parenthesis-wrapped long string keys (#3262)

    Configuration

    • .ipynb_checkpoints directories are now excluded by default (#3293)
    • Add --skip-source-first-line / -x option to ignore the first line of source code while formatting (#3299)

    Packaging

    • Executables made with PyInstaller will no longer crash when formatting several files at once on macOS. Native x86-64 executables for macOS are available once again. (#3275)
    • Hatchling is now used as the build backend. This will not have any effect for users who install Black with its wheels from PyPI. (#3233)
    • Faster compiled wheels are now available for CPython 3.11 (#3276)

    Blackd

    • Windows style (CRLF) newlines will be preserved (#3257).

    Integrations

    • Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246)
    • Update GitHub Action to support formatting of Jupyter Notebook files via a jupyter option (#3282)
    • Update GitHub Action to support use of version specifiers (e.g. <23) for Black version (#3265)

    22.8.0

    Highlights

    • Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234)
    • This is the last release that supports running Black on Python 3.6 (formatting 3.6 code will continue to be supported until further notice)
    • Reword the stability policy to say that we may, in rare cases, make changes that affect code that was not previously formatted by Black (#3155)

    ... (truncated)

    Changelog

    Sourced from black's changelog.

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off (#3281)

    Preview style

    • Fix a crash when formatting some dicts with parenthesis-wrapped long string keys (#3262)

    Configuration

    • .ipynb_checkpoints directories are now excluded by default (#3293)
    • Add --skip-source-first-line / -x option to ignore the first line of source code while formatting (#3299)

    Packaging

    • Executables made with PyInstaller will no longer crash when formatting several files at once on macOS. Native x86-64 executables for macOS are available once again. (#3275)
    • Hatchling is now used as the build backend. This will not have any effect for users who install Black with its wheels from PyPI. (#3233)
    • Faster compiled wheels are now available for CPython 3.11 (#3276)

    Blackd

    • Windows style (CRLF) newlines will be preserved (#3257).

    Integrations

    • Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246)
    • Update GitHub Action to support formatting of Jupyter Notebook files via a jupyter option (#3282)
    • Update GitHub Action to support use of version specifiers (e.g. <23) for Black version (#3265)

    22.8.0

    Highlights

    • Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • chore(deps-dev): bump flake8 from 4.0.1 to 5.0.4

    chore(deps-dev): bump flake8 from 4.0.1 to 5.0.4

    Bumps flake8 from 4.0.1 to 5.0.4.

    Commits
    • 6027577 Release 5.0.4
    • 213e006 Merge pull request #1653 from asottile/lower-bound-importlib-metadata
    • e94ee2b require sufficiently new importlib-metadata
    • 318a86a Merge pull request #1646 from televi/main
    • 7b8b374 Clarify entry point naming
    • 7160561 Merge pull request #1649 from PyCQA/pre-commit-ci-update-config
    • 84d56a8 [pre-commit.ci] pre-commit autoupdate
    • ff6569b Release 5.0.3
    • e76b59a Merge pull request #1648 from PyCQA/invalid-syntax-partial-parse
    • 25e8ff1 ignore config files that partially parse as flake8 configs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump py from 1.9.0 to 1.10.0

    build(deps): bump py from 1.9.0 to 1.10.0

    Bumps py from 1.9.0 to 1.10.0.

    Changelog

    Sourced from py's changelog.

    1.10.0 (2020-12-12)

    • Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651)
    • Update vendored apipkg: 1.4 => 1.5
    • Update vendored iniconfig: 1.0.0 => 1.1.1
    Commits
    • e5ff378 Update CHANGELOG for 1.10.0
    • 94cf44f Update vendored libs
    • 5e8ded5 testing: comment out an assert which fails on Python 3.9 for now
    • afdffcc Rename HOWTORELEASE.rst to RELEASING.rst
    • 2de53a6 Merge pull request #266 from nicoddemus/gh-actions
    • fa1b32e Merge pull request #264 from hugovk/patch-2
    • 887d6b8 Skip test_samefile_symlink on pypy3 on Windows
    • e94e670 Fix test_comments() in test_source
    • fef9a32 Adapt test
    • 4a694b0 Add GitHub Actions badge to README
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump jinja2 from 2.11.2 to 2.11.3

    build(deps): bump jinja2 from 2.11.2 to 2.11.3

    Bumps jinja2 from 2.11.2 to 2.11.3.

    Release notes

    Sourced from jinja2's releases.

    2.11.3

    This contains a fix for a speed issue with the urlize filter. urlize is likely to be called on untrusted user input. For certain inputs some of the regular expressions used to parse the text could take a very long time due to backtracking. As part of the fix, the email matching became slightly stricter. The various speedups apply to urlize in general, not just the specific input cases.

    Changelog

    Sourced from jinja2's changelog.

    Version 2.11.3

    Released 2021-01-31

    • Improve the speed of the urlize filter by reducing regex backtracking. Email matching requires a word character at the start of the domain part, and only word characters in the TLD. :pr:1343
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Update isort to 4.3.14

    Update isort to 4.3.14

    This PR updates isort from 4.3.9 to 4.3.14.

    Changelog

    4.3.13

    - Fixed the inability to accurately determine import section when a mix of conda and virtual environments are used.
    - Fixed some output being printed even when --quiet mode is enabled.
    - Fixed issue 890 interoperability with PyCharm by allowing case sensitive non type grouped sorting.
    - Fixed issue 889 under some circumstances isort will incorrectly add a new line at the beginning of a file.
    - Fixed issue 885 many files not being skipped according to set skip settings.
    - Fixed issue 842 streaming encoding improvements.
    

    4.3.12

    - Fix error caused when virtual environment not detected
    

    4.3.11

    - Fixed issue 876: confused by symlinks pointing to virtualenv gives FIRSTPARTY not THIRDPARTY
    - Fixed issue 873: current version skips every file on travis
    - Additional caching to reduce performance regression introduced in 4.3.5
    

    4.3.10

    - Fixed Windows incompatibilities (Issue 835)
    - Fixed relative import sorting bug (Issue 417)
    - Fixed &quot;no_lines_before&quot; to also be respected from previous empty sections.
    - Fixed slow-down introduced by finders mechanism by adding a LRU cache (issue 848)
    - Fixed issue 842 default encoding not-set in Python2
    - Restored Windows automated testing
    - Added Mac automated testing
    
    Links
    • PyPI: https://pypi.org/project/isort
    • Changelog: https://pyup.io/changelogs/isort/
    • Repo: https://github.com/timothycrosley/isort
    opened by pyup-bot 1
  • Update isort to 4.3.13

    Update isort to 4.3.13

    This PR updates isort from 4.3.9 to 4.3.13.

    Changelog

    4.3.13

    - Fixed the inability to accurately determine import section when a mix of conda and virtual environments are used.
    - Fixed some output being printed even when --quiet mode is enabled.
    - Fixed issue 890 interoperability with PyCharm by allowing case sensitive non type grouped sorting.
    - Fixed issue 889 under some circumstances isort will incorrectly add a new line at the beginning of a file.
    - Fixed issue 885 many files not being skipped according to set skip settings.
    - Fixed issue 842 streaming encoding improvements.
    

    4.3.12

    - Fix error caused when virtual environment not detected
    

    4.3.11

    - Fixed issue 876: confused by symlinks pointing to virtualenv gives FIRSTPARTY not THIRDPARTY
    - Fixed issue 873: current version skips every file on travis
    - Additional caching to reduce performance regression introduced in 4.3.5
    

    4.3.10

    - Fixed Windows incompatibilities (Issue 835)
    - Fixed relative import sorting bug (Issue 417)
    - Fixed &quot;no_lines_before&quot; to also be respected from previous empty sections.
    - Fixed slow-down introduced by finders mechanism by adding a LRU cache (issue 848)
    - Fixed issue 842 default encoding not-set in Python2
    - Restored Windows automated testing
    - Added Mac automated testing
    
    Links
    • PyPI: https://pypi.org/project/isort
    • Changelog: https://pyup.io/changelogs/isort/
    • Repo: https://github.com/timothycrosley/isort
    opened by pyup-bot 1
  • Update isort to 4.3.12

    Update isort to 4.3.12

    This PR updates isort from 4.3.9 to 4.3.12.

    Changelog

    4.3.11

    - Fixed issue 876: confused by symlinks pointing to virtualenv gives FIRSTPARTY not THIRDPARTY
    - Fixed issue 873: current version skips every file on travis
    - Additional caching to reduce performance regression introduced in 4.3.5
    

    4.3.10

    - Fixed Windows incompatibilities (Issue 835)
    - Fixed relative import sorting bug (Issue 417)
    - Fixed &quot;no_lines_before&quot; to also be respected from previous empty sections.
    - Fixed slow-down introduced by finders mechanism by adding a LRU cache (issue 848)
    - Fixed issue 842 default encoding not-set in Python2
    - Restored Windows automated testing
    - Added Mac automated testing
    
    Links
    • PyPI: https://pypi.org/project/isort
    • Changelog: https://pyup.io/changelogs/isort/
    • Repo: https://github.com/timothycrosley/isort
    opened by pyup-bot 1
  • Update isort to 4.3.11

    Update isort to 4.3.11

    This PR updates isort from 4.3.9 to 4.3.11.

    Changelog

    4.3.11

    - Fixed issue 876: confused by symlinks pointing to virtualenv gives FIRSTPARTY not THIRDPARTY
    - Fixed issue 873: current version skips every file on travis
    - Additional caching to reduce performance regression introduced in 4.3.5
    

    4.3.10

    - Fixed Windows incompatibilities (Issue 835)
    - Fixed relative import sorting bug (Issue 417)
    - Fixed &quot;no_lines_before&quot; to also be respected from previous empty sections.
    - Fixed slow-down introduced by finders mechanism by adding a LRU cache (issue 848)
    - Fixed issue 842 default encoding not-set in Python2
    - Restored Windows automated testing
    - Added Mac automated testing
    
    Links
    • PyPI: https://pypi.org/project/isort
    • Changelog: https://pyup.io/changelogs/isort/
    • Repo: https://github.com/timothycrosley/isort
    opened by pyup-bot 1
Owner
Siddhant Goel
Software Developer 👨🏻‍💻
Siddhant Goel
Adds SQLAlchemy support to Flask

Flask-SQLAlchemy Flask-SQLAlchemy is an extension for Flask that adds support for SQLAlchemy to your application. It aims to simplify using SQLAlchemy

The Pallets Projects 3.9k Dec 29, 2022
SqlAlchemy Flask-Restful Swagger Json:API OpenAPI

SAFRS: Python OpenAPI & JSON:API Framework Overview Installation JSON:API Interface Resource Objects Relationships Methods Custom Methods Class Method

Thomas Pollet 365 Jan 6, 2023
A Flask app template with integrated SQLAlchemy, authentication, and Bootstrap frontend

Flask-Bootstrap Flask-Bootstrap is an Flask app template for users to clone and customize as desired, as opposed to a Flask extension that you can ins

Eric S. Bullington 204 Dec 26, 2022
Mixer -- Is a fixtures replacement. Supported Django, Flask, SqlAlchemy and custom python objects.

The Mixer is a helper to generate instances of Django or SQLAlchemy models. It's useful for testing and fixture replacement. Fast and convenient test-

Kirill Klenov 870 Jan 8, 2023
Mixer -- Is a fixtures replacement. Supported Django, Flask, SqlAlchemy and custom python objects.

The Mixer is a helper to generate instances of Django or SQLAlchemy models. It's useful for testing and fixture replacement. Fast and convenient test-

Kirill Klenov 742 Feb 9, 2021
REST API with Flask and SQLAlchemy. I would rather not use it anymore.

Flask REST API Python 3.9.7 The Flask experience, without data persistence :D First, to install all dependencies: python -m pip install -r requirement

Luis Quiñones Requelme 1 Dec 15, 2021
Forum written for learning purposes in flask and sqlalchemy

Flask-forum forum written for learning purposes using SQLalchemy and flask How to install install requirements pip install sqlalchemy flask clone repo

Kamil 0 May 23, 2022
flask-apispec MIT flask-apispec (🥉24 · ⭐ 520) - Build and document REST APIs with Flask and apispec. MIT

flask-apispec flask-apispec is a lightweight tool for building REST APIs in Flask. flask-apispec uses webargs for request parsing, marshmallow for res

Joshua Carp 617 Dec 30, 2022
Lightweight library for providing filtering mechanism for your APIs using SQLAlchemy

sqlalchemy-filters-plus is a light-weight extendable library for filtering queries with sqlalchemy. Install pip install sqlalchemy-fitlers-plus Usage

Karami El Mehdi 38 Oct 5, 2022
A simple demo of using aiogram + async sqlalchemy 1.4+

aiogram-and-sqlalchemy-demo A simple demo of using aiogram + async sqlalchemy 1.4+ Used tech: aiogram SQLAlchemy 1.4+ PostgreSQL as database asyncpg a

Aleksandr 68 Dec 31, 2022
Easy file uploads for Flask.

Library that works with Flask & SqlAlchemy to store files on your server & in your database Read the docs: Documentation Installation Please install t

Joe Gasewicz 145 Jan 6, 2023
Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application.

Flask-Bcrypt Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application. Due to the recent increased prevelance of

Max Countryman 310 Dec 14, 2022
Flask-Rebar combines flask, marshmallow, and swagger for robust REST services.

Flask-Rebar Flask-Rebar combines flask, marshmallow, and swagger for robust REST services. Features Request and Response Validation - Flask-Rebar reli

PlanGrid 223 Dec 19, 2022
Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application.

Flask-Bcrypt Flask-Bcrypt is a Flask extension that provides bcrypt hashing utilities for your application. Due to the recent increased prevelance of

Max Countryman 282 Feb 11, 2021
Flask-Starter is a boilerplate starter template designed to help you quickstart your Flask web application development.

Flask-Starter Flask-Starter is a boilerplate starter template designed to help you quickstart your Flask web application development. It has all the r

Kundan Singh 259 Dec 26, 2022
Brandnew-flask is a CLI tool used to generate a powerful and mordern flask-app that supports the production environment.

Brandnew-flask is still in the initial stage and needs to be updated and improved continuously. Everyone is welcome to maintain and improve this CLI.

brandonye 4 Jul 17, 2022
Flask Project Template A full feature Flask project template.

Flask Project Template A full feature Flask project template. See also Python-Project-Template for a lean, low dependency Python app. HOW TO USE THIS

Bruno Rocha 96 Dec 23, 2022
A Fast API style support for Flask. Gives you MyPy types with the flexibility of flask

Flask-Fastx Flask-Fastx is a Fast API style support for Flask. It Gives you MyPy types with the flexibility of flask. Compatibility Flask-Fastx requir

Tactful.ai 18 Nov 26, 2022
Flask-app scaffold, generate flask restful backend

Flask-app scaffold, generate flask restful backend

jacksmile 1 Nov 24, 2021