Commit Graph
3396 Commits
Author SHA1 Message Date
Stefan Wojcik 91899acfe5 Clarify unack'd write concern not returning the deleted count [ci skip] 2019-06-26 15:14:43 +02:00
Stefan WójcikandGitHub ffedd33101 Drop support for positional arguments when instantiating a document (#2103)
For example, if you had the following class:
```
class Person(Document):
    name = StringField()
    age = IntField()
```

You could instantiate an object of such class by doing one of the following:
1. `new_person = Person('Tom', 30)`
2. `new_person = Person('Tom', age=30)`
3. `new_person = Person(name='Tom', age=30)`

From now on, only option (3) is allowed.

Supporting positional arguments may sound like a reasonable idea in this
heavily simplified example, but in real life it's almost never what you want
(especially if you use inheritance in your document definitions) and it may
lead to ugly bugs. We should not rely on the *order* of fields to match a given
value to a given name.

This also helps us simplify the code e.g. by dropping the confusing (and
undocumented) `BaseDocument._auto_id_field` attribute.
2019-06-26 11:31:11 +02:00
Stefan Wojcik af292b0ec2 Bump version to v0.18.2 v0.18.2 2019-06-25 16:52:31 +02:00
Stefan Wojcik 1ead7f9b2b Add changelog entries for v0.18.2 2019-06-25 16:51:56 +02:00
Stefan Wojcik 5c91877b69 Fix the Travis deployment condition
See https://github.com/MongoEngine/mongoengine/issues/2104 for details.

For now I'm hardcoding `$MONGODB = 3.4.17` just to get a release out there,
but we should probably use the globals going forward. Will do that in
a follow-up commit once I get the `travis-conditions` gem up and running and
hence can test `.travis.yml` changes without deploying.
2019-06-25 16:48:51 +02:00
Stefan Wojcik e57d834a0d Fix automated tests for py3 2019-06-25 12:41:59 +02:00
Stefan Wojcik 0578cdb62e Cleaner loop using itertools.count() 2019-06-25 11:41:27 +02:00
Stefan Wojcik b661afba01 Use set comprehensions for existing_fields & existing_db_fields 2019-06-25 11:34:31 +02:00
Bastien GérardandGitHub b1002dd4f9 Merge pull request #2097 from bagerard/remove_deprecated_pymongo_methods
remove pymongo deprecated methods: find_and_modify & remove
2019-06-24 22:03:58 +02:00
Stefan Wojcik 8e69008699 Fill in the PR # in the changelog [ci skip] 2019-06-24 16:00:21 +02:00
Stefan Wojcik f45552f8f8 Drop support for positional arguments when instantiating a document
For example, if you had the following class:
```
class Person(Document):
    name = StringField()
    age = IntField()
```

You could instantiate an object of such class by doing one of the following:
1. `new_person = Person('Tom', 30)`
2. `new_person = Person('Tom', age=30)`
3. `new_person = Person(name='Tom', age=30)`

From now on, only option (3) is allowed.

Supporting positional arguments may sound like a reasonable idea in this
heavily simplified example, but in real life it's almost never what you want
(especially if you use inheritance in your document definitions) and it may
lead to ugly bugs. We should not rely on the *order* of fields to match a given
value to a given name.

This also helps us simplify the code e.g. by dropping the confusing (and
undocumented) `BaseDocument._auto_id_field` attribute.
2019-06-24 15:44:35 +02:00
Stefan Wojcik a4fe091a51 Cleaner code & comments in BaseField.__set__ 2019-06-21 13:51:53 +02:00
Stefan Wojcik 216217e2c6 Datastructures comments: fix typos and tweak formatting [ci skip] 2019-06-21 13:48:24 +02:00
Stefan Wojcik 799775b3a7 Slightly cleaner docstring of BaseQuerySet.no_sub_classes [ci skip] 2019-06-20 12:18:58 +02:00
Stefan WójcikandGitHub ae0384df29 Improve Document.meta.shard_key docs (#2099)
This closes #2096. Previous documentation of the shard_key meta attribute was
missing the crucial point that it really only matters if your collection is
sharded over a compound index.
2019-06-20 11:25:51 +02:00
Bastien Gérard 8f57279dc7 remove pymongo deprecated methods: find_and_modify & remove 2019-06-19 23:04:23 +02:00
Bastien GérardandGitHub e8dbd12f22 Merge pull request #2091 from bagerard/release_0_18_1
Bump version number and update changelog for 0.18.1
v0.18.1
2019-06-18 22:56:57 +02:00
Bastien Gérard ca230d28b4 fix typo in changelog 2019-06-18 22:18:10 +02:00
Bastien Gérard c96065b187 Merge branch 'master' of github.com:MongoEngine/mongoengine into release_0_18_1 2019-06-18 22:17:06 +02:00
Bastien Gérard 2abcf4764d minor fixes based on review of #2082 2019-06-18 22:15:53 +02:00
Stefan WójcikandGitHub bb0b1e88ef Split up custom PK field tests (#2095)
This more closely aligns with the rule that a single tests should test one
thing and one thing only. Previous code tested like 4 different things in a
single test and was hard to follow.
2019-06-18 15:43:46 +02:00
Bastien Gérard 63c9135184 Bump version number and update changelog for 0.18.1 2019-06-17 22:36:54 +02:00
Bastien GérardandGitHub 7fac0ef961 Merge pull request #2082 from divomen/v0.18.0_fix
Fix a big issue when determine if there is a new document
2019-06-17 22:30:18 +02:00
Bastien Gérard 5a2e268160 Add test case to prevent regression 2019-06-17 22:19:41 +02:00
Stefan Wojcik a4e4e8f440 Tweaks to the QuerySet.order_by docstring 2019-06-17 17:28:41 +02:00
Stefan Wojcik b62ce947a6 Cleaner mongoengine.connection.__all__ 2019-06-17 15:42:15 +02:00
Stefan Wojcik 9538662262 Slightly cleaner connection code 2019-06-17 15:34:11 +02:00
Stefan Wojcik 09d7ae4f80 More BaseDocument.__init__ documentation tweaks 2019-06-17 14:52:26 +02:00
Stefan Wojcik d7ded366c7 Document params expected by BaseDocument.__init__ [ci skip] 2019-06-17 14:37:14 +02:00
Stefan WójcikandGitHub 09c77973a0 Clean up how _changed_fields are set in BaseDocument._from_son (#2090) 2019-06-17 13:41:02 +02:00
Stefan Wojcik 22f3c70234 Fix PyMongo dependency in the readme [ci skip] 2019-06-17 09:41:41 +02:00
Stefan Wojcik 6527b1386f Benchmarks: Python 3 tweaks + more consistent testing of small vs big docs 2019-06-17 09:31:51 +02:00
Bastien Gérard baabf97acd Merge branch 'master' of github.com:MongoEngine/mongoengine into v0.18.0_fix 2019-06-16 10:52:44 +02:00
Bastien Gérard 97005aca66 set dist as xenial to avoid relying on flaky travis default dist 2019-06-15 13:49:37 +02:00
Bastien Gérard 6e8ea50c19 "added another aggregation test"
This reverts commit 4c31193b82.
2019-06-14 21:04:02 +02:00
Stefan Wojcik 1fcd706e11 Clearer docstring of Document._get_collection [ci skip] 2019-06-14 14:57:12 +02:00
Stefan Wojcik 008bb19b0b Add a test covering basic Document operations
It covers operations such as:
1. Document initialization.
2. Accessing/setting attributes on a Document instance.
3. Serializing a Document instance (via `to_mongo`).
4. Deserializing a Document instance (via `_from_son`).
5. Serializing + saving a Document in the database (via `save`).
5. Loading a Document from the database + deserializing (via `Doc.objects[0]`).

And it does so for both basic flat documents and more complex nested docs.
2019-06-14 11:59:41 +02:00
Stefan Wojcik 023acab779 Clean up benchmark.py and move it to benchmarks/test_inserts.py
1. Removes the cascade=save tests. It's not an option I'd recommend using AND
   it primarily matters if you have any reference fields in your document,
   which is not the case in this script.
2. Uses PyMongo-v3.x-style write concern.
3. Removes an old docstring describing some random benchmark run from the past.
4. Removes unused parts of the code.

I'll add more tests to the "benchmarks/" directory in future commits.
2019-06-14 11:59:41 +02:00
Bastien GérardandGitHub 5d120ebca0 Merge pull request #2058 from bagerard/improve_travis_yml
Improve travis yml + add python3.7 to travis
2019-06-13 23:20:15 +02:00
Bastien Gérard f91b89f723 remove dist:xenial as it recently became the default in travis 2019-06-13 23:07:25 +02:00
Bastien Gérard 1181b75e16 clean travis.yml 2019-06-13 22:50:19 +02:00
Bastien Gérard 5f00b4f923 refactor travis - mongo install and added python3.7 2019-06-13 22:50:19 +02:00
Bastien Gérard 4c31193b82 Revert "added another aggregation test"
This reverts commit d7285d43dd.
2019-06-13 20:53:56 +02:00
Dmitry Voronenkov 17fc9d1886 Fix a big issue when determine if there is a new document or we need to update.
With this issue all fields were update always (not only modified fields)
2019-06-13 19:58:44 +03:00
Bastien Gérard d7285d43dd added another aggregation test 2019-06-12 23:54:20 +02:00
Stefan Wojcik aa8a991d20 Try a different deployment condition
This time my attempt is based on the output found in another job that didn't
trigger a deployment: https://travis-ci.org/MongoEngine/mongoengine/jobs/544664203

```
/home/travis/.travis/job_stages: line 660: expected `)'
/home/travis/.travis/job_stages: line 660: syntax error near `AND'
/home/travis/.travis/job_stages: line 660: `  if [[ ($TRAVIS_REPO_SLUG = "MongoEngine/mongoengine") && ($TRAVIS_PYTHON_VERSION = 2.7) && ($PYMONGO = 3.x AND $MONGODB = 3.4) && ("$TRAVIS_TAG" != "") ]]; then'
```

See 80ca6360c1f3ea073e3fcb65070ded0558514ffa and
40ba51ac43 for my previous attempts.
v0.18.0
2019-06-12 12:19:36 +02:00
Stefan Wojcik 40ba51ac43 Try a different deployment condition
The previous one was a verbatim copy-paste of what TravisCI's Support suggested
to me, but sadly it didn't work. See
https://travis-ci.org/MongoEngine/mongoengine/jobs/544655132. That build
should've triggered a deployment.

This time I'm trying a different syntax, primarily influenced by
https://docs.travis-ci.com/user/conditions-v1#boolean-operators.
2019-06-12 12:08:11 +02:00
Stefan Wojcik d20430a778 Bump up waiting for MongoDB from 15s to 20s
I've noticed that `mongo --eval 'db.version()'` has been failing fairly
regularly in the last few weeks. Hopefully that extra 5s is enough.
2019-06-12 11:57:25 +02:00
Stefan Wojcik f08f749cd9 Bump version to v0.18.0 2019-06-12 11:47:31 +02:00
Stefan Wojcik a6c04f4f9a Finalize the v0.18.0 changelog [ci skip] 2019-06-12 11:38:58 +02:00