
.. image:: https://readthedocs.org/projects/afwf/badge/?version=latest
    :target: https://afwf.readthedocs.io/index.html
    :alt: Documentation Status

.. image:: https://github.com/MacHu-GWU/afwf-project/workflows/CI/badge.svg
    :target: https://github.com/MacHu-GWU/afwf-project/actions?query=workflow:CI

.. image:: https://codecov.io/gh/MacHu-GWU/afwf-project/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/MacHu-GWU/afwf-project

.. image:: https://img.shields.io/pypi/v/afwf.svg
    :target: https://pypi.python.org/pypi/afwf

.. image:: https://img.shields.io/pypi/l/afwf.svg
    :target: https://pypi.python.org/pypi/afwf

.. image:: https://img.shields.io/pypi/pyversions/afwf.svg
    :target: https://pypi.python.org/pypi/afwf

.. image:: https://img.shields.io/badge/Release_History!--None.svg?style=social
    :target: https://github.com/MacHu-GWU/afwf-project/blob/main/release-history.rst

.. image:: https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
    :target: https://github.com/MacHu-GWU/afwf-project

------

.. image:: https://img.shields.io/badge/Link-Document-blue.svg
    :target: https://afwf.readthedocs.io/index.html

.. image:: https://img.shields.io/badge/Link-API-blue.svg
    :target: https://afwf.readthedocs.io/py-modindex.html

.. image:: https://img.shields.io/badge/Link-Source_Code-blue.svg
    :target: https://afwf.readthedocs.io/py-modindex.html

.. image:: https://img.shields.io/badge/Link-Install-blue.svg
    :target: `install`_

.. image:: https://img.shields.io/badge/Link-GitHub-blue.svg
    :target: https://github.com/MacHu-GWU/afwf-project

.. image:: https://img.shields.io/badge/Link-Submit_Issue-blue.svg
    :target: https://github.com/MacHu-GWU/afwf-project/issues

.. image:: https://img.shields.io/badge/Link-Request_Feature-blue.svg
    :target: https://github.com/MacHu-GWU/afwf-project/issues

.. image:: https://img.shields.io/badge/Link-Download-blue.svg
    :target: https://pypi.org/pypi/afwf#files


Welcome to ``afwf`` Documentation
==============================================================================
A powerful framework enables fast and elegant development of Alfred Workflows in Python.

📔 See `Full Documentation HERE <https://afwf.readthedocs.io/index.html>`_.


Summary
------------------------------------------------------------------------------
`Alfred 官方的 Python 包 <https://www.deanishe.net/alfred-workflow/>`_ 已经 5 年没有更新了, 而且只支持 Python2.7, 不支持 Python3. 因为 2.7 已经在 2020 年 1 月 1 日停止更新, 而且 MacOS 2021 年起操作系统内就不带 Python2.7 了, 所以这导致以前使用了官方包的 Workflow 对新 Mac 不再兼容. 并且由于兼容性和历史包袱的原因, 官方的 Python 包内置了太多本应由第三方库提供的功能, 例如 HTTP request, 缓存 等等, 而为了兼容性只能在垃圾代码上堆叠垃圾代码. 于是我就萌生了自己造一个极简的轮子的想法.

这个项目的目的是提供了用 Python 编写 Alfred Workflow 中需要用到的 Script Filter 的数据模型, 以及一套基于超大型内部企业项目 (我是 AWS 内部官方的 AWS Alfred Workflow 的作者) 经验总结出的一套开发 Python Alfred Workflow 的框架, 包含了开发中的最佳实践, 解决了 Workflow 中的控件太多, 测试不易等问题.

另外, 这个项目提供了互联网领域常用的图标, 你可以 `在这里预览 <https://github.com/MacHu-GWU/afwf-project/blob/main/preview-icons.rst>`_.


Related Projects
------------------------------------------------------------------------------
- `cookiecutter-afwf <https://github.com/MacHu-GWU/cookiecutter-afwf>`_: 一个 Python Alfred Workflow 的项目模板. 我的所有的 Alfred Workflow 的项目都是基于这个模板, 自动生成所需要的所有代码的. 使得我可以专注于项目的业务逻辑, 而不是运维.
- `afwf_example-project <https://github.com/MacHu-GWU/afwf_example-project>`_: 一个使用 ``cookiecutter-afwf`` 生成的示例项目. 可以用来学习如何使用 ``cookiecutter-afwf`` 模版来快速开发 Alfred Workflow.


.. _install:

Install
------------------------------------------------------------------------------
``afwf`` is released on PyPI, so all you need is:

.. code-block:: console

    $ pip install afwf

To upgrade to latest version:

.. code-block:: console

    $ pip install --upgrade afwf
