Commit Graph

101 Commits

Author SHA1 Message Date
Gergő Jedlicska 990cf4eb2f style(whole-project): fixing linting and typing errors 2022-12-20 10:45:22 +01:00
Gergő Jedlicska 6804282fac import ordering 2022-12-16 21:45:47 +01:00
Gergő Jedlicska a3a22a43d5 formatting fixes 2022-12-16 21:45:24 +01:00
Gergő Jedlicska 08aaa41b6c fix units 2022-12-16 21:45:04 +01:00
Gergő Jedlicska 7a46176803 additional test cases for type validation 2022-12-16 21:17:39 +01:00
Gergő Jedlicska 15636dbe62 rework type checking in base 2022-12-16 13:41:07 +01:00
Gergő Jedlicska e805b8ac6e style(all): sort imports with isort 2022-12-09 20:48:02 +01:00
Gergő Jedlicska c8808b07b3 fix(objects): update structural objects to better match core 2022-12-09 19:46:48 +01:00
Gergő Jedlicska 1a9b847c44 test(base): update base tests to properly test the speckle_type generation 2022-12-09 19:46:09 +01:00
Gergő Jedlicska e6b1604bc3 fix seed user redirects 2022-10-26 16:45:24 +02:00
Gergő Jedlicska de29b93b8b fix test ordering 2022-10-26 14:49:12 +02:00
Gergő Jedlicska ddd52f4af9 deprecate user resoure, add new active_user and other_user resources 2022-10-26 11:30:04 +02:00
Gergő Jedlicska ae7c4bc14d add host aplication implementation from sharp 2022-10-06 16:39:40 +02:00
Gergő Jedlicska 625bd5cd84 fixing path.unlink for py37 2022-09-27 15:13:29 +02:00
Gergő Jedlicska 361ba6bfcd fix stream wrapper matching on accounts with subdomain url-s 2022-09-26 20:15:45 +02:00
Gergő Jedlicska 0cfe5db674 reformat stuff, fix backwards compatible typing 2022-09-24 16:22:04 +02:00
Gergő Jedlicska 2f87956154 remove checking for the fetched users email 2022-09-24 16:09:47 +02:00
Gergő Jedlicska 6fc4ab1539 update tests 2022-09-23 17:09:25 +02:00
Gergő Jedlicska 7f432e768d Fix warnings about None type units being set on Base objects
Add proper units enum implementation

Co-authored-by: Alan Rynne <alan@speckle.systems>
Co-authored-by: Morten Engen <morten.engen@multiconsult.no>
2022-09-23 17:08:53 +02:00
izzy lyseggen 9fa6b661eb feat(client): stream invites (#202)
* chore: update dev container

* feat(client): add server version request

* docs(client): enhanced server version docstring

* test(client): sever version test

* test(base): type check for union type

* refactor(base): move _ attrs to `RegisteringBase`

* refactor: some light cleanup

* chore(container): add pylint line length

* feat(metrics): add "Invite Action"

* feat(client): pass server version to resources

* feat(models): pending stream collaborator model

* fix(client): do not parse if request res is null

* feat(exceptions): add unsupported exception

to distinguish for new invites as of server 2.6.4

* feat(client): add stream invite queries/mutations

* test(client): test stream invites

* feat(client): incorporate last invites changes
2022-07-26 17:58:46 +01:00
izzy lyseggen d1adccba00 feat(serialization): cache bases on deserialize (#200)
* feat(serialization): cache bases on deserialize

allows the deserializer to return the same instance when encountering
objects with the same id

closes #191

* feat(serialization): cache bases on deserialize

allows the deserializer to return the same instance when encountering
objects with the same id

closes #191

* fix(serialization): check before accessing id

obj may not be detached and therefore might not have an id

* feat(serializer): cache w id from obj not base

* chore: update deps

* feat(operations): lil send helper

on send, if `transports` is just a transport, add it to a list.
i see this error a lot so just a friendly lil fix!

* feat(objects): breps omg!

* test(geometry): updates for breps

* test(geometry): more brep serialization tests

* refactor(test): formatting

* style: formatting

* test(geometry): clean up test file

* fix(test): brep trims test fix

* refactor(geometry): clean up encoding outputs

* feat(objects): allow kwargs in encoding

* feat(objects): align curve encodings w sharp

* test(geometry): new curve encodings

* feat(client): update stream permission mutation

guess this changed some time recently and i wasn't made aware of it

* fix(objects): brep face and edge encoding

* fix(geometry): breps units 'none' fix

* test(objects): fix 'none' units issue

* revert(486ea99): use `streamGrantPermission`

to be updated for next server release
2022-07-20 18:02:25 +01:00
Reynold Chan 9e30250446 Create test_structural.py (#180) 2022-07-15 16:38:55 +01:00
Gergő Jedlicska 52ab27e60f SQLite write batching (#188)
### SUMMARY
**sqlite transport**

This transport now batches and bulk inserts objects when writing resulting in huge performance improvements (100x).

**base object serializer**

Batching in the sqlite transport necessitated some refactoring here in order to safely call end_write when not using operations.send/receive. This has been resolved by turning traverse_base into a wrapper for _traverse_base which can take care of calling begin/end_write and resetting the writer at the top level. This is not breaking since the top level methods to call have not changed names and the original method has just been prepended with a _

Additionally, missing referenced child objects in the read transport used to raise a SpeckleException. However, using the gql client to call objects.get() will return an object with missing references by design thus throwing an error in serialization. This has been resolved by instead raising a SpeckleWarning when child objects can't be found and just returning the reference + id. ((this method of interacting with objects is discouraged so it is not surprising to me that this bug was lurking for so long - but an oopsie nonetheless!))

**ci / dev**

Updates for the ci config and the dev container to work with the recent changes in server.

NOTE: dev container seems to be pulling an older version of server -- not resolved yet

---

* quick and hacky sqlite batching

* feat(transports): batching sqlite inserts

* chore: upgrade gql3

also removed py-spy as it's not used and i was getting install errors :/

* ci: bump node version

* ci: formatting

* update CI versions

* update to new circleci redis baseimage

* update test fixture auth to non deprecated token based method

* add start and finish write method calls to base object serialize

* chore: dev container update

* fix(serialization): move end and begin write

* style: formatting

* fix(serializer): warn but don't throw if ref not found

this is _not_ an issue with the transports, but an issue with using the
graphql api to fetch objects. since you are only receiving one obj and none of
the children, the transport has no way to find them and should simply
return the reference as is. idk why anyone would really use `object.get`
so tbh i'm not surprised no one has found this bug yet lol

* fix(client): don't parse obj create response

* fix(serializer): wrap `traverse_base`

moving `begin` and `end_write` to the seriazlier due to the new
sqlite transport with batched writes necessitates a wrapper around
`traverse_base` so end/begin write can be called once at the top level.
just adding begin/end write to the original traversal method would make
tons of calls to `end_write` since the traversal is recursive

Co-authored-by: izzy lyseggen <izzy.lyseggen@gmail.com>
2022-06-20 12:00:09 +01:00
izzy lyseggen 3a8121c306 feat(client): stream model update + favoriting (#185)
* feat(models): a quickie lil update

- adds fave and comment count
(mutations to come)
- adds source app to commit within stream query

* feat(client): add favorite mutation
2022-04-25 11:32:24 +01:00
izzy lyseggen 81a98ea938 feat(client): stream and user activity (#176)
* feat(models): `ActivityCollection` and `Activity`

* feat(client): stream activity method

* test(client): test for stream activity

* refactor(client): use datetime args for activity

* docs(client): clean up stream activity docstring

* feat/test(client): user activity
2022-03-23 17:34:10 +00:00
izzy lyseggen 9b387da77a feat(serialisation): enums (#175)
note that this won't re-serialise dynamic members as enums.
they will come back as ints for consistency w sharp

closes 🃏 Enum serialisation bug #174
2022-03-23 11:49:16 +00:00
izzy lyseggen a553c17c43 fix/test(serialization): null values in dicts (#168) 2022-02-24 11:31:04 +00:00
izzy lyseggen 944e70221e refactor(auth&metrics): use accounts everywhere and switch metrics (#166)
* feat(metrics): wip

* refactor(auth): use accts instead of tokens

* fix(wrapper): delayed auth bug

* refactor(memory): quick fix

* fix(creds): change incompatible py 3.8+ syntax

* feat(anatylics): updates tracking

* fix(credentials): catch when no accts

* fix(metrics): remove unused field

* feat(wrapper): raise exception for old import

* feat(analytics): consolidate names
2022-02-23 11:00:04 +00:00
izzy lyseggen ee55680b03 feat(objects): add and test Mesh.create() (#161) 2022-02-08 16:56:33 +00:00
izzy lyseggen f32196ce1b feat(client/ops): handle invalid token errors (#156)
* feat(client): validate token in `authenticate`

* feat(server transport): catch invalid token

* test(client/ops): error handling of invalid tokens

* feat(client): warning rather than exception
2022-01-21 16:32:33 +00:00
izzylys 1a9c95871f test(serializer): big int fix 2022-01-10 11:19:11 -08:00
izzy lyseggen 38ffbc27b7 test(units): goddamnit codecov 2021-12-22 09:06:28 +00:00
izzy lyseggen b6493df77f test(transform): serialisation and vector transform tests 2021-12-13 11:48:05 +00:00
izzy lyseggen 49eabdd712 test(objects): transform create w malformed input 2021-12-10 18:34:40 +00:00
izzy lyseggen 96a31f0678 test(objects): transform methods 2021-12-10 18:29:35 +00:00
izzy lyseggen 82c9d874c9 test(branches): server now returns main first 2021-11-17 16:11:22 +00:00
izzy lyseggen 9acf2c8a92 fix(wrapper): fix for nested branches 2021-11-17 15:59:51 +00:00
Gergő Jedlicska a89b12a02c remove receive server test 2021-10-27 19:16:08 +02:00
Gergő Jedlicska 15ae68f5d7 commit received implementation 2021-10-27 14:13:49 +02:00
izzy lyseggen b54e09f811 test: server transport & wrapper token auth 2021-10-21 12:20:09 +01:00
izzy lyseggen 8376329cbb fix(base): type check error with optional generics
reported by rob on the forum:
https://speckle.community/t/issue-with-type-checking-in-pyhton/1861
2021-10-14 15:41:30 +01:00
izzy lyseggen 9297a5df49 feat(metrics): disable in tests 2021-10-11 18:10:53 +01:00
AntoineDao 5c93e4f9dc test(geometry): rewrite tests so they can fail
I noticed that the Curv2D setter had a bug which wasn't caught by tests so I rewrote them to fail first
2021-09-19 10:08:28 +00:00
AntoineDao e20b9b73c9 fix(brep): update vertices and trim values serialization
It turns out that those are not serialized like the other list attributes... Which is not super helpful or consistent but oh well :D
2021-09-18 22:54:58 +00:00
AntoineDao 8fb03972d5 fix(serialization): fix some bugs I introduced by not testing before committing... 2021-09-18 11:29:00 +00:00
AntoineDao 02702190c9 fix(object): move array encoding from datachunk to its own class 2021-09-15 23:30:59 +01:00
AntoineDao d0f8f95e4e feat(brep): use list serializers 2021-09-12 17:43:12 +00:00
AntoineDao a6b19025e6 feat(base): add data chunk encoding/decoding methods
These are helpful to iterate over chunked lists of encoded geometry objects and decode them into base objects (and vice versa)
2021-09-12 17:38:56 +00:00
AntoineDao 2be82f0874 feat(geometry): add list encoding serialization
Most geometry objects can be encoded and decoded from list of floats that look like protobuffs in C#. This commit simply reproduces those methods
2021-09-12 17:36:40 +00:00
izzy lyseggen 7dd5b7a2a1 test(base): type checks 2021-08-24 12:11:46 +01:00