Scenes Example isn't Recognizing Vec3 Type

Bevy version
I just pulled down main yesterday.
What you did
I ran the bevy scene example with cargo run --example scene.
What went wrong
I get this error and it prevents any of the data in the ron file from being uploaded.
WARN bevy_asset::asset_server: encountered an error while loading an asset: No registration found for glam::vec3::Vec3
If I delete the transform component from the ron file then things seem to work as usual and I get
2022-08-19T15:50:03.689570Z  INFO scene:   Entity(3)
2022-08-19T15:50:03.689615Z  INFO scene:     ComponentA: { x: 3 y: 2 }

2022-08-19T15:50:03.689641Z  INFO scene:   Entity(4)
2022-08-19T15:50:03.689652Z  INFO scene:     ComponentA: { x: 3 y: 4 }

This is because the scene file is using the incorrect type name. It should be glam::f32::vec3::Vec3 not glam::vec3::Vec3.

This isn't something that should be caught by CI?

Do we document that scenes shouldn't be used across compiler versions - I can't find this documented anywhere?
If not, we shouldn't be using type_name anyway.
Frankly, this is the first time I've looked at our reflect code, and I'm slightly horrified by our gung-ho usage of type_name.

To my knowledge, type_name is our best and only option when it comes to identifying a type across compiler versions.
We could mitigate this by adding CI to detect type_name changes early and couple that with either an alias database or migration tools. Not a full solution, but probably would work pretty well in practice, given how rare rustc-driven type_name changes are. This is literally the first time this has come up, and it may have been because glam actually changed their module path.
The alternatives (manually defining TypeUuid on every reflected type, parsing rust files in a pre-build step and generating our own ids, etc) are not reasonable in the context of "reflect everything". Thats a level of complexity I'm not willing to foist on users.
@DJMcNab called out that module_path exists, which might work for our scenarios. When I wrote Bevy Reflect, I wasn't aware of that api. However it doesn't handle the name of the type itself (which would need to either be extracted from type_name or within the Reflect proc macro).  Notably, the macro approach won't handle generic type names properly. Theres also the question of the static lifetime, which could be lost if we need runtime string ops.
So yeah, if we can find a "better" path, we should take it. But at the time, type_name was the only real viable option from my perspective. And from my perspective, its still our best option.
@PROMETHIA-27 had an idea on discord that might work though!

Potential solution for a PR:

use the module_path macro, which provides a stable module path
create a new trait, ReflectTypeName, which has a function type_name() to return the module-path-qualified type name, with generic parameters
this trait gets derived alongside Reflect, so no extra derives needed.
For simple types, it just returns module_path + the ident of the type name
For generic types, it returns module_path + ident of the type name + <ReflectTypeName of each parameter>

To do this, it also needs to put a constraint on each parameter to implement ReflectTypeName

Upsides:

Perfectly stable
Allows us to completely forgo type_name()

Downsides:

No lifetimes are represented in the type names (meh)
Reflect is now even more infectious. Any type parameters to a reflected type must be reflect as well in order for that type to have a reflectable type name. Maybe introduce a #[only_reflect_name] helper macro in the case that something needs a ReflectTypeName impl but can't be reflected fully?

Actually, even if we do find a better path forward, if we continue using type names / module paths as identifiers, we should do a dump of the default Bevy type registry for the last stable version, compare that to a dump of the type registry for main, and have some sort of policy around defining aliases / migrations.

ReflectTypeName

I think I like this. It also has the benefit (or downside, depending on your perspective), of enabling library authors to define their own type_names. Ex: maybe they don't want to deal with migrations when the module changes, so they make it return my_lib::MyType instead of my_lib::some::path::MyType. It would open to doors to unstructured names like BlAH@blah blah, but we could add validation if we really want to.
If this is a pattern we want to encourage, we could add a convenience to the Reflect derive like:
#[derive(Reflect)]
#[reflect_type_name("my_crate::Foo")]
struct Foo {
}

We could also use that to "force" good / short / stable type names for core types (ex: Vec3 instead of glam::f32::vec3::Vec3)

Although thats also what the short_name system was designed for. We might still want to encourage module-like paths for ReflectTypeName, then use short_name where appropriate.


Account Balance: proper types to fit all possible amounts

@lrettig @avive
I want to ensure that the huge coin amounts can fit in the uint64 type, that is used now to represent the account Balance type.
To answer this main question, I think we have to answer these questions:

What is the limit for the total amount of coins?
If there is no limit, what is the inflation plan, when the emission of coins become such small, that it almost can not meet the maximum value of the type?

So, if the total amount of coins is very much more than 18,446,744,073,709,551,615 Smidge (18446744.073709551615 SMH). I can assume, that someday there might appear a rich guy (especially if the market cost of such amount of Smesh will not strive for infinity), that owns such amount or more and he still should be able to receive payments.
If there exists at least a smallest possibility that it is really possible, I think that we have to use a different type to store Balance (*big.Int) and, as a consequence, we should change Amount type in types.proto to something more spacious than just uint64.
P.S.
Balance type now: https://github.com/spacemeshos/go-spacemesh/blob/746c085fbf1a85c0226d5e82212a1113efb60320/common/types/account_state.go
Pay attention to the comment "TODO" in the file above. It was a BigInt some time ago: https://github.com/spacemeshos/go-spacemesh/issues/2192

I thought about it a little and came to the opinion, that they should be returned as strings.
Here are the pros:

the implementation of big numbers on the client-side (Smapp / Smrepl / something else) will not depend on the implementation of big numbers on the "back-end" (is it big-endian, little-endian, what part is an exponent, and so on)
it is human-readable by default

As a con, I see only one thing: worse optimization.
It includes conversion from/to string and validating that number >= 0 && number <= uint256.MAX_VALUE.

I thought about it a little and came to the opinion, that they should be returned as strings.
Here are the pros:

the implementation of big numbers on the client-side (Smapp / Smrepl / something else) will not depend on the implementation of big numbers on the "back-end" (is it big-endian, little-endian, what part is an exponent, and so on)
it is human-readable by default

As a con, I see only one thing: worse optimization.
It includes conversion from/to string and validating that number >= 0 && number <= uint256.MAX_VALUE.

I think that we should not use strings to represent amounts. One of the reasons we chose to use grpc over http-json for the api is that grpc supports binary data natively and we should use binary fields for all numerical data in a consistent way. Clients should be able to easily create a big number from an UInt8Array / [u8] data so it is best to use string just for display... The BigInt / BigNumber libs are pretty standard by now across platforms but we don't even need for these libs to be compatible with each other because what we pass over the API is basically binary data that represents a big unsigned int. We just need to agree on the Endians when encoding/decoding to/from big numbers.  Please look at https://docs.ethers.io/v5/api/utils/bignumber/ lib - might be more suitable for amount than the built-in js bignum which I previously recommended. There's some interesting info here: https://docs.ethers.io/v5/api/utils/bignumber/#BigNumber--BigNumber--notes--why-not-bignumber-js-bn-js-bigdecimal-etc

BTW, looks like our website has an outdated plan on economics:
https://spacemesh.io/resources#faq-does-spacemesh-have-a-fixed-token-cap

Yup, thanks for the reminder, we will update this shortly!
On Tue, 31 Aug 2021 at 05:36, Kirill Shumilov @.***>
wrote:

BTW, looks like our website has an outdated plan on economics:
https://spacemesh.io/resources#faq-does-spacemesh-have-a-fixed-token-cap
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/spacemeshos/go-spacemesh/issues/2718#issuecomment-909154292,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZJWNEXMKFAI3FBZNOCMBDT7S5DJANCNFSM5CZNR7JQ
.

We are going to use uint64 for amounts.
In order to support this, we're going to reduce the divisibility of each coin from 1e18 to 1e9 (for context, each bitcoin is divisible to 1e8 satoshis).
This means that each SMH will now be worth 1,000,000,000 smidges. We'll have a maximum of 2.4 bn SMH, or  2.4 quintillion (1e18) smidges.
Maximum number of smidges: 2,400,000,000,000,000,000
Max uint64:               18,446,744,073,709,551,615

This has been discussed with @avive and @lrettig. If we missed anything and there's another issue - let me know.

Seems this issue is not actual anymore and we're using the proper data type.
So I'm closing it. If I miss something — feel free to fix me and reopen the issue ;)


[BUG] Filter Steve WebSocket errors.

Rancher Server Setup

Rancher version: v2.7
Installation option (Docker install/Helm Chart): Any

Information about the Cluster

Kubernetes version: NA
Cluster Type (Local/Downstream): N/A

User Information

What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom)

If custom, define the set of permissions: N/A

Describe the bug
Steve was updated to send errors encountered when creating events to the frontend via resource.error messages.
Some of these errors are expected and harmless and thus should be suppressed and not sent to the frontend.

clusters.provisioning.cattle.io "<resource_name" not found.
These errors are caused by steve attempting to stream information about related resources that may or may not still exist.
If the resource does not exist the message should be suppressed. Steve Code

unable to decode an event from the watch stream: http2: response body closed
These messages are sent when Steve closes the WebSocket via context cancelation. Resulting in the underlying k8s decoder for the watch command failing to read a valid object.  apimachinery already checks for some of these types of error messages here, but does not handle this one since it is specific to the watch command
Related to: https://github.com/rancher/rancher/issues/40558

To Reproduce

Start a new rancher server
Inspect the WebSocket traffic for v1/subscribe
Create a new project  and then delete the project

Result
Users observe the above error messages.
Expected Result
users observe new resource stop and start messages

Screenshots

Additional context

Users often quote these when providing logs / reporting issues and can really muddy the water. Hiding or downgrading them would help a lot


DistilBert / XLM

Hi,
Thanks for this great library. Coming from the FastAI course, it looks so familiar and easy to use! Great job. I was wondering if you could add some new models, especially the DistilBert one from HuggingFace that seems lighter and 60% faster to train than BERT while keeping 97% of BERT's power according to their paper.
XLM From Facebook seems also a to be a great cross-lingual model : https://github.com/facebookresearch/XLM#ii-cross-lingual-language-model-pretraining-xlm
Thank you!

@kinoute  Yes, the plan is to integrate HuggingFace models into ktrain eventually.    I'd like to add ALBERT, too.  Thanks for your comment.

As of v0.8.x, ktrain includes a thin wrapper to  the Hugging Face transformers library  for text classification:
import ktrain
from ktrain import text
MODEL_NAME = 'distilbert-base-uncased'
t = text.Transformer(MODEL_NAME, maxlen=500, classes=train_b.target_names)
trn = t.preprocess_train(x_train, y_train)
val = t.preprocess_test(x_test, y_test)
model = t.get_classifier()
learner = ktrain.get_learner(model, train_data=trn, val_data=val, batch_size=6)
learner.fit_onecycle(3e-5, 4)

TF versions of some of the models seem to produce errors in v2.3.0 of transformers.  There are to-be-released patches for some problems in the PRs on Hugging Face's GitHub but not for others.  The  distilbert-base-uncased model does work, though, and trains in half the time as BERT.   See the tutorial notebook for usage instructions.
The English distilbert model can also be accessed using the conventional API, as shown here.


SlPolicy typo

Hello,
The SlPolicy tool has a typo in SiPolicy.cpp on line 107.
"SShell" should be "Shell" for the query to succeed (tested on RS2).
Thanks for a cool utility 👍

Thanks, will fix.

Fixed


How to implement validation / disaster recovery?

The problem I am facing
I am noticing I sometimes get corrupted documents where certain properties are missing, this is a hard error and results in total loss of work. To combat this I would like to validate my updates being received by clients and optionally do nothing (and tell the sending client to reset their state).
While I would like to fix the underlying issue and not have documents corrupted ever I also would like some resiliency to this as it is somewhat inevitable that bugs like this find their way in.
Given I have a method for validating the JSON representation of my document this is how the flow would work in YJS:

Turn GC off on document

Take snapshot of document

Apply update

Validate JSON representation of document

If invalid, revert document to snapshot

Turn GC back on (sidenote: is there some way to kick off a GC check now as this looks like it may never GC as its always off when the update is applied?)

The solution I would like
I can't see any way of fitting this flow into @hocuspocus/server at the moment as there is no method of listening in to both before and after an update is applied or method of preventing an update being sent to other clients.
Something that does the above would be great but I am open to suggestions on alternatives. The issue I can see with snapshots is I think currently the only methods available are to create a new document out of that snapshot. Which would require replacing the in memory document and telling connected clients to reset their state 🤔
Alternatives I have considered
The above assumes validation on every change, which I don't think should be a problem with a precompiled validation function using something like https://github.com/ajv-validator/ajv. However an alternative flow is to do validation when persisting to long term storage and resetting the server and client state to the last valid one from long term storage when an invalid document is received.
This would look something like:

Debounced validation in onChange

If validation fails, reset the document and force open clients to do the same.

Currently I am preventing corrupted documents being saved into long term storage but am lacking a way of force restarting the server and currently connected clients.

@mjamesderocher just stumbled on this thread. I released a similar proxy layer here: https://syncedstore.org/ (specifically in this package: https://github.com/YousefED/SyncedStore/tree/main/packages/yjs-reactive-bindings)

Hi all!
Just wanted to see if this is still current and what would be an expected behavior / feature of Hocuspocus. How exactly do documents get "corrupted"? Is this always connected with Tiptap, or do the yjs docs itself break?
If the issues are related to Tiptap, I'd assume that this has to be solved on the user-side (so if Tiptap<>Hocuspocus, by Tiptap (as the issue is the same if you just store the tiptap json a regular database), see also https://github.com/ueberdosis/tiptap/issues/3437.
We could support on Hocuspocus side by adding a feature that requires a specific client version before allowing a connection, but this is also something that can be easily implemented already using an onConnect or onAuthenticate hook.
LMK what you think, if this should be solved on user-side, I'll close this.

@janthurau
I don't think this should be solved user-side, it should be a function of the library (Hocuspocus and Collab). So for example, the two main areas are:

Preventing the document from getting into a bad state by checking before invalid changes are merged. This happens when two editors with the same node extension type, but different implementations of that same type, sync with each other. What should happen is that changes should be reverted to the previous valid state.
If the document has invalid data for nodes (because maybe the document is malformed, or the current extension for that node is incompatible with the data in the doc which was based off an older extension), then gracefully catching these errors and giving an interface to take that data and produce a new valid node. Currently, TipTap seems to eat up the old node irreversibly such that even if you revert to an older version of the extension, the node still doesn't show. So this is functionally the same as data corruption. Until there's a version history extension to be able to revert to older document states, your old data is essentially unaccessible (even though technically it's still there in the form of the binary deltas).

I don't believe this is a y.js problem. Rather, the syncing is perfect, but the issue is that TipTap doesn't handle the evolution of existing nodes gracefully. When TipTap parses these nodes, it'll do something dodgy and then perfectly propagate the corrupted version of the file through Collab.

@kongweiying2, thanks for your thoughts on this.
What you describe mainly concerns your very individual editor setup with your custom nodes. Hocuspocus does not know how your editor setup looks like and therefore cannot check if it is corrupt.
If, then hocuspocus will only offer a general solution, as described above, an onValidate hook, or as described by Jan, a version field.
But as Jan also described, this could be caught already in the onConnect hook. An individual editor schema has to be validated client-side. Especially since Hocuspocus is not a tiptap editor-only collaboration backend. :)
Open for more suggestions.

Would love to see an onValidate hook added for this. I'd find it useful to be able to at least terminate connections if my own custom validation logic within Hocuspocus determines that a state update is invalid before persisting/sharing that update to other clients.


fail to export better bibtex

Debug log ID
WP3UBB65-euc/6.7.238-7
What happened?
I am trying to export a collection to a bibtex file, a white bar appear at the center but no file is written. The white bar remains until I restart zotero

What path are you trying to export to? I'm seeing an "invalid path" error.
Also, what version of Zotero are you on? Your log says 7.0, mine say 7.0.6. Please make sure you're on the latest version of Zotero.

What path are you trying to export to? I'm seeing an "invalid path" error.

I am try to export to my home directory (/Users/cleung). I have no issue exporting with exporting a zotero built-in bibtex to the same directory.

Also, what version of Zotero are you on? Your log says 7.0, mine say 7.0.6. Please make sure you're on the latest version of Zotero.
Yes I am using 7.0.6

If it helps, I tried to downgrade Better Bibtex to 6.7.236 and it can successfully export to bibtex file.

Nothing that changed between those versions would explain this.
I'm not seeing any export activity in WP3UBB65-euc/6.7.238-7. Can you recreate the problem and send a new log?

Z5ZSN67Q-euc/6.7.238-7 is the log before exporting.
H3JYF94W-euc/6.7.238-7 is after I tried to export.

Your logs now do say you're on 7.0.6. Strange. WP3UBB65-euc has multiple places where it reports being on 7.0.
What BBT translator are you using? I'm still seeing no export activity in H3JYF94W-euc/6.7.238-7, nor do I see any errors, so something must be (silently, which is weird) going wrong before the BBT translator kicks in. A new build will drop here, please install that, recreate the problem, then send a new log. It will give me more insight on what BBT is doing at the time you started the export.

Your logs now do say you're on 7.0.6. Strange. WP3UBB65-euc has multiple places where it reports being on 7.0.

It is possible zotero updated itself between the two logs

What BBT translator are you using?

better bibtex

I'm still seeing no export activity in H3JYF94W-euc/6.7.238-7, nor do I see any errors, so something must be (silently, which is weird) going wrong before the BBT translator kicks in. A new build will drop here, please install that, recreate the problem, then send a new log. It will give me more insight on what BBT is doing at the time you started the export.

Let's hope this one will give us more information 4W4IMZX3-euc/<IP_ADDRESS>98-7

Here is the new log QCV4JXBA-euc/<IP_ADDRESS>01-7

Could this be related to issue #3001 ?

Thank you for your work. Here is the new log: H5694XFG-euc/<IP_ADDRESS>07-7

I tried the test build ...7107 and when loading a pop-up came up saying "blocked", but it appears to be loaded.  I tried exporting and got an error dialog that said an error occurred during export.  See log: 4IQCNLEH-fio-2bODeBcCiL0G.  More info also from the Error console:
14:33:57.677 NS_ERROR_NOT_AVAILABLE [better-bibtex.js:109219](jar:file:///home/seth/.zotero/zotero/jzd3acam.default/extensions/better-bibtex@iris-advies.com.xpi!/content/better-bibtex.js)
14:34:05.250 No citation key in {"version":3,"itemType":"journalArticle","title":"Breaking the filter bubble: democracy and design","abstractNote":"It has been argued that the Internet and social media increase the number of available viewpoints, perspectives, ideas and opinions available, leading to a very diverse pool of information. However, critics have argued that algorithms used by search engines, social networking platforms and other large online intermediaries actually decrease information diversity by forming so-called “filter bubbles”. This may form a serious threat to our democracies. In response to this threat others have developed algorithms and digital tools to combat filter bubbles. This paper first provides examples of different software designs that try to break filter bubbles. Secondly, we show how norms required by two democracy models dominate the tools that are developed to fight the filter bubbles, while norms of other models are completely missing in the tools. The paper in conclusion argues that democracy itself is a contested concept and points to a variety of norms. Designers of diversity enhancing tools must thus be exposed to diverse conceptions of democracy.","date":"2015-12-18","language":"En","shortTitle":"Breaking the filter bubble","libraryCatalog":"link.springer.com","url":"https://link.springer.com/article/10.1007/s10676-015-9380-y","accessDate":"2024-09-22T23:39:27Z","rights":"2015 The Author(s)","extra":"","volume":"17","pages":"249-265","publicationTitle":"Ethics and Information Technology","DOI":"10.1007/s10676-015-9380-y","issue":"4","ISSN":"1572-8439","creators":[{"firstName":"Engin","lastName":"Bozdag","creatorType":"author"},{"firstName":"Jeroen","lastName":"van den Hoven","creatorType":"author"}],"tags":[],"collections":["WRKEDJBS"],"relations":{},"dateAdded":"2024-09-22T23:47:03Z","dateModified":"2024-09-22T23:47:03Z","uri":"http://zotero.org/groups/5674905/items/SPVDCHUT","attachments":[{"version":5,"itemType":"attachment","title":"Full Text PDF","url":"https://link.springer.com/content/pdf/10.1007/s10676-015-9380-y.pdf","accessDate":"2024-09-22T23:39:28Z","parentItem":"SPVDCHUT","linkMode":"imported_url","contentType":"application/pdf","charset":"","filename":"Bozdag and van den Hoven - 2015 - Breaking the filter bubble democracy and design.pdf","tags":[],"relations":{},"dateAdded":"2024-09-22T23:47:03Z","dateModified":"2024-09-22T23:47:03Z","uri":"http://zotero.org/groups/5674905/items/JNE3IDZ3","localPath":"/home/seth/Zotero/storage/JNE3IDZ3/Bozdag and van den Hoven - 2015 - Breaking the filter bubble democracy and design.pdf"}],"notes":[],"$cacheable":false,"extraFields":{"raw":{"number":"4","publisher":"Springer"},"kv":{"number":"4","publisher":"Springer"},"creator":{},"creators":[],"tex":{},"citationKey":"","aliases":[]},"citationKey":""} [better-bibtex.js:139967](jar:file:///home/seth/.zotero/zotero/jzd3acam.default/extensions/better-bibtex@iris-advies.com.xpi!/content/better-bibtex.js)
14:34:05.270 No citation key in {"version":3,"itemType":"journalArticle","title":"Breaking the filter bubble: democracy and design","abstractNote":"It has been argued that the Internet and social media increase the number of available viewpoints, perspectives, ideas and opinions available, leading to a very diverse pool of information. However, critics have argued that algorithms used by search engines, social networking platforms and other large online intermediaries actually decrease information diversity by forming so-called “filter bubbles”. This may form a serious threat to our democracies. In response to this threat others have developed algorithms and digital tools to combat filter bubbles. This paper first provides examples of different software designs that try to break filter bubbles. Secondly, we show how norms required by two democracy models dominate the tools that are developed to fight the filter bubbles, while norms of other models are completely missing in the tools. The paper in conclusion argues that democracy itself is a contested concept and points to a variety of norms. Designers of diversity enhancing tools must thus be exposed to diverse conceptions of democracy.","date":"2015-12-18","language":"En","shortTitle":"Breaking the filter bubble","libraryCatalog":"link.springer.com","url":"https://link.springer.com/article/10.1007/s10676-015-9380-y","accessDate":"2024-09-22T23:39:27Z","rights":"2015 The Author(s)","extra":"","volume":"17","pages":"249-265","publicationTitle":"Ethics and Information Technology","DOI":"10.1007/s10676-015-9380-y","issue":"4","ISSN":"1572-8439","creators":[{"firstName":"Engin","lastName":"Bozdag","creatorType":"author"},{"firstName":"Jeroen","lastName":"van den Hoven","creatorType":"author"}],"tags":[],"collections":["WRKEDJBS"],"relations":{},"dateAdded":"2024-09-22T23:47:03Z","dateModified":"2024-09-22T23:47:03Z","uri":"http://zotero.org/groups/5674905/items/SPVDCHUT","attachments":[{"version":5,"itemType":"attachment","title":"Full Text PDF","url":"https://link.springer.com/content/pdf/10.1007/s10676-015-9380-y.pdf","accessDate":"2024-09-22T23:39:28Z","parentItem":"SPVDCHUT","linkMode":"imported_url","contentType":"application/pdf","charset":"","filename":"Bozdag and van den Hoven - 2015 - Breaking the filter bubble democracy and design.pdf","tags":[],"relations":{},"dateAdded":"2024-09-22T23:47:03Z","dateModified":"2024-09-22T23:47:03Z","uri":"http://zotero.org/groups/5674905/items/JNE3IDZ3","localPath":"/home/seth/Zotero/storage/JNE3IDZ3/Bozdag and van den Hoven - 2015 - Breaking the filter bubble democracy and design.pdf"}],"notes":[],"$cacheable":false,"extraFields":{"raw":{"number":"4","publisher":"Springer"},"kv":{"number":"4","publisher":"Springer"},"creator":{},"creators":[],"tex":{},"citationKey":"","aliases":[]},"citationKey":""} [better-bibtex.js:139967](jar:file:///home/seth/.zotero/zotero/jzd3acam.default/extensions/better-bibtex@iris-advies.com.xpi!/content/better-bibtex.js)

That's all in H5694XFG-euc/<IP_ADDRESS>07-7. I'm looking into it.

I wanted to comment to say that I'm having what seems to be a very similar issue.
Debug log: IP4I3DRY-euc/6.7.238-7
My campus IT department forced me to upgrade Zotero today (now I'm on 7.0.6) and I also get stuck on an "Exporting Items" screen.

This new test build works for me. And the new log is K2GNSYGE-euc/<IP_ADDRESS>10-7

The test build ...7110 worked for me.

Build ...7113 worked as well.

Build 7113 works for me as well. Log: 6JS2D24W-euc/<IP_ADDRESS>13-7

Please also try 7115 and 7116 (latter will drop in a bit)

Build 7115 does not work for me. I got a stuck progress bar. Log: HDRRXS4G-euc/<IP_ADDRESS>15-7

That confirms one problem then. I think 7116 will work, but that leaves the one change that's not in 7116 which I need to figure out.

Build 7116 does not work for me log AN899SWP-euc/<IP_ADDRESS>16-7.

Build 7117 works for me. Log: 8GMHIZZ6-euc/<IP_ADDRESS>17-7

Build 7118 works for me. New Log:H5G7NCJJ-euc/<IP_ADDRESS>18-7

It also works for me.

Build 7121 works for me. Log: 5R5KCMNJ-euc/<IP_ADDRESS>21-7

Wow so I have found the problem and that was the very last place I suspected. Glaringly obvious now that I know. Release is going out now.

thanks for helping figure this out.

Thank you for your work. This just shows how important BBT is important to a lot of people.


GEODE-194: Remove spark connector

Remove the spark connector code until it can be updated
for the current spark release. We should also integrate
the build lifecycle and consider how to extract this into
a separate reo.
Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[X] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[X] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[X] Is your initial contribution a single, squashed commit?

[X] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

Looks good to me


Create integration test suite and migrate appropriate tests from unit test suite #590

@notmessenger adding more to this pr, please re-frame from reviewing it for now.

@juwara0 can you please review this? thanks :)

I have started reviewing this.

Comments from the review on Reviewable.io

Reviewed 1 of 2 files at r3, 1 of 1 files at r4.
Review status: all files reviewed at latest revision, 26 unresolved discussions.

tests/integration/components/sl-input-test.js, line 25 [r4] (raw file):
We do not need this assertion since we are not passing this property. For now, we are only concerned with positive assertions in the default test.

tests/integration/components/sl-input-test.js, line 31 [r4] (raw file):
We do not need this assertion since we are not passing this property. For now, we are only concerned with positive assertions in the default test.

tests/integration/components/sl-input-test.js, line 37 [r4] (raw file):
We do not need this assertion since we are not passing this property. For now, we are only concerned with positive assertions in the default test.

tests/integration/components/sl-input-test.js, line 43 [r4] (raw file):
We do not need this assertion since we are not passing this property. For now, we are only concerned with positive assertions in the default test.

tests/integration/components/sl-input-test.js, line 49 [r4] (raw file):
We do not need this assertion since we are not passing this property. For now, we are only concerned with positive assertions in the default test.

tests/integration/components/sl-input-test.js, line 64 [r4] (raw file):
We need to add an assert for the form-control class https://github.com/softlayer/sl-ember-components/blob/EmberCli-1.13.8/addon/templates/components/sl-input.hbs#L18 and https://github.com/softlayer/sl-ember-components/blob/EmberCli-1.13.8/addon/components/sl-input.js#L218

tests/integration/components/sl-input-test.js, line 102 [r4] (raw file):
We do not need to do this render or the assert below to check that text-info is not set. Just render the template with the property being set and verify that the class gets applied.

tests/integration/components/sl-input-test.js, line 115 [r4] (raw file):
Please break this into two assertions one verifying that there is a class .text-info and the other one can be this one.

tests/integration/components/sl-input-test.js, line 124 [r4] (raw file):
We do not need to do this render or the assert below to check that text-danger is not set. Just render the template with the property being set and verify that the class gets applied.

tests/integration/components/sl-input-test.js, line 137 [r4] (raw file):
Please break this into two assertions one verifying that there is a class .text-danger and the other one can be this one.

tests/integration/components/sl-input-test.js, line 180 [r4] (raw file):
We do not need to do this render or the assert below to check that help-block is not set. Just render the template with the property being set and verify that the class gets applied.

tests/integration/components/sl-input-test.js, line 193 [r4] (raw file):
Please break this into two assertions one verifying that there is a class .help-text and the other one can be this one.

tests/integration/components/sl-input-test.js, line 207 [r4] (raw file):
Lets change this text to be more descriptive.   Maybe say 'Placeholder text is rendered'

tests/integration/components/sl-input-test.js, line 230 [r4] (raw file):
We also need to have a test for suggestionNamePath: https://github.com/softlayer/sl-ember-components/blob/EmberCli-1.13.8/tests/dummy/app/templates/demos/sl-input.hbs#L214

tests/integration/components/sl-input-test.js, line 234 [r4] (raw file):
Need to change this to: this.$( '>:first-child' ).find( '.twitter...

tests/integration/components/sl-input-test.js, line 239 [r4] (raw file):
Need to change this to: this.$( '>:first-child' ).find( '

tests/integration/components/sl-input-test.js, line 244 [r4] (raw file):
Need to change this to: this.$( '>:first-child' ).find( '

tests/integration/components/sl-input-test.js, line 249 [r4] (raw file):
Need to change this to: this.$( '>:first-child' ).find( '

tests/integration/components/sl-input-test.js, line 254 [r4] (raw file):
Need to change this to: this.$( '>:first-child' ).find( '

tests/unit/components/sl-input-test.js, line 42 [r4] (raw file):
This change should be reverted.

tests/unit/components/sl-input-test.js, line 44 [r4] (raw file):
This change should be reverted.

tests/unit/components/sl-input-test.js, line 56 [r4] (raw file):
This change should be reverted.

tests/unit/components/sl-input-test.js, line 57 [r4] (raw file):
This change should be reverted

tests/unit/components/sl-input-test.js, line 188 [r4] (raw file):
please removed the extra space... this.subject({

tests/unit/components/sl-input-test.js, line 192 [r4] (raw file):
This change should be reverted.

tests/unit/components/sl-input-test.js, line 195 [r4] (raw file):
This change should be reverted.

Comments from the review on Reviewable.io


Prepare release 0.4.0

Summary
Move release notes to 0.4 dir.
Bump version to 0.4.0.
Details and comments
Fixes #

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.09%) to 67.563%

Totals

Change from base Build<PHONE_NUMBER>:
0.09%

Covered Lines:
2637

Relevant Lines:
3903

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.09%) to 67.563%

Totals

Change from base Build<PHONE_NUMBER>:
0.09%

Covered Lines:
2637

Relevant Lines:
3903

💛  - Coveralls


Android: Redraw the footer to match iOS

* Add button on left
* Manage/settings button on right

Done in #720.


Drone lands itself after a few seconds without command

Im finding my drone will land itself and start flashing red light (even when battery is 100%) after a few seconds of being in the air without a command. It will ignore any further commands until it has landed but is still sending through status updates. Is anybody else finding this?

Yeah this is a safety feature. I bet you can just run battery? To get around this

Ah I had a feeling that might be the case and was wondering if that would be an easy fix for it. Ill give it a go. Thanks for the super fast response Wes, love the vid and code btw.


Classes

Created a class Person :
Instance vars: @id, @name, and @age.
Constructor with name, age, and parent_permission as parameter. name and parent_permission are optional and have default values of "Unknown" and true.
Getters for @id, @name, and @age.
Setters for @name and @age.
Private method is_of_age? that returns true if @age is greater or equal to 18 and false otherwise.
Public method can_use_services? that returns true if person is of age or if they have permission from parents.

Created class Student :
Inherits from Person.
Constructor extends parent's constructor by adding @classroom and a parameter for it.
Method play_hooky that returns "¯\(ツ)/¯".

Created class Teacher:
Inherits from Person.
Constructor extends parent's constructor by adding @specialization and a parameter for it.
Override can_use_services? so it always returns true.
Each class should be saved in a separate file.

@thanks for the review @VICTOR-CHUKWU

@VICTOR-CHUKWU  Thank you for reviewing my project.


Appointment feature

Codecov Report
Base: 67.34% // Head: 66.83% // Decreases project coverage by -0.50% :warning:

Coverage data is based on head (4ba387d) compared to base (1d0853c).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff              @@
##             master      #12      +/-   ##
============================================
- Coverage     67.34%   66.83%   -0.51%
  Complexity      464      464
============================================
  Files            86       89       +3
  Lines          1574     1586      +12
  Branches        194      194
============================================
  Hits           1060     1060
- Misses          444      456      +12
  Partials         70       70

Impacted Files
Coverage Δ

...a/seedu/address/model/appointment/Appointment.java
0.00% <0.00%> (ø)

...edu/address/model/appointment/PastAppointment.java
0.00% <0.00%> (ø)

...address/model/appointment/UpcomingAppointment.java
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Logging: Add arg for only_once

Add an arg to all the log methods that let you only log the message once.
This would provide a standardised way to implement what I did for #138.
Doing this may depend on implementing #140 first.
Related:

#138
#140

Closed by #210


Changes in readme for testing purpose

Creating a PR which will conflict once you will merge your changes.
Would like to understand how will I resolve the conflict after that point and get my PR merged?

Ignore this if it impacts flow of your lecture.


Improve testing by disabling animations

Description
Possibility to disable animations/transitions globally. It can be done for:

test only (e.g. by mocking components)
for tests and production app (e.g. by properties in NativeBaseProvider)

Problem Statement
Currently when testing some components (e.g. Modals), we can get the following error:
Warning: An update to [
      'ForwardRef',
      '\n' +
        '    at /Users/.../node_modules/native-base/lib/commonjs/components/composites/Transitions/Transition.tsx:69:7\n' +
...
inside a test was not wrapped in act(...).

    When testing, code that causes React state updates should be wrapped into act(...):

    act(() => {
      /* fire events that update state */
    });
    /* assert on the output */

    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act%s

It happens because after final check in tests (e.g. assert that text is visible or hidden), the components are still changing the state, e.g. Modal is hiding, or Toast is disappearing.
Proposed Solution or API

Provide mocks for components that use animations/transitions or have side effects.
Add global configuration to use in NativeBaseProvider and adjust components

Alternatives
As proposed on Discord:

add setTimeout to every test:

describe("test",() => {
    it("works", done => {
        const component = mount(<HelloWorld />);
        setTimeout(() => {
            expect(component.find(p).text()).toEqual("Hello World");
            done();
        }, 500);
    })
})

Adjust theme:

_fade={{ entryDuration: 0, exitDuration: 0 }}
_backdrop={{ entryDuration: 0, exitDuration: 0 }}
 _backdropFade={{ entryDuration: 0, exitDuration: 0 }}

But I'm not sure if both of them are solving it completely. Also we need to answer if this is a good approach.
Until it is solved properly maybe this workaround can be added to documentation in testing section.
Additional Information
No response

Hi @klekowskim, Thanks for your feature request. We will do internal POC and let you know.


savetheplanet command

Relevant Issues

Closes #171
Description

I've created a Cog (SaveThePlanet) and a JSON file (save_the_planet.json). In the init method, the JSON is loaded and turned into a discord embed object from the dict. Then the embed objects are added to a global list of embeds. The Cog has a command (.savetheplanet) to respond with a random one of those embeds.
Reasoning

I think this implementation will have the fastest responses to the command, and makes it easy to add new responses.
Screenshots

Still TO-DO

Add more responses to the save_the_planet.json
Run pipenv run lint

Did you:

[x] Join the Python Discord Community?
[x] If dependencies have been added or updated, run pipenv lock?
[x] Lint your code (pipenv run lint)?
[x] Set the PR to allow edits from contributors?

Because of these your checks are failing
bot/exts/easter/save_the_planet.py:2:1: I100 Import statements are in the wrong order. 'from pathlib import Path' should be before 'from discord.ext import commands' and in a different group.
bot/exts/easter/save_the_planet.py:2:1: I201 Missing newline between import groups. 'from pathlib import Path' is identified as Stdlib and 'from discord.ext import commands' is identified as Third Party.
bot/exts/easter/save_the_planet.py:3:1: I201 Missing newline between import groups. 'from discord import Embed' is identified as Third Party and 'from pathlib import Path' is identified as Stdlib.
bot/exts/easter/save_the_planet.py:4:1: I100 Import statements are in the wrong order. 'import random' should be before 'from discord import Embed' and in a different group.
bot/exts/easter/save_the_planet.py:4:1: I201 Missing newline between import groups. 'import random' is identified as Stdlib and 'from discord import Embed' is identified as Third Party.
bot/exts/easter/save_the_planet.py:5:1: I100 Import statements are in the wrong order. 'import json' should be before 'import random'
bot/exts/easter/save_the_planet.py:9:1: E302 expected 2 blank lines, found 1
bot/exts/easter/save_the_planet.py:15:1: D102 Missing docstring in public method
bot/exts/easter/save_the_planet.py:23:1: E302 expected 2 blank lines, found 1
bot/exts/easter/save_the_planet.py:24:1: D202 No blank lines allowed after function docstring
bot/exts/easter/save_the_planet.py:29:121: E501 line too long (124 > 120 characters)

Hello @ChrisGallardo, thanks for the PR! Although, can you run pipenv run precommit on your local copy to enable the precommit hook and automagically lint the files locally?

Because of these your checks are failing
bot/exts/easter/save_the_planet.py:2:1: I100 Import statements are in the wrong order. 'from pathlib import Path' should be before 'from discord.ext import commands' and in a different group.
bot/exts/easter/save_the_planet.py:2:1: I201 Missing newline between import groups. 'from pathlib import Path' is identified as Stdlib and 'from discord.ext import commands' is identified as Third Party.
bot/exts/easter/save_the_planet.py:3:1: I201 Missing newline between import groups. 'from discord import Embed' is identified as Third Party and 'from pathlib import Path' is identified as Stdlib.
bot/exts/easter/save_the_planet.py:4:1: I100 Import statements are in the wrong order. 'import random' should be before 'from discord import Embed' and in a different group.
bot/exts/easter/save_the_planet.py:4:1: I201 Missing newline between import groups. 'import random' is identified as Stdlib and 'from discord import Embed' is identified as Third Party.
bot/exts/easter/save_the_planet.py:5:1: I100 Import statements are in the wrong order. 'import json' should be before 'import random'
bot/exts/easter/save_the_planet.py:9:1: E302 expected 2 blank lines, found 1
bot/exts/easter/save_the_planet.py:15:1: D102 Missing docstring in public method
bot/exts/easter/save_the_planet.py:23:1: E302 expected 2 blank lines, found 1
bot/exts/easter/save_the_planet.py:24:1: D202 No blank lines allowed after function docstring
bot/exts/easter/save_the_planet.py:29:121: E501 line too long (124 > 120 characters)

I think I've fixed it, but GitHub Desktop is telling me it's failing and it won't let me commit.

What is your username on discord @ChrisGallardo? 😄

This is what it told me:
Commit failed - exit code 1 received, with output: 'Check for merge conflicts................................................Passed
Check Toml...........................................(no files to check)Skipped
Check Yaml...........................................(no files to check)Skipped
Fix End of Files.........................................................Passed
Mixed line ending........................................................Passed
Trim Trailing Whitespace.................................................Passed
check blanket noqa.......................................................Passed
Flake8...................................................................Failed
- hook id: flake8
- exit code: 1

Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.

'flake8' is not recognized as an internal or external command,
operable program or batch file.'

But when I run pipenv run lint I get
Check for merge conflicts................................................Passed
Check Toml...............................................................Passed
Check Yaml...............................................................Passed
Fix End of Files.........................................................Passed
Mixed line ending........................................................Passed
Trim Trailing Whitespace.................................................Passed
check blanket noqa.......................................................Passed
Flake8...................................................................Passed

Hello @ChrisGallardo, thanks for the PR! Although, can you run pipenv run precommit on your local copy to enable the precommit hook and automagically lint the files locally?

That's what @Xithrius told me to do on #dev-contrib and so that's what I did.

I'm trying making the changes here on GitHub.

Woohoo finally figured out this linting business

Now I need to add more responses

@gustavwilliam I addressed your suggestions in a43a650e57093f2154f073ecc703f2a7bf274659

My changerequests seems to have been done something about, I'm pleased to accept when other requests have been addressed

Should I make a new PR for more responses?

@ChrisGallardo Yes, that'd be fine.


Bounds for dependencies seem incorrect

The Cabal file for replace-megaparsec states simply that megaparsec is a dependency, but that seems incorrect: in fact, versions of megaparsec will have to at least be >= 7.0.0 to work.
This because the code for replace-megaparsec uses the anySingle function, introduced in megaparsec 7.0.0.
Thus, the Cabal file should give the dependency as:
    , megaparsec >= 7.0.0

(The bounds might in fact be tighter than that; I haven't checked whether megaparsec 7.0.0 will in fact work.)

thanks for making this issue! ill check it out.

thanks for making this issue! ill check it out.

Done


Setup vaadin-messages-flow

The project should be initialized in https://github.com/vaadin/vaadin-flow-components/ repository.

Create a new feature branch for this component, can be named e.g. feature/messages.
Setup branch protection rules for the feature branch (require review and CI before merging etc.)
Init vaadin-messages-flow project by copying some simple component (e.g. vaadin-progress-bar-flow), trimming it from all the features and renaming all the modules/classes/things. The first component class of the module should be MessageList.

PR https://github.com/vaadin/vaadin-flow-components/pull/632


Modular Insurance Eligibility

This PR adds custom modular eligibility inputs to Synthea that allow users to easily dictate eligibility criteria for different insurance companies.
Input Modular Eligibility File
There is a new csv eligibilities input file (/resources/payers/insurance_eligibilities.csv) in which you can dictate criteria. It's important to note that changing the columns in this file is not just changing some constants in the code, it's actually creating a new algorithm for each row.
This is an example of what the eligibility input file looks like when defining Medicare/Medicaid/Dual Eligible. The csv file allowed for the removal of baked-in Medicare/Medicaid from Synthea. Their eligibilities are completely defined within this file:

Name
…
Age Threshold
Qualifying Codes
Qualifying Attributes
Poverty Multiplier File
Spenddown File
Acceptance Likelihood
Sub-Eligibilities
Logical Operator

Social Security Disability

ssd_eligibility.csv

0.9

Standard Medicare

65

end_stage_renal_disease = true

Social Security Disability
or

Standard Medicaid

blindness = true
Payers/ medicaid_income_eligibilities.csv
Payers/ medicaid_mnil_eligibilities.csv

or

Standard Dual Eligible

Standard Medicare | Standard Medicaid
and

insurance_eligibilities.csv
You can modify existing eligibility criteria or create your own. If you wanted to slightly modify Medicaid to use its same eligibility criteria plus add a new minimum income multiplier threshold of 2.0, you could create a new row where the Sub Eligibility is Standard Medicaid and the Poverty Multiplier is 2.0 with the Logical Operator set to or. That's all it takes! Similarly to this, you can see how Medicare was defined using Social Security Disability as a Sub Eligibility. Again, this was used when defining Dual Eligible by and-ing the StandardMedicare and StandardMedicaid eligibility algorithms.
Using the Sub Eiligibilty column also allows for complex nesting of and/or logic on top of reusing existing logic.
See Current Eligibility Column Options for more details one what each column attribute dictates.
The way this system is set up, it makes it easy for a programmer to extend the column types available. However, a better goal would be feature-completeness to where that would not be necessary (which it may be at/almost at).
This is the Insurance Companies input file, where the eligibilities can be defined using Eligibility Algorithms:

Name
…
States Covered
Ownership
Eligibility Algorithm

Medicare

*
Government
StandardMedicare

Medicaid

*
Government
StandardMedicaid

Dual Eligible

*
Government
StandardDualEligible

Private

*
Private
Generic

VAHealthCare

*
Government
VeteranEligibility

Current Eligibility Column Options
I've bolded the most interesting columns

Poverty Multiplier: A basic static federal poverty multiplier income threshold.
Income Threshold: A basic static income threshold. This is technically redundant due to the qualifying_attributes column, though I think it's worth having as a more user-friendly and common option.
Age Threshold: A basic age threshold. It is also technically redundant for the same reason as above.
Qualifying Codes: A set of condition codes that would make the person eligible for that algorithm. It can either be input as a set of codes separated by | such as 4545454|7878787. Or you could input a file with a list of eligible codes, such as with ssd_eligibility.csv.
Qualifying Attributes: A set of attributes and logical operators that would make the person eligible for that algorithm. You can input it as: attribute operator value. It supports <,<=,>,>=,=,!=. It can either be input as a set of attributes separated by | such as pregnant = true|a1c <= .05. Or you could input a file with a list of eligible attribute logics as in test_attributes_eligibilities.csv. It is very particular in that the attribute, operator, and value must be separated by exactly one space. I couldn't find a better solution that works with and without spaces.
Poverty Multiplier File: A file that allows more complex by-state and by-age income multiplier thresholds. An example is medicaid_eligibility.csv.
Spenddown File: A file that dictates by-state medical spenddown limits to become eligible for health insurance. One example is Medically Needy Income Limits (MNIL), a Medicaid program that allows non-income eligible people to enroll in Medicaid if they "spend down" on health costs to a certain level. medicaid_eligibility.csv includes the by-state Medicaid implementation of this. https://www.medicaid.gov/medicaid/eligibility/index.html#:~:text=Medically Needy,-States have the option to
Acceptance Likelihood: A simple factor that dictates the 0.0-1.0 likelihood that a person may be accepted. For example, Social Security Disability may reject up to 10% of eligible applicants, etc.
Sub-Eligibilities: Allows the use of previously defined eligibility algorithms in a new algorithm. To use multiple, separate with |.
Logical Operator: A simple operator that dictates whether the eligibility attributes in that algorithm must all be satisfied (and) or just one (or).

Notes:

This PR replaces #1010 (Payer Updates) because it includes all commits in that PR.
There are lots of files changed in this PR. However, many are trivial changes (one line, method name change, package change, etc.) and several are due to the Medicare/Medicaid eligibilities being split into modular pieces each with its own file.

@RobertScalfani can you rebase this PR and fix the conflicts?

Got the merge conflicts resolved. However, I do have some concerns about the Claim costs logic, particularly assignCosts() in Claim.java.
I previously found that many of the cost related tests in PayerTest.java seemed to be flawed because they were inconsistently treating what the different claim attributes did (deductible, coinsurance, pocket, payer, etc.). So I renamed the claim attributes in an attempt to improve that. I also found that there were lots of post-processing on the claim's attributes, so I updated it to pre-process those and keep them in new attributes (coinsurancePaidByPatient, coinsurancePaidByPayer, etc.). I also updated the assignCosts() logic itself in an attempt to remove nested if's and make it more readable. It was just difficult for me to parse through it when debugging and updating the failing costs tests.
Having said that, I'm concerned that this new logic could be wrong/incomplete because of my lack of knowledge regarding claims. I know lots of claims updates have been made to Synthea and I don't want to be stepping on and overwriting anything. I am particularly concerned with how those claim attribute are dealt with in the BB2RIFExporter.java.
Making note of this so we can track it and look deeper at it.
It may turn out that it would be just easier to revert this back to how it was before, though there were those odd test inconsistencies that would need to be resolved. I'll look deeper into this once I'm back on the 26th.

Hey @RobertScalfani - Jay and I provided comments throughout. Let us know when you can get these addressed and when we should take another pass at reviewing.

Reviewing this now... reminder that you should ALWAYS use git mv when you want to move files to new or different packages. Just moving the file to different folders without using git mv destroys the history of that file.

Reviewing this now... reminder that you should ALWAYS use git mv when you want to move files to new or different packages. Just moving the file to different folders without using git mv destroys the history of that file.

Actually, it looks like GitHub webpages preserves this... but strangely, my git client doesn't recognize it and show me the history. 🤔

Reviewing this now... reminder that you should ALWAYS use git mv when you want to move files to new or different packages. Just moving the file to different folders without using git mv destroys the history of that file.

Good to know, thanks. Will do in future

@eedrummer this PR looks good to me... were there any other outstanding changes you wanted to see?

I'm seeing two issues:

There is a whitespace check style rule violation that should be fixed
I'm getting a repeatable test failure, but I realize that it seems to be building fine in CI.

Here is the failure I keep getting:
org.mitre.synthea.world.agents.PayerTest > receiveMedicareAgeEligible FAILED
    java.lang.RuntimeException: Person does not have insurance for age P46Y11M24D at time -726451200000.
        at org.mitre.synthea.world.concepts.healthinsurance.CoverageRecord.incomeRemaining(CoverageRecord.java:373)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.IncomeSpenddownEligibility.isPersonEligible(IncomeSpenddownEligibility.java:73)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.lambda$convertToLogic$9(CSVEligibility.java:127)
        at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:632)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.lambda$convertToLogic$9def446d$1(CSVEligibility.java:126)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.isPersonEligible(CSVEligibility.java:67)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.lambda$convertToLogic$10(CSVEligibility.java:132)
        at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
        at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
        at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:637)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.lambda$convertToLogic$9def446d$2(CSVEligibility.java:131)
        at org.mitre.synthea.world.agents.behaviors.planeligibility.CSVEligibility.isPersonEligible(CSVEligibility.java:67)
        at org.mitre.synthea.world.concepts.healthinsurance.InsurancePlan.accepts(InsurancePlan.java:238)
        at org.mitre.synthea.world.agents.behaviors.planfinder.PlanFinderPriority.lambda$find$0(PlanFinderPriority.java:21)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
        at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at org.mitre.synthea.world.agents.behaviors.planfinder.PlanFinderPriority.find(PlanFinderPriority.java:23)
        at org.mitre.synthea.world.agents.PayerManager.findPlan(PayerManager.java:377)
        at org.mitre.synthea.modules.HealthInsuranceModule.updateInsurance(HealthInsuranceModule.java:79)
        at org.mitre.synthea.modules.HealthInsuranceModule.process(HealthInsuranceModule.java:61)
        at org.mitre.synthea.world.agents.PayerTest.receiveMedicareAgeEligible(PayerTest.java:220)

Following up on this

Resolved


Use git push for tagging to support tag update

Force push isn't implemented for the default API tagging method. We would need to do a different API call (update reference).
So switching to git cli push instead.
This allows to re-use branch names and branch deployment will still be cleaned up properly since the updated tag will trigger CircleCI again.

We discussed today during Quality Meeting. Let's give this a try. I'll merge now


Loan payoff not updating

May be due to large number of loans (19), but when I click calculate the payoff order down below is just in the same order as I entered them above.

Can you include a link?

http://unbury.us/#name_11=Nav1&balance_11=3059.55&payment_11=35&rate_11=6.55&name_12=Nav2&balance_12=4607.21&payment_12=51&rate_12=5.75&name_13=Nav3&balance_13=6005.05&payment_13=68&rate_13=6.55&name_14=Nav4&balance_14=1023.82&payment_14=11&rate_14=5.75&name_15=Nav5&balance_15=476.27&payment_15=6&rate_15=6.55&name_16=Nav6&balance_16=5622.27&payment_16=61&rate_16=5.35&name_17=Nav7&balance_17=9878.87&payment_17=113&rate_17=6.55&name_18=Nav8&balance_18=2705.91&payment_18=25&rate_18=2.08&name_19=Nav9&balance_19=1858.74&payment_19=17&rate_19=2.08&name_20=Nav10&balance_20=1250&payment_20=12&rate_20=3.15&name_21=Nav11&balance_21=750&payment_21=7.5&rate_21=3.15&name_22=Nav12&balance_22=6868.9&payment_22=78&rate_22=6.55&name_23=Nav13&balance_23=2695.49&payment_23=31&rate_23=6.8&name_24=Nav14&balance_24=6402.56&payment_24=74&rate_24=6.8&name_25=Nav15&balance_25=898.51&payment_25=0&rate_25=6.8&name_26=ACS&balance_26=9983.25&payment_26=114&rate_26=6.55&name_27=MO&balance_27=37205.55&payment_27=311&rate_27=6.5&name_28=Home&balance_28=182907.49&payment_28=1303&rate_28=3.25&name_29=Car&balance_29=19812.07&payment_29=344&rate_29=2.19&

It's working for me on chrome. What browser are you using?

I'm in chrome as well.  See attached pic...
On Wed, Apr 1, 2015 at 7:05 PM, Sean Freiburg<EMAIL_ADDRESS>wrote:

It's working for me on chrome. What browser are you using?
—
Reply to this email directly or view it on GitHub
https://github.com/seanfreiburg/unbury.us/issues/21#issuecomment-88694286
.


YesSQL and Orchard 1

I would like to know , Is there any chance of future releases of O1 using this database or , it is going to be only Orchard Core that is benefiting from it?
Is there any future plan for YesSql to be use in core modules of Orchard1? any official provider is going to be released?
Thanks in advance

Chance is close to zero imho - there is so much code that relies on NH making it extremely hard to switch without introducing major breaking changes. To answer the second part - official most likely not but I'll be releasing a module that brings YesSql to O1 in the upcoming weeks.


[osg] Add feature examples and plugins, fix configure options

This PR will:

[x] Fix conflicts between dependencies sdl1 and sdl2.
[x] Add feature examples.
[x] Add feature plugins.
[x] Add feature tools.
[x] Add feature packages.
[x] Add feature docs.

Related: #10051.
Note: All features passed in the following triplets test:

x86-windows
x64-windows-static

/azp run

/azp run

osg:x64-windows-static failed om CI testing.

Fails during post-build validations
There should be no empty directories in C:\vsts\_work\4\s\packages\osg_x64-windows-static
The following empty directories were found:

    C:/vsts/_work/4/s/packages/osg_x64-windows-static/tools/osg

If a directory should be populated but is not, this might indicate an error in the portfile.
If the directories are not needed and their creation cannot be disabled, use something like this in the portfile to remove them:

    file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/a/dir" "${CURRENT_PACKAGES_DIR}/some/other/dir")

Found 1 error(s). Please correct the portfile:
    C:\vsts\_work\4\s\ports\osg\portfile.cmake
-- Performing post-build validation done

@vicroms I will fix it tomorrow.

CMake Error at ports/osg/portfile.cmake:106 (if):
  if given arguments:

    "NO" "EXISTS" "E:/tools/vcpkg/packages/osg_x64-windows/tools/osg"

  Unknown arguments specified
Call Stack (most recent call first):
  scripts/ports.cmake:90 (include)

ports/osg/portfile.cmake:106 and 121 str
if (NO EXISTS ${OSG_TO -->> if(NOT EXISTS ${OSG_TO ?

/azp run

/azp run

@JackBoosY It appears that osg-qt is failing

Related issue #10320

@dan-shaw The reasons for the osg-qt build failure is:
CMake Error at /ci/myagent/_work/1/s/installed/x64-linux/share/cmake/Qt5Gui/Qt5GuiConfig.cmake:15 (message):
  The imported target "Qt5::Gui" references the file

     "/ci/myagent/_work/3/s/installed/x64-linux/lib/libEGL.so"

  but this file does not exist.  Possible reasons include:
  * The file was deleted, renamed, or moved to another location.
  * An install or uninstall procedure did not complete successfully.
  * The installation package was faulty and contained

Please note that the path of this library is _/ci/myagent/work/3/s but the current ci test path is _/ci/myagent/work/1/s.
So I guess this is because the library is permanently archived on the pipeline machine, and using the library is provided by cmake file Qt5GuiConfig.cmake, which causes the issue to occur.
Please check on the pipeline machine, we may need to delete the related files on all pipeline machines.

/azp run

/azp run

@dan-shaw Seems okay now.


init : write repo and user config if they don't exist

fixes #372

Stack:

#380
#379 ⬅
#378

⚠ Part of a stack created by spr. Do not merge manually using the UI - doing so may have unexpected results.

✓ Commit merged in pull request #380


Add hidden elements

Add the ability to pass in an array of numbers to hide UI elements
Didn't physically test in dev but added a test case and checked the integration on Facetalk's side.

Also, you'll need to update package version (package.json) + build then commit the /dist (npm build)

Done, updated version and built the /dist


core: Add Init type to WidgetTemplate

Summary
Allow passing data to WidgetTemplate::init() to make widget templates more flexible.
Due to clever use of the macros, existing code should still compile just fine.
Checklist

[x] cargo fmt
[x] cargo clippy
[x] cargo test
[x] updated CHANGES.md

Is there any way to make widget templates able to access model?
I'm defining every component which need to watch changes on the model in main view as a #[template_child], because widget templates can't access the main model like model.some_variable
For example this is not working:
#[relm4::widget_template(pub)]
impl WidgetTemplate for MainPageFooter {
    view! {
        gtk::Box {
            set_orientation: gtk::Orientation::Vertical,
            set_vexpand: true,
            set_valign: gtk::Align::Center,

            gtk::Label {
                set_label: model.time_str,
            },
        }
    }
}

I need to make it like this:
#[relm4::widget_template(pub)]
impl WidgetTemplate for MainPageFooter {
    view! {
        gtk::Box {
            set_orientation: gtk::Orientation::Vertical,
            set_vexpand: true,
            set_valign: gtk::Align::Center,

            #[name = "lbl_time"]
            gtk::Label {
                set_label: model.time_str,
            },
        }
    }
}

// And the main `init` function:

#[relm4::component]
impl SimpleComponent for App {
// ...
    view! {
        adw::Window {
/// ...
            #[template]
            MainWindow {

                #[template_child]
                lbl_time {
                    #[watch]
                    set_label: model.time_str
                }

Is it possible to access the model (and also sender would be great) from WidgetTemplates?

Widget templates are so far just a simple abstraction for grouping widgets together. This makes them easy to use because they don't have any state and don't require any knowledge about component they are used in.
To make it possible to access the model in widget templates, you'd need to specify the type of the component for each widget template, which makes them less useful as templates because then they only work for a single component. It would be possible to introduce a Update type to the WidgetTemplate trait to allow the template to access this data, but I don't know whether templates are really the best abstraction for this, or whether we should look for other solutions...


Restore new WSL window command

Hi, it seems currently that on version 1.79 there is no longer the command New WSL window. Instead we must do New Window and then Connect to WSL. This is not a huge issue but an inconvenience.
I'm not certain whether this was an intentional change on VSCode or perhaps on my environment so any clarification would be appreciated.
Best

is there any additional information you would need regarding this?

We decided to slim down the remote menu. But the command is still in the command prompt.

By command prompt do you mean the command palette (https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette) or something like https://code.visualstudio.com/docs/editor/command-line#_advanced-cli-options?
I don't see on command palette.
Thanks

By command prompt do you mean the command palette (https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette) or something like https://code.visualstudio.com/docs/editor/command-line#_advanced-cli-options?


chore(test): setup karma test runner against chrome browser

initial bootstrap config for karma runner against chrome
ci server is not configured yet

relates to #998
This PR is very initial step to resolve issue, setting up karma configuration against chrome browser. Once this PR is merged, will expand browser support as well as CI server setup.

PR updated to have test cases per process and browser.

LGTM

Merged with 9996d77. Moving forward to next step to wire with CI server..


CodeKit/Hammer like GUI

@DocPad have you considered doing a UI similar to Codekit of Hammer? There seems to be a big market for that.

Source: https://twitter.com/sabbatregent/status/376535388841472000
A while ago (maybe 1.5 years), there was actually a person who was wanting to make something like Codekit and they were evaluating DocPad. However, at that time we did not have a REST API, so it didn't make sense. I believe they went with a C based solution.

I'd be up for this; I definitely don't have a fear of the command-line but find myself using Prepros and Github's GUI app more often.
Did you see Webhook's kickstarter? It was successful and similar to the idea of a modular/plug-and-play interface that balupton spoke about here - https://gist.github.com/balupton/2906284


Add endpoint to get rule violations of ORT run

Add an endpoint to get the rule violations of an ORT run.
The location of the endpoint should be "/runs/{id}/rule-violations".

{id} means the global id, not ortRunIndex?

{id} means the global id, not ortRunIndex?

Yes, all endpoints at "/runs/" use the global id as the repository id is unknown.

This was done in https://github.com/eclipse-apoapsis/ort-server/pull/1095.


Pass props to children

Hi!
I have 1 container (for example, Contact.jsx) and multiple components (About.jsx and etc).
When I trying pass props to children (<About {...props} /> or using react-router and {props.children}), they have gone, children doesn't have redux-form's props (but react-router's or redux's works well).
Why? It will be super-useful if we can pass props to children — we don't need to create multiple forms, just have 1 in container.

Which component is decorated with reduxForm()?
Props that you pass to a decorated redux-form component are passed down to the wrapped component, so I'm confused as to your component structure.

@erikras container is decorated with reduxForm. Children don't.

I need to see an example to understand what you are trying to accomplish. In React, props don't filter down to all the props.children unless they are passed.

It's React's problem.
If we have
props == { foo: `bar`, bar: `foo` };

  <Child {…props}>
    <ChildOfChild />
  </Child>

Where
Child =
{props.children}

React lose props for ChildOfChild, but in Child everything is ok. Very strange behavior, but I solved it with {React.cloneElement(children, props)}.
Sorry for your time and thanks for redux-form, it's works like magic ❤


Allow additional lib paths

When working with a large repo, we have libsonnets which come as part of a package resulting in a structure similar to this:
repo

\src

\someProject

\file.jsonnet

\packages

\someLibPkg

\lib

\library.libsonnet

When we call jsonnet-exe to compile, we add additional jpaths. When using your editor, it seems to only look in the current folder or the root of the repo and I see errors such as:
path 'library.libsonnet' not found in candidates [file:///d:/git/repo/library.libsonnet file:///d:/git/repo/src/someProject/library.libsonnet]jsonnet(RuntimeError)

Other editors handle this be accepting an array of additional paths to search. I am not sure if that is the best solution, but it is one solution.

+1 This is also an issue when writing packages to be deployed with Grafana Tanka.
The default location for the library files is /lib and /vendor, and the extension does not search these folders. It would be nice to be able to specify additional paths (GrafanLabs' own jsonnet extension has interestingly enough the same issue).

I switched to this LSP hoping it solved this issue (which, as noted, exists in Grafana's extension). I have found that this extension does search /vendor, however, it doesn't search /lib which makes working with in-house libraries extremely difficult.

@carlverge If you can give me some pointers, I'd be happy to take a crack at a PR for this :)

@jmgilman I had taken a pass at this before and didn't get it done before I had to context switch away. Unfortunately it's pretty messy to add. Added in 74746805b310219372978f20bf753be89deee9e8.
The other unfortunate part of this being a side-project is the testing is also bad. I'm going to soak this with my own usage for the next week before I cut a new release

Thanks for the quick turn-around. I've not hit any issues so far other than all of my files are filled with red squiggles ;) Looking forward to being able to set the search path, let me know if there's any other way I could be helpful.

Definitely, I appreciate both the patient and the offer for help :)
Ran it through a bunch of local testing, found one fix but otherwise it's been working well with the torture test of import paths. Will cut a 0.2.4 release now

It looks like it may struggle with multiple paths. I have an example reproduction here: https://github.com/jmgilman/tanka-test.
If you clone that locally and open it up, you'll notice that in /src/kube/lib/apps/testapp/main.libsonnet that the k import is not working. Looking in the logs, it appears to only search from the repo root and /src/kube/lib but never searches /src/kube/vendor.

Testing this out in my environment it does find a lot of the imports, but it looks like there's a transitive lint warning from something in the import chain missing (and the lint warning is erroneously reporting the error for a given file). I'm testing it with cmd+click through the imports
src/kube/lib/apps/testapp/main.libsonnet ->
github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet ->
src/kube/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/grafana.libsonnet ->
src/kube/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/k-compat.libsonnet
On grafana.libsonnet -> k-compat.libsonnet there's an import warning, but it's possible to click through and there's no import warnings in k-compat.libsonnet itself.
Even when I single out the imports in k-compat.libsonnet it's able to find them.
local lt = import 'legacy-types.libsonnet';
local lc = import 'legacy-custom.libsonnet';
local ln = import 'legacy-noname.libsonnet';
local ls = import 'legacy-subtypes.libsonnet';

But...
local ln = import 'legacy-noname.libsonnet';
local ls = import 'legacy-subtypes.libsonnet';

// This works fine
ls + ln({new(name=''):: super.new(name)})
// This results in an import error
ls + ln

It looks like it's erroneously reporting import not found for another lint? I'm going to need to keep digging into the lint issue later

Any chance that fix can make it into a release soon? 😄

Friendly bump 😃

Has this been resolved?


Cleanup Fails

Curious if you can point me in the right direction.  I call the script and pass the three variables.  The snapshot runs, no issue.  As soon as the sleep expires and it starts to clean up old snapshots, it fails with the below.
Number of Instance Snapshots to keep: 2
Number of instance snapshots: 3
backups.sh: 45: backups.sh: Syntax error: redirection unexpected

Fixed by calling BASH vs. SH


Not getting suggestions for functions of a new header file while using LSP of cpp.

I have used language server of https://github.com/MaskRay/ccls with monaco-languageclient, and it is working perfectly fine except it is not showing results for new header files (for e.g. it should show strcpy(...), if we include #include <string.h>) included at runtime (Although it shows if that header file was already included in rootUri before starting the monaco-languageclient).I have checked ccls LSP is working perfectly fine with other ide's for e.g. VS code only. And I have run monaco-languageclient with other LSP's like java, python etc, they are also working well.
Following are some highlighted changes I have made as per the documentation of monaco-languageclient.
I am starting my LSP with this command in json-server-launcher.ts file in the example folder-
ccls --init='{"cacheDirectory": "", "cacheFormat":"json", "index": {"onChange": true, "trackDependency":2}}'
and I have .ccls file in the rooturi whose content is:

%clang
%c -std=gnu11
%cpp -std=gnu++14
%objective-c %objective-cpp -DGNUSTEP
%c %cpp -DFOO
-pthread
-I/usr/include/
-I/usr/local/include/
-I.
-I/Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include
-I/Library/Developer/CommandLineTools/usr/include

And obviously I have provided a sample file also in the rootUri.

Hi @amarnath-mishra I face the same issue using ccls, did you solve it?  and do you mind sharing how you get the java language server working? I have my configuration in #139
Thanks.

Hi @amarnath-mishra / @xihaoxiaohao ,
Please can you share your setup to connect to an external language server like ccls or cquery for Java or c++. I am trying to get this to work with ccls but I am unable to start the language server correctly.
I keep getting an error related to "missing rootUri".
Thanks,
Hari

Hi @xihaoxiaohao ,I have tried on a new build of ccls, and this issue was resolve in it.

I have used language server of https://github.com/MaskRay/ccls with monaco-languageclient, and it is working perfectly fine except it is not showing results for new header files (for e.g. it should show strcpy(...), if we include #include <string.h>) included at runtime (Although it shows if that header file was already included in rootUri before starting the monaco-languageclient).I have checked ccls LSP is working perfectly fine with other ide's for e.g. VS code only. And I have run monaco-languageclient with other LSP's like java, python etc, they are also working well.
Following are some highlighted changes I have made as per the documentation of monaco-languageclient.
I am starting my LSP with this command in json-server-launcher.ts file in the example folder- ccls --init='{"cacheDirectory": "", "cacheFormat":"json", "index": {"onChange": true, "trackDependency":2}}' and I have .ccls file in the rooturi whose content is:

%clang
%c -std=gnu11
%cpp -std=gnu++14
%objective-c %objective-cpp -DGNUSTEP
%c %cpp -DFOO
-pthread
-I/usr/include/
-I/usr/local/include/
-I.
-I/Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include
-I/Library/Developer/CommandLineTools/usr/include

And obviously I have provided a sample file also in the rootUri.

Hi
I am working on external language servers with jdlts. But it is taken lot of ram. Can you help to figure this and suggest the best way to integrate it in the backend.


Fix 2 minor non-code style issues

What is this PR for?
2 minor non-code style improvements.
HT @anthonycorbacho
What type of PR is it?
Improvement
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

LGTM

LGTM

Thanks for a prompt responce guys!


Issue Title: "Add Chatbot Feature"

@Vimall03
Issue Description: I would like to add a chatbot feature to the website to enhance user support and engagement. The chatbot will provide instant assistance to users by answering common queries, offering guidance, and directing them to relevant sections of the site.
Please assign this issue to me under the labels: level3, gssoc-ext, and hacktoberfest-accepted.

Hi @AswaniBolisetti, we already have a fully working chatbot. Please start working on the issues assigned to you. You can open new issues after the PR for the assigned issues are merged.
Closing this as unplanned.


Look at this Lovefield benchmark, why is it so slow?

https://github.com/digital-synapse/lovefield-typescript-performance-test

Can you post the numbers here? How much time it takes for how many insertions/deletions? Also how about selections?

Thanks for the numbers. After taking a brief look at your code, noticed an odd pattern. Why are you connecting to the DB multiple times? This should only be done once, and re-use the same DB connection for all the queries. I expect this will drop all the times you are reporting.

Thanks we updated the tests to remove the database connections and the performance has improved considerably especially for selects.

one thing that i noticed was that the deletes are suspiciously quick for indexedDB. Almost as if the method is calling resolve before the promise has been fulfilled.

Thanks we updated the tests to remove the database connections and the performance has improved considerably especially for selects.

one thing that i noticed was that the deletes are suspiciously quick for indexedDB. Almost as if the method is calling resolve before the promise has been fulfilled.

Deletes indeed look suspiciously quick. The timings reported here do not match the ones in Lovefield's perf dashboard, see https://google.github.io/lovefield/dashboard/src/dashboard.html (specifically see test case called "PK-based table scan: Delete". It almost seems as if you are deleting from an empty table. Can you verify that before you delete, the table is indeed populated?
I don't have time to try this myself today, but maybe tomorrow. If you could update your example with your latest changes (single DB connection), that would help.

thanks. updated the example code

Took another look at the code, lovefield-tests.ts specifically. Simultaneous connections to WEB_SQL and INDEXED_DB does not work as you expect, so don't do that. Here are two suggestions.

Do the connections one at a time, don't interleave them together. For example change your sequence of queries to

 sequence(
            [testSelectPredicate, db],
            [testSelect, db],
            [testInsert, db],
            [dropTable, db],
            [testInsertBatch, db],
            [dropTable, db],
        );

I am also a bit confused on why selection happens before anything has been inserted to the DB.

If you still want to use two simultaneous connections (one to IDB and one to WEB_SQL), you must use different schema builders (and the shemas should have different names). One schema object is supposed to be used with a single backing store only. I hope this helps.

Thanks. Right connecting to both of the backing stores at the same time were causing the issues with delete. I've changed the tests to run through the tests and one suprise. We can see now that delete is taking some time to complete.

everything looks fine. One curious thing about the webSQL backend. the select seems to be much faster when there is a predicate given.
btw: the answer to your question about selection happens before anything has been inserted is because the sequence function acceps an array and uses pop to resolve the promises sequentially. I added an array.reverse so that the sequence can be given in the right order. less confusing that way.

@freshp86 Do the new numbers look accurate or is there more fine tuining @digital-synapse can do?

I can probably help more if I can run the code locally. I tried npm install and gulp dev, but I got some errors after loading the page. I am probably missing some step, let me know.
Looking at the code, I still don't think it is entirely correct. Repeating from my previous comment:
Shouldn't call connect() twice on the same schemaBuilder instance. I know that the API allows it (does not throw any error), but the results are not as expected. If you need more details you can see this lines https://github.com/google/lovefield/blob/master/lib/schema/builder.js#L246, where it is clear that your two separate DB connections are re-using Lovefield's "global" object (an object holding all singleton services). The two connections should not be sharing any internal data-structures.
I suggest something as follows
var schemaBuilderIdb: lf.schema.Builder = lf.schema.create('todo_idb', 1);
schemaBuilder.createTable('Item').
    addColumn('id', lf.Type.INTEGER).
    /** .... more calls to addColumn() here */

var schemaBuilderWebSql: lf.schema.Builder = lf.schema.create('todo_websql', 1);
/** .... build schema again from scratch here*/

schemaBuilderIdb.connect({storeType: lf.schema.DataStoreType.INDEXED_DB})........
schemaBuilderWebSql.connect({storeType: lf.schema.DataStoreType.WEB_SQL})........

I know this is a bit tedious, but keep in mind that opening simultaneous connections to WebSQL and IDB is not a main use case, it's not useful in general, although I see why it is useful for performance testing.
Regarding whether more fine tuning, yes there is more room. Specifically, need to add index for the columns that matter (the ones used in the most frequent select queries). In the example code, there is an index for "deadline", but the select query only cares about "id" and "done". Adding index on any of those columns should make queries with predicates much faster. You can inspect the execution plan by calling the explain() method an any query. For example
var q = db.select().from(dummyItem).where(lf.op.and(id.gt(-1), done.eq(false));
console.log(q.explain()); // See whether any index is being used, if there are full tables scans etc.

npm install
jspm install
gulp dev
should do the trick

I am able to run the code now. Had to config jspm with my github credentials.
Can you update the code with the latest changes? I still see the previous version. Once you do, I can compare the numbers with the ones you posted and see if there is anything else to be changed.

sorry. forgot to push the changes. should be up to date now.

I run the latest code locally. Here are some observations. First the numbers from a single run (not averaged).
lovefield:IndexedDB 1 insert 50000 rows 6942ms
lovefield:IndexedDB deleting 50000 rows 2096ms
lovefield:IndexedDB 50000 inserts 9932ms
lovefield:IndexedDB 1 select 50000 rows 62ms
lovefield:IndexedDB 1 select 50000 rows with predicate 99ms

insertions/deletions timings seem consistent with the timings in Lovefield's performance dashboard. It's  relatively slow because of talking to IndexedDB backend. Feel free to compare with the lf.schema.DataStoreType.MEMORY to get an idea of the overhead that is added by IDB/WebSQL. Here are the numbers I got for MEMORY backstore

lovefield:Memory 1 insert 50000 rows 571ms
lovefield:Memory deleting 50000 rows 533ms
lovefield:Memory 50000 inserts 3476ms
lovefield:Memory 1 select 50000 rows 47ms
lovefield:Memory 1 select 50000 rows with predicate 87ms

SELECT * FROM timings also seem consistent with the dashboard.
Now for selectWithPredicate:
You are selecting all rows from the database, using a predicate which all rows satisfy. This explains why this query is slower than the previous one. The predicate acts as pure ovrehead on the query (does not filter out any results). It causes the index on "id" to be used, but using an index is not helpful when there is no selectivity benefits (pathological case). If you really want to see the benefits of using the index, try selecting a subset of the rows (something like item.id.between(100, 200), or item.id.eq(2500)).

Regarding the pathological case I am talking above, Lovefield could potentially improve it by not choosing to use the index if selectivity is below a certain percentage. This is a practice used by other DBMSs as far as I know.

I agree. Thanks for your help. I will leave the perfomance tests on github in case anyone else wants to run them.

Last thing to note: You can try lovefield.min.js for even better performance. lovefield.js is a debug version and besides not being minified and optimized by the Closure compiler, it also has a few assertions that can slow things down.


Command to create an empty docset

It would be useful to create a empty docset, to be able to manually include the packages we want. This is because there are ~25 packages which are always in the global package database, cluttering the search.

please see #29 and join to discussion:smile:

Open #36


Add support for GFM-style checkbox task list

This is from a Google Group post.
Github supports an extension to Markdown for creating checkbox task lists. This MD:
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> are supported
- [x] list syntax is required (any unordered or ordered list supported)
- [x] this is a complete item
- [ ] this is an incomplete item

Turns into this:

[x] @mentions, #refs, links, formatting, and tags are supported
[x] list syntax is required (any unordered or ordered list supported)
[x] this is a complete item
[ ] this is an incomplete item

In case this isn't obvious: An important aspect of the Github feature that won't (and can't) be supported is the the updating of the email (etc.) if the checkboxes are clicked. This makes sense for GH issues, not for email.

This was also requested in #242, and the user wants to use it in Evernote. Unlike email, maybe Evernote will save the checkbox state? (I was thinking that they would be disabled, but maybe not...)

Would be so appropriated.

Would be sooooo appreciated! :+1:

There's code for this in #587.

+1 for this.
Here's some info from here and looks fairly straight forward to implement.
http://blog.winddweb.com/implement-github-like-checkbox

You can paste this into the raw text:
<input type="checkbox" class="task-list-item-checkbox" disabled checked>Test line 1
<input type="checkbox" class="task-list-item-checkbox" disabled>Test line 2

It displays like so when converted:

Now, to find a way to change:
- [] to <input type="checkbox" class="task-list-item-checkbox" disabled checked>
and
- [x] to <input type="checkbox" class="task-list-item-checkbox" disabled>
This does seem to be possible by wrapping html in the css code as per this:
https://www.quora.com/How-do-I-write-CSS-within-HTML
https://www.w3schools.com/html/html_css.asp
Same link to where the checkbox code is:
http://blog.winddweb.com/implement-github-like-checkbox