sf-smartfeed 3.0.0__py3-none-any.whl
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.
- sf_smartfeed/__init__.py +2 -0
- sf_smartfeed/__main__.py +3 -0
- sf_smartfeed/_version.py +1 -0
- sf_smartfeed/cli.py +35 -0
- sf_smartfeed/core.py +19 -0
- sf_smartfeed/models.py +14 -0
- sf_smartfeed-3.0.0.dist-info/METADATA +217 -0
- sf_smartfeed-3.0.0.dist-info/RECORD +13 -0
- sf_smartfeed-3.0.0.dist-info/WHEEL +5 -0
- sf_smartfeed-3.0.0.dist-info/entry_points.txt +2 -0
- sf_smartfeed-3.0.0.dist-info/licenses/LICENSE +13 -0
- sf_smartfeed-3.0.0.dist-info/licenses/NOTICE +15 -0
- sf_smartfeed-3.0.0.dist-info/top_level.txt +1 -0
sf_smartfeed/__init__.py
ADDED
sf_smartfeed/__main__.py
ADDED
sf_smartfeed/_version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.0.0"
|
sf_smartfeed/cli.py
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""SmartFeed CLI — run `sf-smartfeed --demo`."""
|
|
2
|
+
import os, sys, json
|
|
3
|
+
from . import core
|
|
4
|
+
from ._version import __version__
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _demo_dir():
|
|
8
|
+
return os.path.join(os.path.dirname(__file__), "..", "..", "demo")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def main(argv=None):
|
|
12
|
+
argv = argv if argv is not None else sys.argv[1:]
|
|
13
|
+
if "--version" in argv:
|
|
14
|
+
print(f"SmartFeed {__version__}"); return 0
|
|
15
|
+
demo = "--demo" in argv or not argv
|
|
16
|
+
print(f"\n🦔 SmartFeed {__version__} · IAIso §9 · Awareness")
|
|
17
|
+
result = core_demo()
|
|
18
|
+
print(result)
|
|
19
|
+
print(f"\nBacked by IAIso §9 · Awareness · part of the Smart* family · https://smarttasks.cloud\n")
|
|
20
|
+
return 0
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def core_demo() -> str:
|
|
24
|
+
return _DEMO()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _DEMO():
|
|
28
|
+
b = core.distill()
|
|
29
|
+
out = [f"distilled brief (dedup {int(b.dedup_ratio*100)}%):"]
|
|
30
|
+
for s in b.items:
|
|
31
|
+
out.append(f" • [{s.source}] score {s.score} (v{s.velocity})")
|
|
32
|
+
return "\n".join(out)
|
|
33
|
+
|
|
34
|
+
if __name__ == "__main__":
|
|
35
|
+
sys.exit(main())
|
sf_smartfeed/core.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""SmartFeed core — distill the firehose into a brief."""
|
|
2
|
+
import json, os
|
|
3
|
+
from .models import Signal, Brief
|
|
4
|
+
|
|
5
|
+
def _stream():
|
|
6
|
+
return [Signal("hn", 88, 9.1), Signal("hn", 86, 8.8), Signal("reddit", 62, 4.2),
|
|
7
|
+
Signal("gtrends", 70, 6.0), Signal("reddit", 61, 4.0), Signal("arxiv", 55, 3.1),
|
|
8
|
+
Signal("gtrends", 71, 6.2), Signal("news", 66, 5.0)]
|
|
9
|
+
|
|
10
|
+
def distill(top: int = 5) -> Brief:
|
|
11
|
+
sigs = _stream()
|
|
12
|
+
seen, deduped = set(), []
|
|
13
|
+
for s in sorted(sigs, key=lambda x: -x.score):
|
|
14
|
+
key = (s.source, round(s.score / 5))
|
|
15
|
+
if key in seen:
|
|
16
|
+
continue
|
|
17
|
+
seen.add(key); deduped.append(s)
|
|
18
|
+
dedup_ratio = round(1 - len(deduped) / len(sigs), 2)
|
|
19
|
+
return Brief(deduped[:top], dedup_ratio)
|
sf_smartfeed/models.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""UML data objects for SmartFeed — the diagram in the README is these classes."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class Signal:
|
|
7
|
+
source: str
|
|
8
|
+
score: float
|
|
9
|
+
velocity: float
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class Brief:
|
|
13
|
+
items: list[Signal]
|
|
14
|
+
dedup_ratio: float
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sf-smartfeed
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: Distill the firehose. A tight brief of only what moves your work.
|
|
5
|
+
Author: SmartTasks Lab
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://smarttasks.cloud
|
|
8
|
+
Project-URL: Source, https://github.com/SmartTasksOrg/sf-smartfeed
|
|
9
|
+
Project-URL: Issues, https://github.com/SmartTasksOrg/sf-smartfeed/issues
|
|
10
|
+
Project-URL: Security, https://github.com/SmartTasksOrg/sf-smartfeed/security/policy
|
|
11
|
+
Project-URL: Changelog, https://github.com/SmartTasksOrg/sf-smartfeed/blob/master/CHANGELOG.md
|
|
12
|
+
Project-URL: Standard, https://iaiso.org
|
|
13
|
+
Keywords: smart,ai,iaiso,sf-smartfeed,devtools
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
License-File: NOTICE
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
<!-- mcp-name: io.github.smarttasksorg/sf-smartfeed -->
|
|
25
|
+
<h1 align="center">🦔 SmartFeed</h1>
|
|
26
|
+
<p align="center"><b>Distill the firehose. A tight brief of only what moves your work.</b></p>
|
|
27
|
+
<p align="center">
|
|
28
|
+
<a href="https://iaiso.org">IAIso §9 · Awareness</a> ·
|
|
29
|
+
<a href="https://smarttasks.cloud">SmartTasks.cloud</a> ·
|
|
30
|
+
<a href="#part-of-the-smart-family">the Smart* family</a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## The firehose doubled; your day didn't.
|
|
36
|
+
|
|
37
|
+
As AI reshapes how we work, a new gap opens: you must stay current across exploding sources; signal drowns in noise. **SmartFeed** closes it —
|
|
38
|
+
`distill` at the exact moment the gap bites, and it works the second you clone it
|
|
39
|
+
(a synthetic demo ships in `demo/`).
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
SmartFeed is not published on PyPI or any other package registry yet. Until
|
|
44
|
+
this section says otherwise, a package called `sf-smartfeed` on any registry
|
|
45
|
+
is not ours, and neither is `smartfeed`. The PyPI package `smartfeed` is a different project (Fanout); do not install it for this tool.
|
|
46
|
+
|
|
47
|
+
Install from a clone (Python 3.10 or later):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
git clone https://github.com/SmartTasksOrg/sf-smartfeed
|
|
51
|
+
cd sf-smartfeed
|
|
52
|
+
python -m venv .venv
|
|
53
|
+
. .venv/bin/activate # Windows PowerShell: .\.venv\Scripts\Activate.ps1
|
|
54
|
+
python -m pip install .
|
|
55
|
+
sf-smartfeed --demo
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Status
|
|
59
|
+
|
|
60
|
+
- **Version 3.0.0, experimental.** A small deterministic command-line tool with a bundled synthetic demo and two smoke tests.
|
|
61
|
+
- **Published:** nowhere yet; install from a clone (above).
|
|
62
|
+
- **Tested:** the 2 smoke tests in `tests/` on Python 3.12, Linux, on every push to master and every pull request (`.github/workflows/ci.yml`).
|
|
63
|
+
- **Not tested:** Windows and macOS; Python versions other than 3.12.
|
|
64
|
+
- **Security review:** none independent. Report vulnerabilities as described in [SECURITY.md](SECURITY.md).
|
|
65
|
+
|
|
66
|
+
## Run it in your stack
|
|
67
|
+
|
|
68
|
+
| Where you work | How you run it |
|
|
69
|
+
|---|---|
|
|
70
|
+
| **Python** | from a clone: `python -m pip install .` (not on PyPI yet) |
|
|
71
|
+
| **CI / pre-commit** | add the hook from [`.pre-commit-hooks.yaml`](.pre-commit-hooks.yaml) |
|
|
72
|
+
|
|
73
|
+
## What's in this repo
|
|
74
|
+
|
|
75
|
+
- **Core engine** — [`src/sf_smartfeed/`](src/sf_smartfeed/): distill() -> Brief. Deterministic, dependency-free.
|
|
76
|
+
- **CLI** — `sf-smartfeed --demo` (and `--version`): a deterministic demo of the core.
|
|
77
|
+
- **Also included** — a runnable [`demo/`](demo/), [`examples/`](examples/), the IAIso mapping [`spec/iaiso-map.json`](spec/iaiso-map.json), a browser [`site/playground.html`](site/playground.html), plus public smoke tests in `tests/`.
|
|
78
|
+
|
|
79
|
+
## How it works
|
|
80
|
+
|
|
81
|
+
Rule IDs are namespaced `FEED-*` so output looks kin to the rest of the family
|
|
82
|
+
(SmartPangolin's `SEC-*`, etc.). Deterministic, dependency-free, fail-loud.
|
|
83
|
+
|
|
84
|
+
### The data objects (UML)
|
|
85
|
+
|
|
86
|
+
These are real dataclasses in [`src/sf_smartfeed/models.py`](src/sf_smartfeed/models.py) — the
|
|
87
|
+
diagram and the code are the same thing:
|
|
88
|
+
|
|
89
|
+
```mermaid
|
|
90
|
+
classDiagram
|
|
91
|
+
class Signal {
|
|
92
|
+
+source: str
|
|
93
|
+
+score: float
|
|
94
|
+
+velocity: float
|
|
95
|
+
}
|
|
96
|
+
class Brief {
|
|
97
|
+
+items: list[Signal]
|
|
98
|
+
+dedup_ratio: float
|
|
99
|
+
}
|
|
100
|
+
class IAIsoControl {
|
|
101
|
+
+section: str
|
|
102
|
+
+name: str
|
|
103
|
+
}
|
|
104
|
+
Brief ..> IAIsoControl : conforms to
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Where it sits in the architecture
|
|
108
|
+
|
|
109
|
+
SmartFeed doesn't stand alone — it stacks with the family, and everything conforms to
|
|
110
|
+
the IAIso standard — the same standard that governs SmartTasks' own apps, while each tool here stays standalone and drops into your architecture:
|
|
111
|
+
|
|
112
|
+
```mermaid
|
|
113
|
+
graph LR
|
|
114
|
+
IAIso([IAIso standard]):::std
|
|
115
|
+
Cloud([SmartTasks.cloud]):::cloud
|
|
116
|
+
SmartPangolin[SmartPangolin]:::tool
|
|
117
|
+
SmartPrompt[SmartPrompt]:::tool
|
|
118
|
+
SmartCheck[SmartCheck]:::tool
|
|
119
|
+
SmartSeal[SmartSeal]:::tool
|
|
120
|
+
SmartStandard[SmartStandard]:::tool
|
|
121
|
+
SmartSim[SmartSim]:::tool
|
|
122
|
+
SmartMoat[SmartMoat]:::tool
|
|
123
|
+
SmartRoute[SmartRoute]:::tool
|
|
124
|
+
SmartFeed[SmartFeed]:::tool
|
|
125
|
+
SmartPangolin -->|emits clean artifacts to| SmartSeal
|
|
126
|
+
SmartPrompt -->|hands secret/PII flags to| SmartPangolin
|
|
127
|
+
SmartPrompt -->|enforces prompt rules from| SmartStandard
|
|
128
|
+
SmartCheck -->|stamps verified output with| SmartSeal
|
|
129
|
+
SmartCheck -->|checks against rules from| SmartStandard
|
|
130
|
+
SmartSeal -->|issues receipts consumed by| SmartCheck
|
|
131
|
+
SmartSeal -->|issues receipts consumed by| SmartRoute
|
|
132
|
+
SmartStandard -->|supplies rule sets to| SmartPrompt
|
|
133
|
+
SmartStandard -->|supplies rule sets to| SmartCheck
|
|
134
|
+
SmartSim -->|feeds role forecasts to| SmartMoat
|
|
135
|
+
SmartSim -->|draws signals from| SmartFeed
|
|
136
|
+
SmartMoat -->|consumes forecasts from| SmartSim
|
|
137
|
+
SmartRoute -->|verifies receipts from| SmartSeal
|
|
138
|
+
SmartRoute -->|enforces the standard from| SmartStandard
|
|
139
|
+
SmartFeed -->|feeds signals to| SmartSim
|
|
140
|
+
SmartFeed -->|feeds signals to| SmartMoat
|
|
141
|
+
SmartPangolin -.conforms.-> IAIso
|
|
142
|
+
SmartPangolin -.shares IAIso with.-> Cloud
|
|
143
|
+
SmartPrompt -.conforms.-> IAIso
|
|
144
|
+
SmartPrompt -.shares IAIso with.-> Cloud
|
|
145
|
+
SmartCheck -.conforms.-> IAIso
|
|
146
|
+
SmartCheck -.shares IAIso with.-> Cloud
|
|
147
|
+
SmartSeal -.conforms.-> IAIso
|
|
148
|
+
SmartSeal -.shares IAIso with.-> Cloud
|
|
149
|
+
SmartStandard -.conforms.-> IAIso
|
|
150
|
+
SmartStandard -.shares IAIso with.-> Cloud
|
|
151
|
+
SmartSim -.conforms.-> IAIso
|
|
152
|
+
SmartSim -.shares IAIso with.-> Cloud
|
|
153
|
+
SmartMoat -.conforms.-> IAIso
|
|
154
|
+
SmartMoat -.shares IAIso with.-> Cloud
|
|
155
|
+
SmartRoute -.conforms.-> IAIso
|
|
156
|
+
SmartRoute -.shares IAIso with.-> Cloud
|
|
157
|
+
SmartFeed -.conforms.-> IAIso
|
|
158
|
+
SmartFeed -.shares IAIso with.-> Cloud
|
|
159
|
+
IAIso -.governs.-> Cloud
|
|
160
|
+
classDef tool fill:#1c232d,stroke:#f5b83d,color:#efe9f5;
|
|
161
|
+
classDef std fill:#04121f,stroke:#46d6c8,color:#46d6c8;
|
|
162
|
+
classDef cloud fill:#1a1327,stroke:#a78bfa,color:#a78bfa;
|
|
163
|
+
style SmartFeed stroke-width:3px,stroke:#ff6b6b;
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- **SmartFeed feeds signals to SmartSim** →
|
|
167
|
+
- **SmartFeed feeds signals to SmartMoat** →
|
|
168
|
+
|
|
169
|
+
Open [`site/playground.html`](site/playground.html) for the interactive version.
|
|
170
|
+
|
|
171
|
+
## Part of the Smart* family
|
|
172
|
+
|
|
173
|
+
One system, not nine projects — same mascot, same manifesto voice, same rule-ID style,
|
|
174
|
+
all aligned to the [IAIso standard](https://github.com/SmartTasksOrg/IAIso). Each is an independent, open-source, single-purpose tool you can integrate into your own architecture:
|
|
175
|
+
|
|
176
|
+
| Tool | IAIso | What it does |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| [SmartPangolin](https://github.com/SmartTasksOrg/sf-smartpangolin) | §1 · Secure Sharing | Scan before you share. Stop leaking secrets into AI models, agents, and tools. |
|
|
179
|
+
| [SmartPrompt](https://github.com/SmartTasksOrg/sf-smartprompt) | §4 · Context | Lint before you send. Bad prompt in, bad work out — and it's your name on it. |
|
|
180
|
+
| [SmartCheck](https://github.com/SmartTasksOrg/sf-smartcheck) | §2 · Verification | Check before you sign off. Catch the AI when it's confidently wrong. |
|
|
181
|
+
| [SmartSeal](https://github.com/SmartTasksOrg/sf-smartseal) | §3 · Provenance | Seal what you ship. A signed receipt so anyone can verify what they received. |
|
|
182
|
+
| [SmartStandard](https://github.com/SmartTasksOrg/sf-smartstandard) | §7 · Standards | Standardize before you scale. One shared, auditable convention for AI-assisted work. |
|
|
183
|
+
| [SmartSim](https://github.com/SmartTasksOrg/sf-smartsim) | §8 · Foresight | Simulate before it hits you. See your role's task-by-task collapse sequence. |
|
|
184
|
+
| [SmartMoat](https://github.com/SmartTasksOrg/sf-smartmoat) | §6 · Workforce | Know your moat. Score the tasks AI can't easily take — and widen them. |
|
|
185
|
+
| [SmartRoute](https://github.com/SmartTasksOrg/sf-smartroute) | §5 · Orchestration | Route only what you trust. Gate agents and tools with trust scores and guardrails. |
|
|
186
|
+
|
|
187
|
+
**Backed by the standard:** SmartFeed implements **IAIso §9 · Awareness**.
|
|
188
|
+
**Open-source edition:** this repo is the simplified, single-purpose version, built for any org to integrate into its own architecture. SmartTasks' desktop app and [SmartTasks.cloud](https://smarttasks.cloud) run a more advanced, deeply-integrated implementation of the same IAIso governance — a separate product, not this code bundled.
|
|
189
|
+
|
|
190
|
+
## Who's behind this
|
|
191
|
+
|
|
192
|
+
- **Roen Branham** — CEO & AI Strategy Architect · CISSP-certified AI, security & governance architect; author of IAIso and sole inventor of the Z4 Semantic Fabric patent application. [LinkedIn](https://www.linkedin.com/in/roen-branham-167ab29/)
|
|
193
|
+
- **Le Vu Tanh** — CTO & Core Engineering Lead · Chief architect of the Cortex engine; large-scale system reliability and low-latency infrastructure — the engineer who ships what gets architected. [LinkedIn](https://www.linkedin.com/in/lee-thanh-76aa8ba0/)
|
|
194
|
+
|
|
195
|
+
The team behind IAIso & SmartTasks: a CISSP-certified security & governance architect
|
|
196
|
+
and a large-scale systems engineer — 20+ years shipping secure, AI-driven platforms for
|
|
197
|
+
regulated, blue-chip environments (Allianz, BMW, Rolls-Royce, Heidenhain).
|
|
198
|
+
|
|
199
|
+
<!-- SMARTTASKS-MODELS:START -->
|
|
200
|
+
## Runs on governed local models
|
|
201
|
+
|
|
202
|
+
Governed local models let you run the whole family offline.
|
|
203
|
+
|
|
204
|
+
This tool is local-first, so pair it with models you can actually vet. **SmartTasks** publishes 21+ governance-validated GGUF builds on Hugging Face — each with a machine-readable **scorecard** (capability tiers L1 Layman → L5 Agentic, IAIso conformance invariants (pass/warn/fail), OWASP-mapped garak red-team, transparency probes (viewpoint-alignment / over-refusal), and per-file SHA-256). Gate model selection on evidence, not vibes — and every finding, including warnings, is published in full.
|
|
205
|
+
|
|
206
|
+
→ **[SmartTasks on Hugging Face](https://huggingface.co/smarttasks)** · [Qwen3.6-27B](https://huggingface.co/smarttasks/Qwen3.6-27B-GGUF) (L5 agentic) · [react-agent-coder-llama-3.1-8b](https://huggingface.co/smarttasks/react-agent-coder-llama-3.1-8b-GGUF) (agentic coder) · [gpt-oss-20b](https://huggingface.co/smarttasks/gpt-oss-20b-GGUF) (open reasoning)
|
|
207
|
+
<!-- SMARTTASKS-MODELS:END -->
|
|
208
|
+
|
|
209
|
+
## Get in touch
|
|
210
|
+
|
|
211
|
+
- **Companies & enterprises:** [enterprise@smarttasks.cloud](mailto:enterprise@smarttasks.cloud) — we help
|
|
212
|
+
teams integrate SmartFeed + IAIso into their architecture so governance and
|
|
213
|
+
audit-readiness become a byproduct of how they already work.
|
|
214
|
+
- **The standard:** [IAIso](https://github.com/SmartTasksOrg/IAIso) · [iaiso.org](https://iaiso.org)
|
|
215
|
+
- **The product:** [SmartTasks.cloud](https://smarttasks.cloud)
|
|
216
|
+
|
|
217
|
+
Built by **SmartTasks Lab**. Apache-2.0. Contributions welcome.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
sf_smartfeed/__init__.py,sha256=4O4-5cDNf6JhlRxXfrBZmdCB51Ejd7PXW2OGDmKdF54,120
|
|
2
|
+
sf_smartfeed/__main__.py,sha256=bOBbee4WZgJa8UKtyRPx1Gh4HnevZ65DH-FjRypS-zo,50
|
|
3
|
+
sf_smartfeed/_version.py,sha256=EPmgXOdWKks5S__ZMH7Nu6xpAeVrZpfxaFy4pykuyeI,22
|
|
4
|
+
sf_smartfeed/cli.py,sha256=acBwyWiWtzMbREryULzibPf1o2VCOOmJONLXXaP-sSY,969
|
|
5
|
+
sf_smartfeed/core.py,sha256=-PSfYrv3tbXH87ePkKCvLMiau3Hhp2UNq5O_4a0BTyo,741
|
|
6
|
+
sf_smartfeed/models.py,sha256=lFwBhH0xQwG-oST3wdHXdQCSVVLhW96Jf8z-6IsjmqE,312
|
|
7
|
+
sf_smartfeed-3.0.0.dist-info/licenses/LICENSE,sha256=l-zqlRNnJz87KVVsPJSB8LAGxgSwxWBAqJ7xK4sFDTw,561
|
|
8
|
+
sf_smartfeed-3.0.0.dist-info/licenses/NOTICE,sha256=NremaKCamoM6D3J2l6tZRvQxhSBeb8-ejIo8neAn08c,543
|
|
9
|
+
sf_smartfeed-3.0.0.dist-info/METADATA,sha256=NtA3wNhjnMcdVi26nhOIZ45TKyOxBxGgM5ruNmwXZUA,11244
|
|
10
|
+
sf_smartfeed-3.0.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
11
|
+
sf_smartfeed-3.0.0.dist-info/entry_points.txt,sha256=eQl7awSQPp_q_PpDBQ7W-SK7DvuI8-i6jdlC1yD5vZc,55
|
|
12
|
+
sf_smartfeed-3.0.0.dist-info/top_level.txt,sha256=sih-KD6LtPg-T72TlcN1GG4SAo-VUPeiYwZIQhueMbE,13
|
|
13
|
+
sf_smartfeed-3.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Apache License 2.0
|
|
2
|
+
|
|
3
|
+
Copyright 2026 SmartTasks Lab
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
6
|
+
this file except in compliance with the License. You may obtain a copy at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
11
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
12
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
13
|
+
specific language governing permissions and limitations under the License.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
SmartFeed
|
|
2
|
+
Copyright 2026 SmartTasks Lab
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (see LICENSE).
|
|
5
|
+
|
|
6
|
+
Names and affiliation
|
|
7
|
+
---------------------
|
|
8
|
+
|
|
9
|
+
SmartFeed is published by SmartTasksOrg. The only package names it is
|
|
10
|
+
published under are those marked "registered": true in names.json.
|
|
11
|
+
|
|
12
|
+
SmartFeed here is not Fanout's "smartfeed" package on PyPI.
|
|
13
|
+
All other names are the property of their respective owners. Their use here
|
|
14
|
+
only says what the software reads, evaluates or connects to; it does not
|
|
15
|
+
imply affiliation, sponsorship or endorsement.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sf_smartfeed
|