Add requirements for repeatable install
[diaspy.git] / Changelog.markdown
CommitLineData
4285c996 1## Changelog for `diaspy`, unofficial DIASPORA\* interface for Python
6d8d47ce
MM
2
3This changelog file follows few rules:
4
5* __rem__: indicates removed features,
6* __new__: indicates new features,
7* __upd__: indicates updated features,
8* __dep__: indicates deprecated features,
9
10Deprecation means that in the next version feature will be removed.
11
12Also, after every version there should be a brief note describing possible
13problems with migrating to it from older versions and usage of new features.
14
15Users can always read the manual and dcumentation to make themselves more knowledgeable and
16are encouraged to do so. They only need to remember that documentation is usually more
17up-to-date than manual and if conflicts appear they should follow the order:
18
19*docstrings* -> *docs/* -> *manual/*
20
b74513c5
MM
21----
22
23#### Known issues
24
25* __bug__: `diaspy` has problems/can't connect to pods using SNI (this is an issue with requests/urllib3/python),
26
6d8d47ce 27
6768a4e9
C
28----
29
c0c23006 30#### Version `0.6.0`
6768a4e9
C
31
32In this release some bugs due to Diaspora changes where adressed, it also
33contains some new functionality. Also if `BeautifulSoup4` is installed it
34will use it instead of the regex solution where possible. Also some manual
35adjustments.
36
37IMPORTANT: `python-dateutil` is a requirement now.
38
39Note: In this version indentation changed from spaces to tabs.
40
41
42* __upd__: `diaspy.people.User()`'s `fetchguid()` method can now be called with a parameter (`bool`), if set `False` it won't fetch the stream but only userdata, default it still does.,
43* __upd__: `diaspy.people.User()` has new methods `getPhotos()` and `deletePhoto()`,
44* __upd__: Aspect `id` is now removed from `diaspy.people.User()` object when removed,
45* __upd__: `diaspy.people.Contacts()` it's `get()` method has the `page` parameter now,
46* __upd__: It is now optional to automatic fetch contacts for `diaspy.people.Contacts()`, default it won't,
47* __upd__: `diaspy.models.Notification()`'s `who()` method now return whole `guid`s instead of partial `guid`s,
48* __upd__: Update `diaspy.models.Post()` it's interaction data after liked,
49* __upd__: `diaspy.connection.Connection()`'s `getUserData()` method will now set the `Connection()` object it's `self._userdata`,
50* __upd__: Posts obtained by `diaspy.streams.Generic()` are now fetched once instead of twice,
e5b83c4b 51* __upd__: `tests.py`,
6768a4e9
C
52
53
54* __fix__: Streams seemed to miss posts on `more()` method, should be fixed now. Also a new dependency: `dateutil`,
55* __fix__: Fixes `diaspy.streams.Generic()`'s `more()` and `update()` methods and adds `id` to posts,
56* __fix__: `diaspy.streams.Aspect()` its `filter()` method,
57* __fix__: `diaspy.models.Notification()`'s `who()` method it's regex pattern didn't always match, now it should,
58* __fix__: `diaspy.models.Aspect()` its `addUser()` method did cause CSRF errors,
59* __fix__: `diaspy.people.User()` its `getHCard()`,
60
61
62* __new__: `diaspy.errors.SearchError()` and `diaspy.errors.TagError()`,
63* __new__: `update()` and `more()` methods for `diaspy.notifications.Notifications`,
64* __new__: `removeAspect()` method in `diaspy.models.Aspect()`,
65* __new__: `diaspy.models.Comments()` class,
66* __new__: `diaspy.models.Conversation()` has new methods `messages()` and `update_messages()`, it is also posible to call `len()` and iterate over the object,
67* __new__: `diaspy.models.Post()`'s `comments` object is now a `Comments()` object instead of a `dict` (parsed json),
68* __new__: `diaspy.models.Post()` has some new methods: `vote_poll()`, `hide()`, `mute()`, `subscribe()` and `unsubscribe()`,
69* __new__: It is now possible to set `diaspy.people.User()` it's data manual by the `data` parameter,
70* __new__: `diaspy.people.Contacts()` has new methods `add()` and `remove()` wich can add/remove a user to/from an aspect,
71* __new__: Added BeautifulSoup4 (optional) support where possible instead of regex, kept regex as fallback,
c0c23006 72* __new__: `diaspy.connection.Connection().podswitch()` has now a optional param `login` with as default set to `True`, if `False` it will only set the data and does not call `login()`,
6768a4e9
C
73
74
75* __rem__: `_obtain()` from `diaspy.streams.Outer()`, it was the same as `_obtain()` in `diaspy.streams.Generic()`,
76* __rem__: `diaspy.models.Post()` its `update()` method since it is deprecated for a while now,
e5b83c4b
C
77* __rem__: `backtime` parameter removed from `diaspy.streams.Generic.more()`,
78* __rem__: `protocol` parameter removed from `diaspy.people.User().fetchhandle()`.
6768a4e9
C
79
80
81----
82
83
84#### Version `0.5.0.1`
85
86This is a hotfix release.
87Plain 0.5.0 lost compatibility with older versions of Diaspora* due to a trivial assignment-related bug.
88
89
90----
91
92#### Version `0.5.0`
93
94Release 0.5.0
95This release fixes a bug that arose with Diaspora* 0.5.0 update which
96changed the way how the CSRF tokens have been embedded in HTML code.
97This required minor fix to the CSRF-extracting regex.
98
99Not much besides. Fixed a typo or two.
100
101
03ffc9ea
MM
102----
103
104#### Version `0.4.3`:
105
106* __new__: `people.User().fetchprofile()` will issue a warning when user cannot be found on current pod,
107* __new__: `settings.Profile` is now loaded during initialization (can be switched off),
108
109* __fix__: fixed a bug in `__repr__()` method in `people.User()` object,
110
111
415337b6
MM
112----
113
f9ffc79f 114#### Version `0.4.2` (2013-12-19):
f8752360
MM
115
116This version has some small incompatibilities with `0.4.1` so read Changelog carefully.
415337b6
MM
117
118* __new__: `diaspy.people.User._fetchstream()` method,
f8752360 119* __new__: `diaspy.people.Me()` object representing current user,
6c692631 120* __new__: `**kwargs` added to `diaspy.streams.Generic.json()` methdo to give developers control over the creation of JSON,
39af9756 121* __new__: `.getHCard()` method added to `diaspy.people.User()`,
f8752360 122
415337b6 123
f3b7fd44
MM
124* __upd__: `diaspy.connection.Connection.login()` modifies connection object in-place **and** returns it (this allows more fluent API),
125* __upd__: `diaspy.connection.Connection.login()` no longer returns status code (if login was unsuccessful it'll raise an exception),
126* __upd__: `diaspy.connection.Connection._login()` no longer returns status code (if login was unsuccessful it'll raise an exception),
6c692631
MM
127* __upd__: better error message in `diaspy.models.Post().__init__()`,
128* __upd__: `data` variable in `diaspy.models.Post()` renamed to `_data` to indicate that it's considered private,
39af9756
MM
129* __upd__: after deleting a post `Activity` stream is purged instead of being refilled (this preserves state of stream which is not reset to last 15 posts),
130* __upd__: `filterByIDs()` method in `Aspects` stream renamed to `filter()`,
f3b7fd44 131
415337b6 132
39af9756
MM
133* __rem__: `diaspy.connection.Connection.getUserInfo()` moved to `diaspy.connection.Connection.getUserData()`,
134* __rem__: `fetch` parameter removed from `diaspy.connection.Connection.getUserData()`,
6c692631
MM
135
136
137* __dep__: `max_time` parameter in `diaspy.streams.*.more()` method is deprecated,
f8752360 138
f9ffc79f
MM
139* __fix__: this release should fix the bug which prevented diaspy from working with some pods (e.g. diasp.eu and joindiaspora.com),
140
f8752360 141
f61c14c1
MM
142----
143
dc64fad2 144#### Version `0.4.1` (2013-09-12):
f61c14c1 145
2cf8467c
MM
146Login and authentication procedure backend received major changes in this version.
147There are no longer `username` and `password` variables in `Connection` object.
148Instead, credentials are stored (together with the token) in single variable `_login_data`.
149This is preserved until you call `login()` at which point credentials are erased and
150only token is left -- it can be obtained by calling `repr(Connection)`.
151
73a9e0d3
MM
152Also, this release is compatible with DIASPORA\* 0.2.0.0 but should still support
153pods running on older versions.
154
155And the test suite was updated. Yay!
156
3def6e18 157
dc64fad2 158* __new__: `diaspy.errors.SettingsError`.
f50cbea3
MM
159
160
161* __upd__: `diaspy.settings.Account.setEmail()` can now raise `SettingsError` when request fails,
556f2745 162* __upd__: `diaspy.settings.Account.getEmail()` will now return empty string instead of raising an exception if cannot fetch mail,
dc64fad2
MM
163* __upd__: improved language fetching in `diaspy.settings.Account.getLanguages()`.
164
165
166* __rem__: `diaspy/client.py` is removed,
f50cbea3
MM
167
168
3def6e18
MM
169**`0.4.1-rc.3` (2013-09-08):**
170
171* __new__: `diaspy.settings.Profile.load()` method for loading profile information,
172* __new__: `diaspy.settings.Profile.update()` method for updating profile information,
173* __new__: `diaspy.settings.Profile.setName()` method,
174* __new__: `diaspy.settings.Profile.setBio()` method,
175* __new__: `diaspy.settings.Profile.setLocation()` method,
176* __new__: `diaspy.settings.Profile.setTags()` method,
177* __new__: `diaspy.settings.Profile.setGender()` method,
178* __new__: `diaspy.settings.Profile.setBirthDate()` method,
179* __new__: `diaspy.settings.Profile.setSearchable()` method,
180* __new__: `diaspy.settings.Profile.setNSFW()` method,
181
182
cf6a800f
MM
183**`0.4.1-rc.2` (2013-09-06):**
184
185* __new__: `diaspy.search.Search.tags()` method for getting tag suggestions,
b74513c5
MM
186* __new__: `diaspy.settings.Profile.getName()` method,
187* __new__: `diaspy.settings.Profile.getBio()` method,
188* __new__: `diaspy.settings.Profile.getLocation()` method,
f91374ce 189* __new__: `diaspy.settings.Profile.getTags()` method,
b74513c5
MM
190* __new__: `diaspy.settings.Profile.getGender()` method,
191* __new__: `diaspy.settings.Profile.getBirthDate()` method,
192* __new__: `diaspy.settings.Profile.isSearchable()` method,
193* __new__: `diaspy.settings.Profile.isNSFW()` method,
f91374ce 194* __new__: `provider_display_name` parameter in `diaspy.streams.Stream.post()` (thanks @svbergerem),
cf6a800f 195
3def6e18 196
a90eb458
MM
197* __upd__: `remeber_me` parameter in `diaspy.connection.Connection.login()`,
198* __upd__: you must supply `username` and `password` parameters on init of `diaspy.connection.Connection`,
b74513c5
MM
199* __upd__: you must update your testconf.py (new fields are required for settings tests),
200* __upd__: `diaspy.settings.Settings` renamed to `diaspy.settings.Account`,
a90eb458 201
3def6e18 202
a90eb458
MM
203* __rem__: `username` and `password` parameters removed from `diaspy.connection.Connection.login()`
204 must be supplied on init,
205
cf6a800f 206
73a9e0d3 207**`0.4.1-rc.1` (2013-09-02):**
2cf8467c 208
f61c14c1 209* __new__: `__getitem__()` in `diaspy.models.Post`,
fe783229
MM
210* __new__: `__dict__()` in `diaspy.models.Post`,
211* __new__: `guid` argument in `diaspy.models.Post.__init__()`,
f61c14c1
MM
212* __new__: `json()` method in `diaspy.streams.Generic` adds the possibility to export streams to JSON,
213* __new__: `full()` method in `diaspy.streams.Generic` will try to fetch full stream (containing all posts),
214* __new__: `setEmail()` method in `diaspy.settings.Settings`,
215* __new__: `setLanguage()` method in `diaspy.settings.Settings`,
216* __new__: `downloadPhotos()` method in `diaspy.settings.Settings`,
fe783229 217* __new__: `backtime` argument in `more()` method in `diaspy.streams.Generic`,
2cf8467c 218* __new__: `DiaspyError` will be raised when connection is created with empty password and/or username,
73a9e0d3
MM
219* __new__: `getSessionToken()` method in `diaspy.connection.Connection` returns string from `_diaspora_session` cookie,
220* __new__: `direct` parameter in `diaspy.connection.Connection().get()` allowing to disable pod expansion,
fe783229 221
3def6e18 222
fe783229
MM
223* __upd__: if `Post()` is created with fetched comments, data will also be fetched as a dependency,
224* __upd__: `id` argument type is now `int` (`diaspy.models.Post.__init__()`),
51ab5af5 225* __upd__: `Search().lookup_user()` renamed to `Search().lookupUser()`,
3a509ff5 226* __upd__: `diaspy.messages` renamed to `diaspy.conversations` (but will be accessible under both names for this and next release),
2cf8467c
MM
227* __upd__: `LoginError` moved to `diaspy.errors`,
228* __upd__: `TokenError` moved to `diaspy.errors`,
229* __upd__: `diaspy.connection.Connection.podswitch()` gained two new positional arguments: `username` and `password`,
73a9e0d3 230* __upd__: `aspect_id` renamed to `id` in `diaspy.streams.Aspects().remove()`,
f61c14c1 231
3def6e18
MM
232
233* __fix__: fixed some bugs in regular expressions used by `diaspy` internals (html tag removal, so you get nicer notifications),
5de52803 234* __fix__: fixed authentication issues,
f61c14c1
MM
235
236
1cff2093
MM
237----
238
4882952f
MM
239#### Version `0.4.0` (2013-08-20):
240
241This release is **not backwards compatible with `0.3.x` line**! You'll have to check your code for corrections.
242Also, this release if first to officially released fork version.
243
244* __dep__: `diaspy.client` is officially deprecated (will be removed in `0.4.1`),
245
3def6e18 246
4882952f
MM
247* __upd__: `diaspy.conversations` renamed to `diaspy.messages`,
248* __udp__: `diaspy.conversations.Conversation` moved to `diaspy.models`,
249
3def6e18 250
4882952f
MM
251* __new__: `diaspy.messages.Mailbox()` object representing diaspora\* mailbox,
252
253----
254
3def6e18 255#### Version `0.3.2` (2013-08-20):
1cff2093
MM
256
257* __upd__: `diaspy.connection.getUserData()` raises `DiaspyError` when it cannot find user data,
258
3def6e18 259
33735129
MM
260* __rem__: `diaspy.client.Client` must be explicitly imported,
261
615edb73
MM
262----
263
3def6e18 264#### Version `0.3.1` (2013-07-12):
615edb73
MM
265
266* __upd__: `diaspy.people.sephandle()` raises `InvalidHandleError` instead of `UserError`
63f1d9f1 267* __upd__: `models.Post()._fetch()` renamed to `_fetchdata()` (because of new `_fetchcomments()` method)
3def6e18
MM
268
269
313fb305
MM
270* __new__: `models.Comment()` object: wrapper for comments, not to be created manually
271* __new__: `comments` parameter in `models.Post`: defines whether to fetch post's commets
615edb73 272* __new__: `connection.Connection` has new parameter in `__init__()`: it's `schema`
313fb305 273* __new__: `author()` method in `models.Post()`
615edb73
MM
274
275
276The new parameter in `connection.Connection` is useful when operating with handles.
277As handle does not contain schema (`http`, `https`, etc.) `_setlogin()` would raise an
278unhandled exception -- `requests.exceptions.MissingSchema`.
279Now, however, `Connection` will catch the exception, add missing schema and try once more.
280This parameter is provided to give programmers ability to manipulate it.
281
282Also, now you can pass just `pod.example.com` as `pod` parameter. Less typing!
283
313fb305
MM
284When it comes to posts, we are now able to fetch comments.
285
6d8d47ce
MM
286----
287
3def6e18 288#### Version `0.3.0` (2013-07-07):
6d8d47ce 289
cf0105fb
MM
290First edition of Changelog for `diaspy`.
291Developers should update their code as version `0.3.0` may not be fully
292backwards compatible depending on how the code is written.
293If you always pass named arguments and do not rely on their order you can, at least in
294theory, not worry about this update.
295
296Version `0.3.0` introduces few new features, fixes several bugs and brings a bit of
297redesign and refactoring od `diaspy`'s code.
298
3def6e18 299