abstractframework 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,38 @@
1
+ # Changelog
2
+
3
+ All notable changes to AbstractFramework will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2025-10-18
11
+
12
+ ### Added
13
+ - Initial placeholder release for AbstractFramework
14
+ - Comprehensive README.md with project vision and component descriptions
15
+ - Package structure with `__init__.py` containing:
16
+ - Component availability detection
17
+ - Placeholder functions for future unified API
18
+ - Version information utilities
19
+ - Status reporting functionality
20
+ - PyPI publishing configuration in `pyproject.toml`
21
+ - MIT License matching AbstractCore
22
+ - Standard Python `.gitignore`
23
+ - Project documentation structure
24
+
25
+ ### Components Status
26
+ - ✅ **AbstractCore**: Available (v2.4.1) - Unified LLM provider interface
27
+ - 🚧 **AbstractMemory**: In development - Advanced memory systems
28
+ - 🚧 **AbstractAgent**: Planned - Intelligent agent framework
29
+ - 🚧 **AbstractSwarm**: Planned - Multi-agent coordination
30
+
31
+ ### Notes
32
+ - This is a placeholder release to reserve the PyPI name "abstractframework"
33
+ - Currently only provides project structure and documentation
34
+ - AbstractCore is fully functional and can be installed separately
35
+ - Future releases will add actual functionality as components become available
36
+
37
+ [Unreleased]: https://github.com/lpalbou/AbstractFramework/compare/v0.1.0...HEAD
38
+ [0.1.0]: https://github.com/lpalbou/AbstractFramework/releases/tag/v0.1.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Laurent-Philippe Albou
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ include README.md
2
+ include LICENSE
3
+ include CHANGELOG.md
4
+ include pyproject.toml
5
+ recursive-exclude * __pycache__
6
+ recursive-exclude * *.py[co]
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: abstractframework
3
+ Version: 0.1.0
4
+ Summary: A unified ecosystem for AI-powered applications and intelligent systems
5
+ Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
6
+ Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
7
+ License: MIT License
8
+
9
+ Copyright (c) 2025 Laurent-Philippe Albou
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ Project-URL: Homepage, https://github.com/lpalbou/AbstractFramework
30
+ Project-URL: Documentation, https://github.com/lpalbou/AbstractFramework
31
+ Project-URL: Repository, https://github.com/lpalbou/AbstractFramework
32
+ Project-URL: Bug Tracker, https://github.com/lpalbou/AbstractFramework/issues
33
+ Project-URL: Changelog, https://github.com/lpalbou/AbstractFramework/blob/main/CHANGELOG.md
34
+ Project-URL: AbstractCore, https://github.com/lpalbou/AbstractCore
35
+ Keywords: ai,llm,agents,memory,swarm,artificial-intelligence,machine-learning,nlp,chatbot,framework,ecosystem
36
+ Classifier: Development Status :: 3 - Alpha
37
+ Classifier: Intended Audience :: Developers
38
+ Classifier: Intended Audience :: Science/Research
39
+ Classifier: License :: OSI Approved :: MIT License
40
+ Classifier: Operating System :: OS Independent
41
+ Classifier: Programming Language :: Python :: 3
42
+ Classifier: Programming Language :: Python :: 3.8
43
+ Classifier: Programming Language :: Python :: 3.9
44
+ Classifier: Programming Language :: Python :: 3.10
45
+ Classifier: Programming Language :: Python :: 3.11
46
+ Classifier: Programming Language :: Python :: 3.12
47
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
48
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
49
+ Classifier: Topic :: System :: Distributed Computing
50
+ Requires-Python: >=3.8
51
+ Description-Content-Type: text/markdown
52
+ License-File: LICENSE
53
+ Provides-Extra: core
54
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "core"
55
+ Provides-Extra: memory
56
+ Requires-Dist: abstractmemory>=0.1.0; extra == "memory"
57
+ Provides-Extra: agent
58
+ Requires-Dist: abstractagent>=0.1.0; extra == "agent"
59
+ Provides-Extra: swarm
60
+ Requires-Dist: abstractswarm>=0.1.0; extra == "swarm"
61
+ Provides-Extra: available
62
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "available"
63
+ Provides-Extra: all
64
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "all"
65
+ Provides-Extra: dev
66
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
67
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
68
+ Requires-Dist: black>=23.0.0; extra == "dev"
69
+ Requires-Dist: isort>=5.12.0; extra == "dev"
70
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
71
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
72
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
73
+ Provides-Extra: docs
74
+ Requires-Dist: mkdocs>=1.5.0; extra == "docs"
75
+ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
76
+ Requires-Dist: mkdocstrings[python]>=0.20.0; extra == "docs"
77
+ Dynamic: license-file
78
+
79
+ # AbstractFramework
80
+
81
+ **A unified ecosystem for AI-powered applications and intelligent systems.**
82
+
83
+ AbstractFramework is an umbrella project that brings together a comprehensive suite of tools and libraries for building sophisticated AI applications. Each component is designed to work seamlessly together while maintaining independence and modularity.
84
+
85
+ ## 🏗️ Framework Components
86
+
87
+ ### 📚 [AbstractCore](https://github.com/lpalbou/AbstractCore) ✅ **Available**
88
+ *Unified Python library for interaction with multiple Large Language Model (LLM) providers.*
89
+
90
+ **Write once, run everywhere.**
91
+
92
+ - **Provider Agnostic**: Works with OpenAI, Anthropic, Ollama, and more
93
+ - **Tool Calling**: Universal function calling across providers
94
+ - **Structured Output**: Type-safe Pydantic integration
95
+ - **Embeddings & RAG**: Built-in vector embeddings for semantic search
96
+ - **Session Management**: Persistent conversations and analytics
97
+ - **Server Mode**: Optional OpenAI-compatible API server
98
+
99
+ ```python
100
+ from abstractcore import create_llm
101
+
102
+ # Works with any provider
103
+ llm = create_llm("anthropic", model="claude-3-5-haiku-latest")
104
+ response = llm.generate("What is the capital of France?")
105
+ print(response.content)
106
+ ```
107
+
108
+ ### 🧠 AbstractMemory 🚧 **Coming Soon**
109
+ *Advanced memory systems for AI agents and applications.*
110
+
111
+ - **Persistent Memory**: Long-term storage and retrieval
112
+ - **Contextual Memory**: Semantic understanding and associations
113
+ - **Memory Hierarchies**: Short-term, working, and long-term memory
114
+ - **Memory Compression**: Efficient storage of large contexts
115
+ - **Cross-Session Continuity**: Maintain context across interactions
116
+
117
+ ### 🤖 AbstractAgent 🚧 **Coming Soon**
118
+ *Intelligent agent framework with reasoning and tool use capabilities.*
119
+
120
+ - **Autonomous Reasoning**: Multi-step problem solving
121
+ - **Tool Integration**: Seamless integration with external tools
122
+ - **Goal-Oriented Behavior**: Task planning and execution
123
+ - **Learning Capabilities**: Adaptive behavior from experience
124
+ - **Safety Mechanisms**: Built-in guardrails and monitoring
125
+
126
+ ### 🐝 AbstractSwarm 🚧 **Coming Soon**
127
+ *Multi-agent coordination and swarm intelligence systems.*
128
+
129
+ - **Agent Orchestration**: Coordinate multiple specialized agents
130
+ - **Distributed Processing**: Scale across multiple nodes
131
+ - **Emergent Behavior**: Complex behaviors from simple interactions
132
+ - **Communication Protocols**: Inter-agent messaging and coordination
133
+ - **Collective Intelligence**: Leverage swarm problem-solving
134
+
135
+ ## 🚀 Quick Start
136
+
137
+ ### Installation
138
+
139
+ ```bash
140
+ # Install the full framework (when all components are available)
141
+ pip install abstractframework[all]
142
+
143
+ # Or install individual components
144
+ pip install abstractcore[all] # Available now
145
+ pip install abstractmemory # Coming soon
146
+ pip install abstractagent # Coming soon
147
+ pip install abstractswarm # Coming soon
148
+ ```
149
+
150
+ ### Basic Usage
151
+
152
+ ```python
153
+ import abstractframework as af
154
+
155
+ # Create an intelligent agent with memory and LLM capabilities
156
+ agent = af.create_agent(
157
+ llm_provider="openai",
158
+ model="gpt-4o-mini",
159
+ memory_type="persistent",
160
+ tools=["web_search", "calculator", "file_system"]
161
+ )
162
+
163
+ # Have a conversation with persistent memory
164
+ response = agent.chat("Remember that I prefer Python over JavaScript")
165
+ print(response)
166
+
167
+ # The agent remembers across sessions
168
+ response = agent.chat("What programming language do I prefer?")
169
+ print(response) # "You prefer Python over JavaScript"
170
+ ```
171
+
172
+ ## 🎯 Use Cases
173
+
174
+ ### 1. **Intelligent Applications**
175
+ Build AI-powered applications with persistent memory, reasoning capabilities, and multi-provider LLM support.
176
+
177
+ ### 2. **Research & Development**
178
+ Experiment with different AI architectures, memory systems, and agent behaviors in a unified framework.
179
+
180
+ ### 3. **Enterprise AI Systems**
181
+ Deploy scalable AI solutions with swarm intelligence, distributed processing, and robust memory management.
182
+
183
+ ### 4. **Educational Projects**
184
+ Learn AI concepts through hands-on experimentation with agents, memory systems, and LLM interactions.
185
+
186
+ ## 🏛️ Architecture Philosophy
187
+
188
+ AbstractFramework follows key design principles:
189
+
190
+ - **🔧 Modularity**: Each component works independently and together
191
+ - **🔄 Interoperability**: Seamless integration between components
192
+ - **📈 Scalability**: From single agents to distributed swarms
193
+ - **🛡️ Robustness**: Production-ready with comprehensive error handling
194
+ - **🎨 Flexibility**: Adapt to diverse use cases and requirements
195
+ - **📚 Simplicity**: Clean APIs that hide complexity without limiting power
196
+
197
+ ## 📊 Project Status
198
+
199
+ | Component | Status | Version | Documentation |
200
+ |-----------|--------|---------|---------------|
201
+ | AbstractCore | ✅ **Available** | 2.4.1 | [Complete](https://github.com/lpalbou/AbstractCore) |
202
+ | AbstractMemory | 🚧 **In Development** | - | Coming Soon |
203
+ | AbstractAgent | 🚧 **Planned** | - | Coming Soon |
204
+ | AbstractSwarm | 🚧 **Planned** | - | Coming Soon |
205
+
206
+ ## 🤝 Contributing
207
+
208
+ We welcome contributions to any component of the AbstractFramework ecosystem!
209
+
210
+ - **AbstractCore**: [Contributing Guide](https://github.com/lpalbou/AbstractCore/blob/main/CONTRIBUTING.md)
211
+ - **Other Components**: Contributing guides will be available as components are released
212
+
213
+ ## 📄 License
214
+
215
+ MIT License - see LICENSE file for details.
216
+
217
+ All components of AbstractFramework are released under the MIT License to ensure maximum compatibility and adoption.
218
+
219
+ ## 🔗 Links
220
+
221
+ - **AbstractCore Repository**: https://github.com/lpalbou/AbstractCore
222
+ - **Documentation**: Coming soon
223
+ - **Community Discussions**: Coming soon
224
+ - **Issue Tracker**: Coming soon
225
+
226
+ ## 🌟 Vision
227
+
228
+ AbstractFramework aims to democratize AI development by providing:
229
+
230
+ 1. **Unified Interfaces**: Consistent APIs across all AI capabilities
231
+ 2. **Production Ready**: Enterprise-grade reliability and performance
232
+ 3. **Research Friendly**: Easy experimentation and prototyping
233
+ 4. **Community Driven**: Open source with active community involvement
234
+ 5. **Future Proof**: Designed to evolve with AI advancements
235
+
236
+ ---
237
+
238
+ **AbstractFramework** - *Building the future of AI applications, one component at a time.*
239
+
240
+ > **Note**: This is currently a placeholder project. AbstractCore is fully functional and available. Other components are in various stages of development. Star this repository to stay updated on releases!
@@ -0,0 +1,162 @@
1
+ # AbstractFramework
2
+
3
+ **A unified ecosystem for AI-powered applications and intelligent systems.**
4
+
5
+ AbstractFramework is an umbrella project that brings together a comprehensive suite of tools and libraries for building sophisticated AI applications. Each component is designed to work seamlessly together while maintaining independence and modularity.
6
+
7
+ ## 🏗️ Framework Components
8
+
9
+ ### 📚 [AbstractCore](https://github.com/lpalbou/AbstractCore) ✅ **Available**
10
+ *Unified Python library for interaction with multiple Large Language Model (LLM) providers.*
11
+
12
+ **Write once, run everywhere.**
13
+
14
+ - **Provider Agnostic**: Works with OpenAI, Anthropic, Ollama, and more
15
+ - **Tool Calling**: Universal function calling across providers
16
+ - **Structured Output**: Type-safe Pydantic integration
17
+ - **Embeddings & RAG**: Built-in vector embeddings for semantic search
18
+ - **Session Management**: Persistent conversations and analytics
19
+ - **Server Mode**: Optional OpenAI-compatible API server
20
+
21
+ ```python
22
+ from abstractcore import create_llm
23
+
24
+ # Works with any provider
25
+ llm = create_llm("anthropic", model="claude-3-5-haiku-latest")
26
+ response = llm.generate("What is the capital of France?")
27
+ print(response.content)
28
+ ```
29
+
30
+ ### 🧠 AbstractMemory 🚧 **Coming Soon**
31
+ *Advanced memory systems for AI agents and applications.*
32
+
33
+ - **Persistent Memory**: Long-term storage and retrieval
34
+ - **Contextual Memory**: Semantic understanding and associations
35
+ - **Memory Hierarchies**: Short-term, working, and long-term memory
36
+ - **Memory Compression**: Efficient storage of large contexts
37
+ - **Cross-Session Continuity**: Maintain context across interactions
38
+
39
+ ### 🤖 AbstractAgent 🚧 **Coming Soon**
40
+ *Intelligent agent framework with reasoning and tool use capabilities.*
41
+
42
+ - **Autonomous Reasoning**: Multi-step problem solving
43
+ - **Tool Integration**: Seamless integration with external tools
44
+ - **Goal-Oriented Behavior**: Task planning and execution
45
+ - **Learning Capabilities**: Adaptive behavior from experience
46
+ - **Safety Mechanisms**: Built-in guardrails and monitoring
47
+
48
+ ### 🐝 AbstractSwarm 🚧 **Coming Soon**
49
+ *Multi-agent coordination and swarm intelligence systems.*
50
+
51
+ - **Agent Orchestration**: Coordinate multiple specialized agents
52
+ - **Distributed Processing**: Scale across multiple nodes
53
+ - **Emergent Behavior**: Complex behaviors from simple interactions
54
+ - **Communication Protocols**: Inter-agent messaging and coordination
55
+ - **Collective Intelligence**: Leverage swarm problem-solving
56
+
57
+ ## 🚀 Quick Start
58
+
59
+ ### Installation
60
+
61
+ ```bash
62
+ # Install the full framework (when all components are available)
63
+ pip install abstractframework[all]
64
+
65
+ # Or install individual components
66
+ pip install abstractcore[all] # Available now
67
+ pip install abstractmemory # Coming soon
68
+ pip install abstractagent # Coming soon
69
+ pip install abstractswarm # Coming soon
70
+ ```
71
+
72
+ ### Basic Usage
73
+
74
+ ```python
75
+ import abstractframework as af
76
+
77
+ # Create an intelligent agent with memory and LLM capabilities
78
+ agent = af.create_agent(
79
+ llm_provider="openai",
80
+ model="gpt-4o-mini",
81
+ memory_type="persistent",
82
+ tools=["web_search", "calculator", "file_system"]
83
+ )
84
+
85
+ # Have a conversation with persistent memory
86
+ response = agent.chat("Remember that I prefer Python over JavaScript")
87
+ print(response)
88
+
89
+ # The agent remembers across sessions
90
+ response = agent.chat("What programming language do I prefer?")
91
+ print(response) # "You prefer Python over JavaScript"
92
+ ```
93
+
94
+ ## 🎯 Use Cases
95
+
96
+ ### 1. **Intelligent Applications**
97
+ Build AI-powered applications with persistent memory, reasoning capabilities, and multi-provider LLM support.
98
+
99
+ ### 2. **Research & Development**
100
+ Experiment with different AI architectures, memory systems, and agent behaviors in a unified framework.
101
+
102
+ ### 3. **Enterprise AI Systems**
103
+ Deploy scalable AI solutions with swarm intelligence, distributed processing, and robust memory management.
104
+
105
+ ### 4. **Educational Projects**
106
+ Learn AI concepts through hands-on experimentation with agents, memory systems, and LLM interactions.
107
+
108
+ ## 🏛️ Architecture Philosophy
109
+
110
+ AbstractFramework follows key design principles:
111
+
112
+ - **🔧 Modularity**: Each component works independently and together
113
+ - **🔄 Interoperability**: Seamless integration between components
114
+ - **📈 Scalability**: From single agents to distributed swarms
115
+ - **🛡️ Robustness**: Production-ready with comprehensive error handling
116
+ - **🎨 Flexibility**: Adapt to diverse use cases and requirements
117
+ - **📚 Simplicity**: Clean APIs that hide complexity without limiting power
118
+
119
+ ## 📊 Project Status
120
+
121
+ | Component | Status | Version | Documentation |
122
+ |-----------|--------|---------|---------------|
123
+ | AbstractCore | ✅ **Available** | 2.4.1 | [Complete](https://github.com/lpalbou/AbstractCore) |
124
+ | AbstractMemory | 🚧 **In Development** | - | Coming Soon |
125
+ | AbstractAgent | 🚧 **Planned** | - | Coming Soon |
126
+ | AbstractSwarm | 🚧 **Planned** | - | Coming Soon |
127
+
128
+ ## 🤝 Contributing
129
+
130
+ We welcome contributions to any component of the AbstractFramework ecosystem!
131
+
132
+ - **AbstractCore**: [Contributing Guide](https://github.com/lpalbou/AbstractCore/blob/main/CONTRIBUTING.md)
133
+ - **Other Components**: Contributing guides will be available as components are released
134
+
135
+ ## 📄 License
136
+
137
+ MIT License - see LICENSE file for details.
138
+
139
+ All components of AbstractFramework are released under the MIT License to ensure maximum compatibility and adoption.
140
+
141
+ ## 🔗 Links
142
+
143
+ - **AbstractCore Repository**: https://github.com/lpalbou/AbstractCore
144
+ - **Documentation**: Coming soon
145
+ - **Community Discussions**: Coming soon
146
+ - **Issue Tracker**: Coming soon
147
+
148
+ ## 🌟 Vision
149
+
150
+ AbstractFramework aims to democratize AI development by providing:
151
+
152
+ 1. **Unified Interfaces**: Consistent APIs across all AI capabilities
153
+ 2. **Production Ready**: Enterprise-grade reliability and performance
154
+ 3. **Research Friendly**: Easy experimentation and prototyping
155
+ 4. **Community Driven**: Open source with active community involvement
156
+ 5. **Future Proof**: Designed to evolve with AI advancements
157
+
158
+ ---
159
+
160
+ **AbstractFramework** - *Building the future of AI applications, one component at a time.*
161
+
162
+ > **Note**: This is currently a placeholder project. AbstractCore is fully functional and available. Other components are in various stages of development. Star this repository to stay updated on releases!
@@ -0,0 +1,201 @@
1
+ """
2
+ AbstractFramework - A unified ecosystem for AI-powered applications and intelligent systems.
3
+
4
+ This is the main entry point for the AbstractFramework ecosystem, which includes:
5
+ - AbstractCore: Unified LLM provider interface
6
+ - AbstractMemory: Advanced memory systems (coming soon)
7
+ - AbstractAgent: Intelligent agent framework (coming soon)
8
+ - AbstractSwarm: Multi-agent coordination (coming soon)
9
+
10
+ Example:
11
+ >>> import abstractframework as af
12
+ >>> # When all components are available:
13
+ >>> agent = af.create_agent(llm_provider="openai", model="gpt-4o-mini")
14
+ >>> response = agent.chat("Hello, world!")
15
+ """
16
+
17
+ __version__ = "0.1.0"
18
+ __author__ = "Laurent-Philippe Albou"
19
+ __email__ = "lpalbou@gmail.com"
20
+ __description__ = "A unified ecosystem for AI-powered applications and intelligent systems"
21
+ __url__ = "https://github.com/lpalbou/AbstractFramework"
22
+
23
+ # Component availability flags
24
+ ABSTRACTCORE_AVAILABLE = False
25
+ ABSTRACTMEMORY_AVAILABLE = False
26
+ ABSTRACTAGENT_AVAILABLE = False
27
+ ABSTRACTSWARM_AVAILABLE = False
28
+
29
+ # Try to import available components
30
+ try:
31
+ import abstractcore
32
+ ABSTRACTCORE_AVAILABLE = True
33
+ __all__ = ["abstractcore"]
34
+ except ImportError:
35
+ __all__ = []
36
+
37
+ try:
38
+ import abstractmemory
39
+ ABSTRACTMEMORY_AVAILABLE = True
40
+ __all__.append("abstractmemory")
41
+ except ImportError:
42
+ pass
43
+
44
+ try:
45
+ import abstractagent
46
+ ABSTRACTAGENT_AVAILABLE = True
47
+ __all__.append("abstractagent")
48
+ except ImportError:
49
+ pass
50
+
51
+ try:
52
+ import abstractswarm
53
+ ABSTRACTSWARM_AVAILABLE = True
54
+ __all__.append("abstractswarm")
55
+ except ImportError:
56
+ pass
57
+
58
+
59
+ def get_available_components():
60
+ """
61
+ Get a list of currently available AbstractFramework components.
62
+
63
+ Returns:
64
+ dict: Dictionary mapping component names to their availability status
65
+ """
66
+ return {
67
+ "abstractcore": ABSTRACTCORE_AVAILABLE,
68
+ "abstractmemory": ABSTRACTMEMORY_AVAILABLE,
69
+ "abstractagent": ABSTRACTAGENT_AVAILABLE,
70
+ "abstractswarm": ABSTRACTSWARM_AVAILABLE,
71
+ }
72
+
73
+
74
+ def get_version_info():
75
+ """
76
+ Get version information for AbstractFramework and its components.
77
+
78
+ Returns:
79
+ dict: Dictionary with version information for each component
80
+ """
81
+ versions = {"abstractframework": __version__}
82
+
83
+ if ABSTRACTCORE_AVAILABLE:
84
+ try:
85
+ versions["abstractcore"] = abstractcore.__version__
86
+ except AttributeError:
87
+ versions["abstractcore"] = "unknown"
88
+
89
+ if ABSTRACTMEMORY_AVAILABLE:
90
+ try:
91
+ versions["abstractmemory"] = abstractmemory.__version__
92
+ except AttributeError:
93
+ versions["abstractmemory"] = "unknown"
94
+
95
+ if ABSTRACTAGENT_AVAILABLE:
96
+ try:
97
+ versions["abstractagent"] = abstractagent.__version__
98
+ except AttributeError:
99
+ versions["abstractagent"] = "unknown"
100
+
101
+ if ABSTRACTSWARM_AVAILABLE:
102
+ try:
103
+ versions["abstractswarm"] = abstractswarm.__version__
104
+ except AttributeError:
105
+ versions["abstractswarm"] = "unknown"
106
+
107
+ return versions
108
+
109
+
110
+ # Placeholder functions for future unified API
111
+ def create_agent(*args, **kwargs):
112
+ """
113
+ Create an intelligent agent (placeholder - requires AbstractAgent).
114
+
115
+ This function will be available when AbstractAgent is released.
116
+ Currently raises NotImplementedError.
117
+
118
+ Raises:
119
+ NotImplementedError: AbstractAgent is not yet available
120
+ """
121
+ if not ABSTRACTAGENT_AVAILABLE:
122
+ raise NotImplementedError(
123
+ "AbstractAgent is not yet available. "
124
+ "This function will be implemented when AbstractAgent is released. "
125
+ "For now, use AbstractCore directly: pip install abstractcore[all]"
126
+ )
127
+
128
+ # Future implementation will delegate to AbstractAgent
129
+ return abstractagent.create_agent(*args, **kwargs)
130
+
131
+
132
+ def create_swarm(*args, **kwargs):
133
+ """
134
+ Create a multi-agent swarm (placeholder - requires AbstractSwarm).
135
+
136
+ This function will be available when AbstractSwarm is released.
137
+ Currently raises NotImplementedError.
138
+
139
+ Raises:
140
+ NotImplementedError: AbstractSwarm is not yet available
141
+ """
142
+ if not ABSTRACTSWARM_AVAILABLE:
143
+ raise NotImplementedError(
144
+ "AbstractSwarm is not yet available. "
145
+ "This function will be implemented when AbstractSwarm is released."
146
+ )
147
+
148
+ # Future implementation will delegate to AbstractSwarm
149
+ return abstractswarm.create_swarm(*args, **kwargs)
150
+
151
+
152
+ def create_memory(*args, **kwargs):
153
+ """
154
+ Create a memory system (placeholder - requires AbstractMemory).
155
+
156
+ This function will be available when AbstractMemory is released.
157
+ Currently raises NotImplementedError.
158
+
159
+ Raises:
160
+ NotImplementedError: AbstractMemory is not yet available
161
+ """
162
+ if not ABSTRACTMEMORY_AVAILABLE:
163
+ raise NotImplementedError(
164
+ "AbstractMemory is not yet available. "
165
+ "This function will be implemented when AbstractMemory is released."
166
+ )
167
+
168
+ # Future implementation will delegate to AbstractMemory
169
+ return abstractmemory.create_memory(*args, **kwargs)
170
+
171
+
172
+ # Convenience function to check framework status
173
+ def status():
174
+ """
175
+ Print the current status of AbstractFramework components.
176
+ """
177
+ print("AbstractFramework Status:")
178
+ print(f" Version: {__version__}")
179
+ print("\nComponent Availability:")
180
+
181
+ components = get_available_components()
182
+ for component, available in components.items():
183
+ status_icon = "✅" if available else "❌"
184
+ status_text = "Available" if available else "Not Available"
185
+ print(f" {status_icon} {component}: {status_text}")
186
+
187
+ if ABSTRACTCORE_AVAILABLE:
188
+ print(f"\nTo get started with AbstractCore:")
189
+ print(f" from abstractcore import create_llm")
190
+ print(f" llm = create_llm('openai', model='gpt-4o-mini')")
191
+ print(f" response = llm.generate('Hello, world!')")
192
+ else:
193
+ print(f"\nTo install AbstractCore:")
194
+ print(f" pip install abstractcore[all]")
195
+
196
+ print(f"\nFor more information: {__url__}")
197
+
198
+
199
+ # Make status available at package level
200
+ __all__.extend(["get_available_components", "get_version_info", "status",
201
+ "create_agent", "create_swarm", "create_memory"])
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: abstractframework
3
+ Version: 0.1.0
4
+ Summary: A unified ecosystem for AI-powered applications and intelligent systems
5
+ Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
6
+ Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
7
+ License: MIT License
8
+
9
+ Copyright (c) 2025 Laurent-Philippe Albou
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ Project-URL: Homepage, https://github.com/lpalbou/AbstractFramework
30
+ Project-URL: Documentation, https://github.com/lpalbou/AbstractFramework
31
+ Project-URL: Repository, https://github.com/lpalbou/AbstractFramework
32
+ Project-URL: Bug Tracker, https://github.com/lpalbou/AbstractFramework/issues
33
+ Project-URL: Changelog, https://github.com/lpalbou/AbstractFramework/blob/main/CHANGELOG.md
34
+ Project-URL: AbstractCore, https://github.com/lpalbou/AbstractCore
35
+ Keywords: ai,llm,agents,memory,swarm,artificial-intelligence,machine-learning,nlp,chatbot,framework,ecosystem
36
+ Classifier: Development Status :: 3 - Alpha
37
+ Classifier: Intended Audience :: Developers
38
+ Classifier: Intended Audience :: Science/Research
39
+ Classifier: License :: OSI Approved :: MIT License
40
+ Classifier: Operating System :: OS Independent
41
+ Classifier: Programming Language :: Python :: 3
42
+ Classifier: Programming Language :: Python :: 3.8
43
+ Classifier: Programming Language :: Python :: 3.9
44
+ Classifier: Programming Language :: Python :: 3.10
45
+ Classifier: Programming Language :: Python :: 3.11
46
+ Classifier: Programming Language :: Python :: 3.12
47
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
48
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
49
+ Classifier: Topic :: System :: Distributed Computing
50
+ Requires-Python: >=3.8
51
+ Description-Content-Type: text/markdown
52
+ License-File: LICENSE
53
+ Provides-Extra: core
54
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "core"
55
+ Provides-Extra: memory
56
+ Requires-Dist: abstractmemory>=0.1.0; extra == "memory"
57
+ Provides-Extra: agent
58
+ Requires-Dist: abstractagent>=0.1.0; extra == "agent"
59
+ Provides-Extra: swarm
60
+ Requires-Dist: abstractswarm>=0.1.0; extra == "swarm"
61
+ Provides-Extra: available
62
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "available"
63
+ Provides-Extra: all
64
+ Requires-Dist: abstractcore[all]>=2.4.0; extra == "all"
65
+ Provides-Extra: dev
66
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
67
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
68
+ Requires-Dist: black>=23.0.0; extra == "dev"
69
+ Requires-Dist: isort>=5.12.0; extra == "dev"
70
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
71
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
72
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
73
+ Provides-Extra: docs
74
+ Requires-Dist: mkdocs>=1.5.0; extra == "docs"
75
+ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
76
+ Requires-Dist: mkdocstrings[python]>=0.20.0; extra == "docs"
77
+ Dynamic: license-file
78
+
79
+ # AbstractFramework
80
+
81
+ **A unified ecosystem for AI-powered applications and intelligent systems.**
82
+
83
+ AbstractFramework is an umbrella project that brings together a comprehensive suite of tools and libraries for building sophisticated AI applications. Each component is designed to work seamlessly together while maintaining independence and modularity.
84
+
85
+ ## 🏗️ Framework Components
86
+
87
+ ### 📚 [AbstractCore](https://github.com/lpalbou/AbstractCore) ✅ **Available**
88
+ *Unified Python library for interaction with multiple Large Language Model (LLM) providers.*
89
+
90
+ **Write once, run everywhere.**
91
+
92
+ - **Provider Agnostic**: Works with OpenAI, Anthropic, Ollama, and more
93
+ - **Tool Calling**: Universal function calling across providers
94
+ - **Structured Output**: Type-safe Pydantic integration
95
+ - **Embeddings & RAG**: Built-in vector embeddings for semantic search
96
+ - **Session Management**: Persistent conversations and analytics
97
+ - **Server Mode**: Optional OpenAI-compatible API server
98
+
99
+ ```python
100
+ from abstractcore import create_llm
101
+
102
+ # Works with any provider
103
+ llm = create_llm("anthropic", model="claude-3-5-haiku-latest")
104
+ response = llm.generate("What is the capital of France?")
105
+ print(response.content)
106
+ ```
107
+
108
+ ### 🧠 AbstractMemory 🚧 **Coming Soon**
109
+ *Advanced memory systems for AI agents and applications.*
110
+
111
+ - **Persistent Memory**: Long-term storage and retrieval
112
+ - **Contextual Memory**: Semantic understanding and associations
113
+ - **Memory Hierarchies**: Short-term, working, and long-term memory
114
+ - **Memory Compression**: Efficient storage of large contexts
115
+ - **Cross-Session Continuity**: Maintain context across interactions
116
+
117
+ ### 🤖 AbstractAgent 🚧 **Coming Soon**
118
+ *Intelligent agent framework with reasoning and tool use capabilities.*
119
+
120
+ - **Autonomous Reasoning**: Multi-step problem solving
121
+ - **Tool Integration**: Seamless integration with external tools
122
+ - **Goal-Oriented Behavior**: Task planning and execution
123
+ - **Learning Capabilities**: Adaptive behavior from experience
124
+ - **Safety Mechanisms**: Built-in guardrails and monitoring
125
+
126
+ ### 🐝 AbstractSwarm 🚧 **Coming Soon**
127
+ *Multi-agent coordination and swarm intelligence systems.*
128
+
129
+ - **Agent Orchestration**: Coordinate multiple specialized agents
130
+ - **Distributed Processing**: Scale across multiple nodes
131
+ - **Emergent Behavior**: Complex behaviors from simple interactions
132
+ - **Communication Protocols**: Inter-agent messaging and coordination
133
+ - **Collective Intelligence**: Leverage swarm problem-solving
134
+
135
+ ## 🚀 Quick Start
136
+
137
+ ### Installation
138
+
139
+ ```bash
140
+ # Install the full framework (when all components are available)
141
+ pip install abstractframework[all]
142
+
143
+ # Or install individual components
144
+ pip install abstractcore[all] # Available now
145
+ pip install abstractmemory # Coming soon
146
+ pip install abstractagent # Coming soon
147
+ pip install abstractswarm # Coming soon
148
+ ```
149
+
150
+ ### Basic Usage
151
+
152
+ ```python
153
+ import abstractframework as af
154
+
155
+ # Create an intelligent agent with memory and LLM capabilities
156
+ agent = af.create_agent(
157
+ llm_provider="openai",
158
+ model="gpt-4o-mini",
159
+ memory_type="persistent",
160
+ tools=["web_search", "calculator", "file_system"]
161
+ )
162
+
163
+ # Have a conversation with persistent memory
164
+ response = agent.chat("Remember that I prefer Python over JavaScript")
165
+ print(response)
166
+
167
+ # The agent remembers across sessions
168
+ response = agent.chat("What programming language do I prefer?")
169
+ print(response) # "You prefer Python over JavaScript"
170
+ ```
171
+
172
+ ## 🎯 Use Cases
173
+
174
+ ### 1. **Intelligent Applications**
175
+ Build AI-powered applications with persistent memory, reasoning capabilities, and multi-provider LLM support.
176
+
177
+ ### 2. **Research & Development**
178
+ Experiment with different AI architectures, memory systems, and agent behaviors in a unified framework.
179
+
180
+ ### 3. **Enterprise AI Systems**
181
+ Deploy scalable AI solutions with swarm intelligence, distributed processing, and robust memory management.
182
+
183
+ ### 4. **Educational Projects**
184
+ Learn AI concepts through hands-on experimentation with agents, memory systems, and LLM interactions.
185
+
186
+ ## 🏛️ Architecture Philosophy
187
+
188
+ AbstractFramework follows key design principles:
189
+
190
+ - **🔧 Modularity**: Each component works independently and together
191
+ - **🔄 Interoperability**: Seamless integration between components
192
+ - **📈 Scalability**: From single agents to distributed swarms
193
+ - **🛡️ Robustness**: Production-ready with comprehensive error handling
194
+ - **🎨 Flexibility**: Adapt to diverse use cases and requirements
195
+ - **📚 Simplicity**: Clean APIs that hide complexity without limiting power
196
+
197
+ ## 📊 Project Status
198
+
199
+ | Component | Status | Version | Documentation |
200
+ |-----------|--------|---------|---------------|
201
+ | AbstractCore | ✅ **Available** | 2.4.1 | [Complete](https://github.com/lpalbou/AbstractCore) |
202
+ | AbstractMemory | 🚧 **In Development** | - | Coming Soon |
203
+ | AbstractAgent | 🚧 **Planned** | - | Coming Soon |
204
+ | AbstractSwarm | 🚧 **Planned** | - | Coming Soon |
205
+
206
+ ## 🤝 Contributing
207
+
208
+ We welcome contributions to any component of the AbstractFramework ecosystem!
209
+
210
+ - **AbstractCore**: [Contributing Guide](https://github.com/lpalbou/AbstractCore/blob/main/CONTRIBUTING.md)
211
+ - **Other Components**: Contributing guides will be available as components are released
212
+
213
+ ## 📄 License
214
+
215
+ MIT License - see LICENSE file for details.
216
+
217
+ All components of AbstractFramework are released under the MIT License to ensure maximum compatibility and adoption.
218
+
219
+ ## 🔗 Links
220
+
221
+ - **AbstractCore Repository**: https://github.com/lpalbou/AbstractCore
222
+ - **Documentation**: Coming soon
223
+ - **Community Discussions**: Coming soon
224
+ - **Issue Tracker**: Coming soon
225
+
226
+ ## 🌟 Vision
227
+
228
+ AbstractFramework aims to democratize AI development by providing:
229
+
230
+ 1. **Unified Interfaces**: Consistent APIs across all AI capabilities
231
+ 2. **Production Ready**: Enterprise-grade reliability and performance
232
+ 3. **Research Friendly**: Easy experimentation and prototyping
233
+ 4. **Community Driven**: Open source with active community involvement
234
+ 5. **Future Proof**: Designed to evolve with AI advancements
235
+
236
+ ---
237
+
238
+ **AbstractFramework** - *Building the future of AI applications, one component at a time.*
239
+
240
+ > **Note**: This is currently a placeholder project. AbstractCore is fully functional and available. Other components are in various stages of development. Star this repository to stay updated on releases!
@@ -0,0 +1,12 @@
1
+ CHANGELOG.md
2
+ LICENSE
3
+ MANIFEST.in
4
+ README.md
5
+ __init__.py
6
+ pyproject.toml
7
+ ./__init__.py
8
+ abstractframework.egg-info/PKG-INFO
9
+ abstractframework.egg-info/SOURCES.txt
10
+ abstractframework.egg-info/dependency_links.txt
11
+ abstractframework.egg-info/requires.txt
12
+ abstractframework.egg-info/top_level.txt
@@ -0,0 +1,32 @@
1
+
2
+ [agent]
3
+ abstractagent>=0.1.0
4
+
5
+ [all]
6
+ abstractcore[all]>=2.4.0
7
+
8
+ [available]
9
+ abstractcore[all]>=2.4.0
10
+
11
+ [core]
12
+ abstractcore[all]>=2.4.0
13
+
14
+ [dev]
15
+ pytest>=7.0.0
16
+ pytest-cov>=4.0.0
17
+ black>=23.0.0
18
+ isort>=5.12.0
19
+ flake8>=6.0.0
20
+ mypy>=1.0.0
21
+ pre-commit>=3.0.0
22
+
23
+ [docs]
24
+ mkdocs>=1.5.0
25
+ mkdocs-material>=9.0.0
26
+ mkdocstrings[python]>=0.20.0
27
+
28
+ [memory]
29
+ abstractmemory>=0.1.0
30
+
31
+ [swarm]
32
+ abstractswarm>=0.1.0
@@ -0,0 +1 @@
1
+ abstractframework
@@ -0,0 +1,155 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "abstractframework"
7
+ version = "0.1.0"
8
+ description = "A unified ecosystem for AI-powered applications and intelligent systems"
9
+ readme = "README.md"
10
+ license = {file = "LICENSE"}
11
+ authors = [
12
+ {name = "Laurent-Philippe Albou", email = "contact@abstractcore.ai"}
13
+ ]
14
+ maintainers = [
15
+ {name = "Laurent-Philippe Albou", email = "contact@abstractcore.ai"}
16
+ ]
17
+ keywords = [
18
+ "ai", "llm", "agents", "memory", "swarm", "artificial-intelligence",
19
+ "machine-learning", "nlp", "chatbot", "framework", "ecosystem"
20
+ ]
21
+ classifiers = [
22
+ "Development Status :: 3 - Alpha",
23
+ "Intended Audience :: Developers",
24
+ "Intended Audience :: Science/Research",
25
+ "License :: OSI Approved :: MIT License",
26
+ "Operating System :: OS Independent",
27
+ "Programming Language :: Python :: 3",
28
+ "Programming Language :: Python :: 3.8",
29
+ "Programming Language :: Python :: 3.9",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
34
+ "Topic :: Software Development :: Libraries :: Python Modules",
35
+ "Topic :: System :: Distributed Computing",
36
+ ]
37
+ requires-python = ">=3.8"
38
+ dependencies = []
39
+
40
+ [project.optional-dependencies]
41
+ # Individual component dependencies
42
+ core = ["abstractcore[all]>=2.4.0"]
43
+ memory = ["abstractmemory>=0.1.0"] # When available
44
+ agent = ["abstractagent>=0.1.0"] # When available
45
+ swarm = ["abstractswarm>=0.1.0"] # When available
46
+
47
+ # Convenience bundles
48
+ available = ["abstractcore[all]>=2.4.0"] # Currently available components
49
+ all = [
50
+ "abstractcore[all]>=2.4.0",
51
+ # "abstractmemory>=0.1.0", # Uncomment when available
52
+ # "abstractagent>=0.1.0", # Uncomment when available
53
+ # "abstractswarm>=0.1.0", # Uncomment when available
54
+ ]
55
+
56
+ # Development dependencies
57
+ dev = [
58
+ "pytest>=7.0.0",
59
+ "pytest-cov>=4.0.0",
60
+ "black>=23.0.0",
61
+ "isort>=5.12.0",
62
+ "flake8>=6.0.0",
63
+ "mypy>=1.0.0",
64
+ "pre-commit>=3.0.0",
65
+ ]
66
+
67
+ # Documentation dependencies
68
+ docs = [
69
+ "mkdocs>=1.5.0",
70
+ "mkdocs-material>=9.0.0",
71
+ "mkdocstrings[python]>=0.20.0",
72
+ ]
73
+
74
+ [project.urls]
75
+ Homepage = "https://github.com/lpalbou/AbstractFramework"
76
+ Documentation = "https://github.com/lpalbou/AbstractFramework"
77
+ Repository = "https://github.com/lpalbou/AbstractFramework"
78
+ "Bug Tracker" = "https://github.com/lpalbou/AbstractFramework/issues"
79
+ Changelog = "https://github.com/lpalbou/AbstractFramework/blob/main/CHANGELOG.md"
80
+ "AbstractCore" = "https://github.com/lpalbou/AbstractCore"
81
+
82
+ [tool.setuptools]
83
+ packages = ["abstractframework"]
84
+
85
+ [tool.setuptools.package-dir]
86
+ abstractframework = "."
87
+
88
+ [tool.black]
89
+ line-length = 88
90
+ target-version = ['py38', 'py39', 'py310', 'py311', 'py312']
91
+ include = '\.pyi?$'
92
+ extend-exclude = '''
93
+ /(
94
+ # directories
95
+ \.eggs
96
+ | \.git
97
+ | \.hg
98
+ | \.mypy_cache
99
+ | \.tox
100
+ | \.venv
101
+ | build
102
+ | dist
103
+ )/
104
+ '''
105
+
106
+ [tool.isort]
107
+ profile = "black"
108
+ multi_line_output = 3
109
+ line_length = 88
110
+ known_first_party = ["abstractframework"]
111
+
112
+ [tool.mypy]
113
+ python_version = "3.8"
114
+ warn_return_any = true
115
+ warn_unused_configs = true
116
+ disallow_untyped_defs = true
117
+ disallow_incomplete_defs = true
118
+ check_untyped_defs = true
119
+ disallow_untyped_decorators = true
120
+ no_implicit_optional = true
121
+ warn_redundant_casts = true
122
+ warn_unused_ignores = true
123
+ warn_no_return = true
124
+ warn_unreachable = true
125
+ strict_equality = true
126
+
127
+ [tool.pytest.ini_options]
128
+ minversion = "7.0"
129
+ addopts = "-ra -q --strict-markers --strict-config"
130
+ testpaths = ["tests"]
131
+ python_files = ["test_*.py", "*_test.py"]
132
+ python_classes = ["Test*"]
133
+ python_functions = ["test_*"]
134
+
135
+ [tool.coverage.run]
136
+ source = ["abstractframework"]
137
+ omit = [
138
+ "*/tests/*",
139
+ "*/test_*",
140
+ "setup.py",
141
+ ]
142
+
143
+ [tool.coverage.report]
144
+ exclude_lines = [
145
+ "pragma: no cover",
146
+ "def __repr__",
147
+ "if self.debug:",
148
+ "if settings.DEBUG",
149
+ "raise AssertionError",
150
+ "raise NotImplementedError",
151
+ "if 0:",
152
+ "if __name__ == .__main__.:",
153
+ "class .*\\bProtocol\\):",
154
+ "@(abc\\.)?abstractmethod",
155
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+