# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['lmoe',
 'lmoe.api',
 'lmoe.commands',
 'lmoe.experts',
 'lmoe.framework',
 'lmoe.templates',
 'lmoe.utils']

package_data = \
{'': ['*']}

install_requires = \
['PySocks>=1.7.1,<2.0.0',
 'PyYAML>=6.0.1,<7.0.0',
 'injector>=0.21.0,<0.22.0',
 'ollama>=0.1.6,<0.2.0',
 'pyperclip>=1.8.2,<2.0.0',
 'pytype>=2024.1.24,<2025.0.0',
 'requests>=2.31.0,<3.0.0',
 'urllib3==1.26.15']

entry_points = \
{'console_scripts': ['lmoe = lmoe.main:run',
                     'lmoe_update_docs = lmoe.release:update_readme_version']}

setup_kwargs = {
    'name': 'lmoe',
    'version': '0.3.16',
    'description': "lmoe (Layered Mixture of Experts,'Elmo') is your programmable CLI assistant.",
    'long_description': '# lmoe\n\n<img src="https://rybosome.github.io/lmoe/assets/lmoe-armadillo.png">\n\n## Table of Contents\n\n* [**__Overview__**](#overview)\n* [**__Setup__**](#setup)\n* [**__Basics__**](#basics)\n* [**__Capabilities__**](#capabilities)\n* [**__Documentation__**](#documentation)\n* [**__Status__**](#status)\n* [**__Lmoe Armadillo__**](#lmoe-armadillo)\n\n## Overview\n\nOpen a terminal and talk to `lmoe`(Layered Mixture of Experts, pronounced "Elmo").\n\n`lmoe` is a programmable, multimodal CLI assistant with a natural language interface.\n\n```\n% lmoe who was matisse\n Henri Matisse was a French painter, sculptor, and printmaker, known for his influential role in\n modern art. He was born on December 31, 1869, in Le Cateau-Cambrésis, France, and died on\n November 3, 1954. Matisse is recognized for his use of color and his fluid and expressive\n brushstrokes. His works include iconic paintings such as "The Joy of Life" and "Woman with a Hat."\n```\n\nRunning on [Ollama](https://github.com/ollama/ollama) and various [open-weight models](https://ollama.com/library), `lmoe` is a simple, yet powerful way to\ninteract with highly configurable AI models from the command line.\n\n`lmoe` [classifies](https://github.com/rybosome/lmoe/blob/main/lmoe/templates/classifier.modelfile.txt) your query to one of its various [experts](https://github.com/rybosome/lmoe/tree/main/lmoe/experts), which are [specializations](https://github.com/rybosome/lmoe/tree/main/lmoe/templates) of Ollama models.\n\n![Current architecture of lmoe](https://rybosome.github.io/lmoe/assets/lmoe-architecture-current.png)\n\nLearn more about `lmoe`\'s [architecture](https://rybosome.github.io/lmoe/documentation/architecture.html) and [programming model](https://rybosome.github.io/lmoe/documentation/extending_lmoe.html).\n\n## Setup\n\n### Dependencies\n\n#### Virtual environment\n\nIt is recommended to install `lmoe` in a [virtual environment](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/).\n\nI use [this script](https://github.com/rybosome/lmoe/blob/main/docs/scripts/venv.txt) to make them simpler to manage.\n\n```\n% venv mkdir lmoe\n% venv activate lmoe\n(lmoe) % \n```\n\n#### Ollama\n\nEnsure that an [Ollama](https://github.com/ollama/ollama) server is running.\n\n### Installation & Initialization\n\n```\n% pip install lmoe\n% lmoe --initialize\n```\n\nThis will download any base Ollama models not present on your machine and create `lmoe`-internal models.\n\n`lmoe` is now ready to use!\n\n## Basics\n\n### Piping context\n\n```\n% cat lmoe/main.py | lmoe what does this code do\n This code sets up and runs an instance of `lmoe` (Layered Mixture of Experts), a Python\n application. It imports various modules, including the native experts and plugin experts for\n `lmoe`. The `run()` function is then called to instantiate the app and defer execution to the\n command runner.\n```\n\n```\n% ls -la $HOME | lmoe how big is my zsh history\n The size of your Zsh history file is 16084 bytes.\n```\n\n### Pasting context\n\n```\n% print -x \'hello\'\nprint: positive integer expected after -x: hello\n```\n\nCopy this to the clipboard, then:\n\n```\n% lmoe --paste how do I fix this error\n To use the `-x` option with the `print` command in Bash, you need to provide a positional argument that is a file descriptor. Instead, you provided a string \'hello\'. Here\'s how you can correctly use it:\n\n1. Create or have a file with the name \'hello\' and make sure it exists in your working directory.\n2. Run the following command instead: `print -r -- < hello`. This reads the contents of the file \'hello\' as input for print, which displays its output to stdout.\n```\n\n### Sequencing\n\n`lmoe` can be piped into itself. This allows scriptable composition of primitives into more advanced\nfunctionality.\n\n```\n% lmoe what is the recommended layout for a python project with poetry |\nlmoe "make a project like this for a module called \'alexandria\' with 3 sub modules: \'auth\', \'util\', and \'io\'"\n\n mkdir alexandria/\n touch alexandria/pyproject.toml\n touch alexandria/README.rst\n touch alexandria/requirements.in\n mkdir alexandria/src/\n touch alexandria/src/__init__.py\n mkdir alexandria/src/alexandria/\n touch alexandria/src/alexandria/__init__.py\n mkdir alexandria/src/alexandria/auth/\n touch alexandria/src/alexandria/auth/__init__.py\n touch alexandria/src/alexandria/util/\n touch alexandria/src/alexandria/util/__init__.py\n touch alexandria/src/alexandria/io/\n touch alexandria/src/alexandria/io/__init__.py\n```\n\n## Capabilities\n\n`lmoe` supports a number of specific functions beyond general LLM querying and instruction.\n\nMore coming soon.\n\n### Image Recognition\n\n*Describe the contents of an image*\n\nThis is `lmoe`\'s first attempt to describe its default avatar.\n\n**Note**: currently this is raw, unparsed JSON output. Edited by hand for readability.\n\n```\n% curl -sS \'https://rybosome.github.io/lmoe/assets/lmoe-armadillo.png\' |\nbase64 -i - |\nlmoe what is in this picture\n{\n    "model":"llava",\n    "created_at":"2024-02-08T07:09:28.827507Z",\n    "response":" The image features a stylized, colorful creature that appears to be a combination\n                 of different animals. It has the body of a rat, with a prominent tail and ears,\n                 which is also typical of rats. The head resembles a cat, with pointy ears and what\n                 seems to be cat whiskers. The creature has eyes like those of a cat, and it\'s\n                 wearing a helmet or headgear that looks like an advanced robot with digital\n                 readouts on the forehead, giving it a cyberpunk aesthetic. The background is\n                 colorful with a rainbow pattern, enhancing the fantastical nature of the creature.\n                 This image is likely a piece of digital art designed to showcase imaginative and\n                 creative concepts. ",\n    "done":true,\n    "context":[733,16289,28793,767,349,297,456,5754,733,28748,16289,28793,415,3469,4190,264,341,2951,1332,28725,3181,1007,15287,369,8045,298,347,264,9470,302,1581,8222,28723,661,659,272,2187,302,264,6172,28725,395,264,15574,8675,304,12446,28725,690,349,835,10842,302,408,1449,28723,415,1335,312,5650,867,264,5255,28725,395,1305,28724,12446,304,767,3969,298,347,5255,26898,404,28723,415,15287,659,2282,737,1395,302,264,5255,28725,304,378,28742,28713,8192,264,26371,442,1335,490,283,369,4674,737,396,10023,18401,395,7153,1220,8508,356,272,18522,28725,5239,378,264,23449,28720,2060,27974,28723,415,5414,349,3181,1007,395,264,7296,11809,5340,28725,8050,7161,272,7399,529,745,4735,302,272,15287,28723,851,3469,349,3917,264,5511,302,7153,1524,5682,298,1347,2210,26671,1197,304,9811,16582,28723,28705],"total_duration":7148311208,"load_duration":2687336958,\n    "prompt_eval_count":1,\n    "prompt_eval_duration":1313448000,\n    "eval_count":151,\n    "eval_duration":3111945000}\n```\n\n### Project Generation\n\n*Generate a new programming project from an ascii or textual description.*\n\n```\n% lmoe what is the recommended layout for a python project with poetry\n With Poetry, a Python packaging and project management tool, a recommended layout for a Python\n project could include the following structure:\n\n myproject/\n ├── pyproject.toml\n ├── README.rst\n ├── requirements.in\n └── src/\n     ├── __init__.py\n     └── mypackage/\n         ├── __init__.py\n         ├── module1.py\n         └── module2.py\n\nIn this layout, the `myproject/` directory contains the root-level project files. The\n`pyproject.toml` file is used for managing dependencies and building your Python package. The\n`README.rst` file is optional, but common, to include documentation about your project. The\n`requirements.in` file lists the external packages required by your project.\n\nThe `src/` directory contains your source code for the project. In this example, there\'s a package\nnamed `mypackage`, which includes an `__init__.py` file and two modules: `module1.py` and\n`module2.py`.\n\nThis is just one suggested layout using Poetry. Depending on your specific project requirements and\npreferences, the layout might vary. Always refer to the [Poetry documentation](https://python-poetry.org/)\nfor more detailed information.\n```\n\nCopy this to the clipboard, and then:\n\n```\n% lmoe --paste "make a project like this for a module called \'alexandria\' with 3 sub modules: \'auth\', \'util\', and \'io\'"\nmkdir alexandria/\ntouch alexandria/pyproject.toml\ntouch alexandria/README.rst\ntouch alexandria/requirements.in\nmkdir alexandria/src/\ntouch alexandria/src/__init__.py\nmkdir alexandria/src/alexandria/\ntouch alexandria/src/alexandria/__init__.py\nmkdir alexandria/src/alexandria/auth/\ntouch alexandria/src/alexandria/auth/__init__.py\nmkdir alexandria/src/alexandria/util/\ntouch alexandria/src/alexandria/util/__init__.py\nmkdir alexandria/src/alexandria/io/\ntouch alexandria/src/alexandria/io/__init__.py\n```\n\n...for a list of runnable shell commands.\n\nComing soon: `lmoe` will offer to run them for you, open them in an editor, or stop.\n\n## Documentation\n\n* [Architecture](https://rybosome.github.io/lmoe/documentation/architecture.html)\n* [Configuration](https://rybosome.github.io/lmoe/documentation/configuring_lmoe.html)\n* [Programming model](https://rybosome.github.io/lmoe/documentation/extending_lmoe.html)\n* [Roadmap](https://rybosome.github.io/lmoe/documentation/roadmap.html)\n* [Utilities](https://rybosome.github.io/lmoe/documentation/utilities.html)\n\n## Status\n\n**Version 0.3.16**\n\nSupports the following core experts:\n\n * general\n * image recognition\n * project initialization\n * code\n\nTuning of each is needed.\n\nThis is currently a very basic implementation, but may be useful to others.\n\nThe extension model is working, but is not guaranteed to be a stable API.\n\n\n## Lmoe Armadillo\n\nThe avatar of `lmoe` is Lmoe Armadillo, a cybernetic [Cingulata](https://en.wikipedia.org/wiki/Cingulata)\nwho is ready to dig soil and execute toil.\n\nLmoe Armadillo is a curious critter who assumes many different manifestations.\n\n![Lmoe\'s default avatar against a lit background](https://rybosome.github.io/lmoe/assets/lmoe-armadillo-alt4-380px.jpg)\n![An alternative Lmoe with a cute face](https://rybosome.github.io/lmoe/assets/lmoe-armadillo-alt1-380px.jpg)\n![A blue-nosed Lmoe Armadillo](https://rybosome.github.io/lmoe/assets/lmoe-armadillo-alt3-380px.jpg)\n![A realistic Lmoe Armadillo against a surrealist backdrop](https://rybosome.github.io/lmoe/assets/lmoe-armadillo-alt2-380px.jpg)\n',
    'author': 'Ryan Eiger',
    'author_email': 'ryebosome@gmail.com',
    'maintainer': 'None',
    'maintainer_email': 'None',
    'url': 'None',
    'packages': packages,
    'package_data': package_data,
    'install_requires': install_requires,
    'entry_points': entry_points,
    'python_requires': '>=3.9,<4.0',
}


setup(**setup_kwargs)
