summaryrefslogtreecommitdiff
path: root/python-cachey.spec
blob: 9d9d7036825e5902866f1294ad98dc09287284cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
%global _empty_manifest_terminate_build 0
Name:		python-cachey
Version:	0.2.1
Release:	1
Summary:	Caching mindful of computation/storage costs
License:	BSD
URL:		http://github.com/dask/cachey/
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/c6/9c/e3c959c1601013bf8a72e8bf91ea1ebc6fe8a2305bd2324b039ee0403277/cachey-0.2.1.tar.gz
BuildArch:	noarch

Requires:	python3-heapdict

%description
Humans repeat stuff.  Caching helps.
Normal caching policies like LRU aren't well suited for analytic computations
where both the cost of recomputation and the cost of storage routinely vary by
one million or more.  Consider the following computations
```python
# Want this
np.std(x)        # tiny result, costly to recompute
# Don't want this
np.transpose(x)  # huge result, cheap to recompute
```
Cachey tries to hold on to values that have the following characteristics
1. Expensive to recompute (in seconds)
2. Cheap to store (in bytes)
3. Frequently used
4. Recenty used
It accomplishes this by adding the following to each items score on each access
    score += compute_time / num_bytes * (1 + eps) ** tick_time
For some small value of epsilon (which determines the memory halflife.) This
has units of inverse bandwidth, has exponential decay of old results and
roughly linear amplification of repeated results.

%package -n python3-cachey
Summary:	Caching mindful of computation/storage costs
Provides:	python-cachey
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-cachey
Humans repeat stuff.  Caching helps.
Normal caching policies like LRU aren't well suited for analytic computations
where both the cost of recomputation and the cost of storage routinely vary by
one million or more.  Consider the following computations
```python
# Want this
np.std(x)        # tiny result, costly to recompute
# Don't want this
np.transpose(x)  # huge result, cheap to recompute
```
Cachey tries to hold on to values that have the following characteristics
1. Expensive to recompute (in seconds)
2. Cheap to store (in bytes)
3. Frequently used
4. Recenty used
It accomplishes this by adding the following to each items score on each access
    score += compute_time / num_bytes * (1 + eps) ** tick_time
For some small value of epsilon (which determines the memory halflife.) This
has units of inverse bandwidth, has exponential decay of old results and
roughly linear amplification of repeated results.

%package help
Summary:	Development documents and examples for cachey
Provides:	python3-cachey-doc
%description help
Humans repeat stuff.  Caching helps.
Normal caching policies like LRU aren't well suited for analytic computations
where both the cost of recomputation and the cost of storage routinely vary by
one million or more.  Consider the following computations
```python
# Want this
np.std(x)        # tiny result, costly to recompute
# Don't want this
np.transpose(x)  # huge result, cheap to recompute
```
Cachey tries to hold on to values that have the following characteristics
1. Expensive to recompute (in seconds)
2. Cheap to store (in bytes)
3. Frequently used
4. Recenty used
It accomplishes this by adding the following to each items score on each access
    score += compute_time / num_bytes * (1 + eps) ** tick_time
For some small value of epsilon (which determines the memory halflife.) This
has units of inverse bandwidth, has exponential decay of old results and
roughly linear amplification of repeated results.

%prep
%autosetup -n cachey-0.2.1

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-cachey -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Sun Apr 23 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.1-1
- Package Spec generated