README: typos
[diaspy.git] / Changelog.markdown
1 ## Changelog for `diaspy`, unofficial DIASPORA\* interface for Python
2
3 This 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
10 Deprecation means that in the next version feature will be removed.
11
12 Also, after every version there should be a brief note describing possible
13 problems with migrating to it from older versions and usage of new features.
14
15 Users can always read the manual and dcumentation to make themselves more knowledgeable and
16 are encouraged to do so. They only need to remember that documentation is usually more
17 up-to-date than manual and if conflicts appear they should follow the order:
18
19 *docstrings* -> *docs/* -> *manual/*
20
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
27
28 ----
29
30 #### Version `0.6.0`
31
32 In this release some bugs due to Diaspora changes where adressed, it also
33 contains some new functionality. Also if `BeautifulSoup4` is installed it
34 will use it instead of the regex solution where possible. Also some manual
35 adjustments.
36
37 IMPORTANT: `python-dateutil` is a requirement now.
38
39 Note: 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,
51 * __upd__: `tests.py`,
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,
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()`,
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,
77 * __rem__: `backtime` parameter removed from `diaspy.streams.Generic.more()`,
78 * __rem__: `protocol` parameter removed from `diaspy.people.User().fetchhandle()`.
79
80
81 ----
82
83
84 #### Version `0.5.0.1`
85
86 This is a hotfix release.
87 Plain 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
94 Release 0.5.0
95 This release fixes a bug that arose with Diaspora* 0.5.0 update which
96 changed the way how the CSRF tokens have been embedded in HTML code.
97 This required minor fix to the CSRF-extracting regex.
98
99 Not much besides. Fixed a typo or two.
100
101
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
112 ----
113
114 #### Version `0.4.2` (2013-12-19):
115
116 This version has some small incompatibilities with `0.4.1` so read Changelog carefully.
117
118 * __new__: `diaspy.people.User._fetchstream()` method,
119 * __new__: `diaspy.people.Me()` object representing current user,
120 * __new__: `**kwargs` added to `diaspy.streams.Generic.json()` methdo to give developers control over the creation of JSON,
121 * __new__: `.getHCard()` method added to `diaspy.people.User()`,
122
123
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),
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,
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()`,
131
132
133 * __rem__: `diaspy.connection.Connection.getUserInfo()` moved to `diaspy.connection.Connection.getUserData()`,
134 * __rem__: `fetch` parameter removed from `diaspy.connection.Connection.getUserData()`,
135
136
137 * __dep__: `max_time` parameter in `diaspy.streams.*.more()` method is deprecated,
138
139 * __fix__: this release should fix the bug which prevented diaspy from working with some pods (e.g. diasp.eu and joindiaspora.com),
140
141
142 ----
143
144 #### Version `0.4.1` (2013-09-12):
145
146 Login and authentication procedure backend received major changes in this version.
147 There are no longer `username` and `password` variables in `Connection` object.
148 Instead, credentials are stored (together with the token) in single variable `_login_data`.
149 This is preserved until you call `login()` at which point credentials are erased and
150 only token is left -- it can be obtained by calling `repr(Connection)`.
151
152 Also, this release is compatible with DIASPORA\* 0.2.0.0 but should still support
153 pods running on older versions.
154
155 And the test suite was updated. Yay!
156
157
158 * __new__: `diaspy.errors.SettingsError`.
159
160
161 * __upd__: `diaspy.settings.Account.setEmail()` can now raise `SettingsError` when request fails,
162 * __upd__: `diaspy.settings.Account.getEmail()` will now return empty string instead of raising an exception if cannot fetch mail,
163 * __upd__: improved language fetching in `diaspy.settings.Account.getLanguages()`.
164
165
166 * __rem__: `diaspy/client.py` is removed,
167
168
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
183 **`0.4.1-rc.2` (2013-09-06):**
184
185 * __new__: `diaspy.search.Search.tags()` method for getting tag suggestions,
186 * __new__: `diaspy.settings.Profile.getName()` method,
187 * __new__: `diaspy.settings.Profile.getBio()` method,
188 * __new__: `diaspy.settings.Profile.getLocation()` method,
189 * __new__: `diaspy.settings.Profile.getTags()` method,
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,
194 * __new__: `provider_display_name` parameter in `diaspy.streams.Stream.post()` (thanks @svbergerem),
195
196
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`,
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`,
201
202
203 * __rem__: `username` and `password` parameters removed from `diaspy.connection.Connection.login()`
204 must be supplied on init,
205
206
207 **`0.4.1-rc.1` (2013-09-02):**
208
209 * __new__: `__getitem__()` in `diaspy.models.Post`,
210 * __new__: `__dict__()` in `diaspy.models.Post`,
211 * __new__: `guid` argument in `diaspy.models.Post.__init__()`,
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`,
217 * __new__: `backtime` argument in `more()` method in `diaspy.streams.Generic`,
218 * __new__: `DiaspyError` will be raised when connection is created with empty password and/or username,
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,
221
222
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__()`),
225 * __upd__: `Search().lookup_user()` renamed to `Search().lookupUser()`,
226 * __upd__: `diaspy.messages` renamed to `diaspy.conversations` (but will be accessible under both names for this and next release),
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`,
230 * __upd__: `aspect_id` renamed to `id` in `diaspy.streams.Aspects().remove()`,
231
232
233 * __fix__: fixed some bugs in regular expressions used by `diaspy` internals (html tag removal, so you get nicer notifications),
234 * __fix__: fixed authentication issues,
235
236
237 ----
238
239 #### Version `0.4.0` (2013-08-20):
240
241 This release is **not backwards compatible with `0.3.x` line**! You'll have to check your code for corrections.
242 Also, 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
246
247 * __upd__: `diaspy.conversations` renamed to `diaspy.messages`,
248 * __udp__: `diaspy.conversations.Conversation` moved to `diaspy.models`,
249
250
251 * __new__: `diaspy.messages.Mailbox()` object representing diaspora\* mailbox,
252
253 ----
254
255 #### Version `0.3.2` (2013-08-20):
256
257 * __upd__: `diaspy.connection.getUserData()` raises `DiaspyError` when it cannot find user data,
258
259
260 * __rem__: `diaspy.client.Client` must be explicitly imported,
261
262 ----
263
264 #### Version `0.3.1` (2013-07-12):
265
266 * __upd__: `diaspy.people.sephandle()` raises `InvalidHandleError` instead of `UserError`
267 * __upd__: `models.Post()._fetch()` renamed to `_fetchdata()` (because of new `_fetchcomments()` method)
268
269
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
272 * __new__: `connection.Connection` has new parameter in `__init__()`: it's `schema`
273 * __new__: `author()` method in `models.Post()`
274
275
276 The new parameter in `connection.Connection` is useful when operating with handles.
277 As handle does not contain schema (`http`, `https`, etc.) `_setlogin()` would raise an
278 unhandled exception -- `requests.exceptions.MissingSchema`.
279 Now, however, `Connection` will catch the exception, add missing schema and try once more.
280 This parameter is provided to give programmers ability to manipulate it.
281
282 Also, now you can pass just `pod.example.com` as `pod` parameter. Less typing!
283
284 When it comes to posts, we are now able to fetch comments.
285
286 ----
287
288 #### Version `0.3.0` (2013-07-07):
289
290 First edition of Changelog for `diaspy`.
291 Developers should update their code as version `0.3.0` may not be fully
292 backwards compatible depending on how the code is written.
293 If you always pass named arguments and do not rely on their order you can, at least in
294 theory, not worry about this update.
295
296 Version `0.3.0` introduces few new features, fixes several bugs and brings a bit of
297 redesign and refactoring od `diaspy`'s code.
298
299