Disable beeping on error by default and add option to enable it

I was just working on my website project and I kept hearing the Windows alert sound every few seconds. It took me nearly a half hour to figure out that it was coming from node-sass-middleware errors printing a \x07 character before every console error.
This PR removes that character and adds an option to add it back if one so desires.

Thanks for your contribution @briman0094! 👍
I have updated the docs and added a test (though not the kind of test I intended; spawning a different server, but apparently TravisCI is having issues.. for now this will do it)


feat(EmptyStates): consolidate config value empty states

We have changed the design pattern to use unicode 2014 character (—) to denote the empty state of value in tables. Frameworks already use this pattern because the forms were recently built. This PR changes pods and services to use the same pattern.
Testing:

Deploy a service. The review screen should should long dash for unconfigured values.
Deploy a pod. The review screen should should long dash for unconfigured values.
Deploy a framework. The review screen should should long dash for unconfigured values.
Look at the configuration tab of service, pod, and framework. They should all have long dash in this view also.

Before:

After:

Checklist

[ ] Did you add a JIRA issue in a commit message or as part of the branch name?
[ ] Did you add new unit tests?
[ ] Did you add new integration tests?
[ ] If this is a regression, did you write a test to catch this in the future?

@leemunroe for visibility.

@leemunroe Thanks for the overview. A lot going on here. And looking at the code, and the inconsistencies you mentioned above, I think a proper refactor is needed. Agree @orlandohohmeier? This can be a task for a different PR.

In this refactor it can be an opportunity to combine the config screen code for pods, services, and frameworks - getting rid of other inconsistencies like header sizes, spacing, edit buttons, etc. It's a big undertaking, but we should schedule this for soon.

I accidentally rebased this one instead of the plugins 😅

Alfred test this please


I tried to make my pin field as a password field, but text is visible

Here is the code
<com.poovam.pinedittextfield.SquarePinField
android:id="@+id/txtPasscode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberPassword"
app:highlightType="completedFields"
android:textStyle="bold"
android:textSize="20sp"
app:cornerRadius="5dp"
app:noOfFields="4"
android:textSelectHandle="@drawable/text_handle"
android:layout_marginBottom="10dp"
android:layout_marginTop="25dp"/>
Here is the output

Sorry, this notification slipped. I will check this out and get back to you in a week

any update?

Sorry, this notification slipped. I will check this out and get back to you in a week

Thank you. Please give me an update. Anyway, I really appreciate your project.

I also need this feature for ( android:inputType="textPassword") text passowrd.
Please add this feature.
Thanks

Hey guys, checking on this.

If it is urgent, you can use 1.2.0, It is only after that version this issue has come. I will try to provide a proper fix sooner

I fixed it. You can use the following version
implementation 'com.poovam:pin-edittext-field:1.2.3'
Thanks a lot for using the library, do let me know if you need any features. :)


Do not throw compiler error for WSGL warnings?

While working on https://github.com/takahirox/online-wgsl-editor/pull/16 I realized that editor was refusing to run the code even though there only warnings, not errors.
I'm not sure if this was the desired behavior or not. This PR allows a shader to run even if it has some warnings. The other type of log message that may be returned is info (see https://www.w3.org/TR/webgpu/#enumdef-gpucompilationmessagetype) so it seems like a good idea to allow it to run if such messages are present.
Perhaps warnings can still be communicated in the code editor while allowing the code to run? This would require a bit of a refactor to communicate I think. Feel free to close this PR if you are aware of this issue/have another idea to improve it!

Looking good to me, thanks!


use of tendermint in tutorials

Just curious if there is a good way to deal with this issue - currently you are required to have tendermint installed to run the tutorial basecoin-tool.md - this is also true for running the shelldown auto-tutorial verifier. For this reason the circle.yaml file has some setup included in it:
go get -u github.com/tendermint/tendermint/cmd/tendermint

When one is running on a local machine, there is a whole bunch of headache associated with making sure you have the correct version of tendermint installed etc. - The above line doesn't always work, and it would be a bit much to program in the whole install guide. Maybe we just leave it and let each user deal with their own machine in this instance? Or alternatively, by default maybe we don't need to test the tutorials on local machines - but just test only on circle when uploading code? not sure.

Yeah, it is just to show you can run it out of process.
@ebuchman we should discuss this a bit more.  How we want to present basecoin to the users.
Maybe it is good to run it as one app in the tutorials, and have all stuff with two apps, deployment, etc. documented in the testnets repo or something like that.  This repo for dev, another for deployment.  For dev, there is no reason not to run them in-process... for production, sure.

@ebuchman @zramsay What do you think?
I would be happy to remove all dependencies on the tendermint executable in our tutorials.  It makes them cleaner and easier to follow.
I guess much will move to cosmos-academy anyway...

I like the idea of not requiring tendermint at all for tutorials.
That said, in a tutorial that explains how the basecoin tool works, it makes sense to demonstrate the basecoin can be run independently and driven by Tendermint in another process.

some tutorials require tendermint, although those specific tools are currently being re-worked (e.g, ethermint automatically starting tendermint ... but tendermint must still be installed

consolidate with #221:
What is quark? Start with main readme or have intro sentence.
- Transaction: What is special about it? Transactions are the building block for custom blockchains.
- What's with these boxes with the two boxes attached?
- What is CheckTx and DeliverTx?
- Dispatcher: the dispatcher handler...? which one? why am I interested?
- Use of "state space" <- wtf, storage?
- Needs overview:
    - Middleware
    - Dispatcher
    - App (end handler?)
- Security:
    - Ok now we're talking about the app from the outside?
    - Confusing diagram.
- How do permissions help here? Permission to what? Example?
- Data store
    - Why is the implementation explained?
    - Either explain why a merkle tree is needed or just say that middlewares can only access their own data.


LightGroup with {"exposeScenes": false} cause  - error: TypeError: Cannot read properties of undefined (reading '1')

Accessory:
ui get /accessories/00212EFFFF05B41A-G1
{
  "id": "00212EFFFF05B41A-G1",
  "manufacturer": "dresden elektronik",
  "model": "LightGroup",
  "name": "XXXXX",
  "resources": [
    "/groups/1"
  ],
  "settings": {
    "expose": true,
    "exposeScenes": false,
    "logLevel": 2,
    "serviceName": "Light"
  },
  "type": "groups",
  "zigbee": false
}

Cause Problem (homebridge log):
[4.12.2023, 10:49:32] [deCONZ] XXXXX: error: TypeError: Cannot read properties of undefined (reading '1')
    at Light.updateScenes (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzService/Light.js:487:29)
    at Light.update (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzService/index.js:115:14)
    at Light.<anonymous> (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzAccessory/index.js:84:21)
    at Light.emit (node:events:517:28)
    at Light.emit (/var/lib/homebridge/node_modules/homebridge-deconz/node_modules/homebridge-lib/lib/Delegate.js:173:13)
    at Gateway.analyseFullState (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzAccessory/Gateway.js:1105:34)
    at Gateway.poll (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzAccessory/Gateway.js:965:18)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Gateway.heartbeat (/var/lib/homebridge/node_modules/homebridge-deconz/lib/DeconzAccessory/Gateway.js:357:9)

Thoughts on Problem:

Don't handle Scenes, when "exposeScenes" is false...

regards Oliver

In v1.0.8.

fixed


Update test_net.py and demo.py for Pytorch 1.0

@jwyang this fixes small bugs in calling the nms function for test_net.py and demo.py for PyTorch-1.0


Timeouts shouldn’t kill mutants

Per conversation with John; run timeouts are a common side effect of the current setup with c4f, and it's impossible to know whether the mutant was the cause.
This could do with tests.

Fixed (but not yet tested).

Fixed (but not yet tested).


Cannot get properties of Elements on remote graph with scalaGraph

Hi,
Thanks for building this nice wrapper for Scala :D. I am currently use this on a Remote JanusGraph by calling:
val scalaGraph: ScalaGraph = EmptyGraph.instance().asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster, "g")))
but found I lost some syntax benefit for gremlin-scala, say, if I want to add an edge between v1 and v2, I can no logger call:
val edge = v1 --- ("reference", metadata -> "EdgeTest", deleted -> false) --> v2
Exceptions below:
Edge additions not supported
java.lang.IllegalStateException: Edge additions not supported
	at org.apache.tinkerpop.gremlin.structure.Vertex$Exceptions.edgeAdditionsNotSupported(Vertex.java:175)
	at org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex.addEdge(ReferenceVertex.java:47)
	at gremlin.scala.ScalaVertex.addEdge(ScalaVertex.scala:65)
	at gremlin.scala.SemiEdge.$minus$minus$greater(SemiEdge.scala:4)

I believe this is the cause of EmptyGraph as a underlying graph.
referring to this example:
https://github.com/mpollmeier/gremlin-scala-examples/blob/master/dse-graph/src/test/scala/SimpleSpec.scala
instead I have to call
val a = StepLabel[Vertex]()   val b = StepLabel[Vertex]()   scalaGraph.V(v1.id).as(a).V(v2.id).as(b).addE(REFERENCE).from(a).to(b).property(metadata, "EdgeTest").property(deleted, false).iterate()
this is one of the examples that I cannot use nice wrapper provided by gremlin-scala when I am working on a remote graph, so wondering if i missed sth. here as I am still manipulating on a ScalaGraph or there is a better way to add vertex/edges in remote graph.
Thanks for your help in advance.
Alex

and also I found using valueMap with remote graph, I have to pass in valueMap(true) to get the properties using GraphTraversalSource:
g.V().valueMap(true).toList()
but from scalaGraph of:
val scalaGraph: ScalaGraph = EmptyGraph.instance().asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster, "g")))
there is no way I can pass valueMap(true). wondering what is the best way to get the properties of Elements using ScalaGraph in this way.

As you mentioned already, EmptyGraph is the problem. Simply use org.janusgraph.core.JanusGraph and everything should be fine.
Did you see https://github.com/mpollmeier/gremlin-scala-examples/ ? It contains a JanusGraph example repo and I just added a line to prove that you can add edges. valueMap works as well, e.g. if you add println(scalaGraph.V.valueMap.toList).

Hi,
Thanks for your reply. The reason I use EmptyGraph is I am using it to initialise a remote graph, I guess I have to use EmptyGraph to connect to a remote as I found all the docs are using this way unless I missed a way to construct a EmptyGraph of JanusGraph.
I am basically want to achieve exactly the same as the DSE example but with JanusGraph:
https://github.com/mpollmeier/gremlin-scala-examples/blob/master/dse-graph/src/test/scala/SimpleSpec.scala
somehow the return type of DSE example is DetachVertex while for JanusGraph is ReferenceVertex while I cannot add edges here.
Thanks,
Alex

Ok, I understand the issue now. I don't have much capacity to fiddle with this myself, but just had a brief look at Janus' documentation. Have you tried to pass the remote url etc. in the config that you pass to JanusGraphFactory, rather than using EmptyGraph.withRemote? E.g.
storage.backend=cassandra
storage.hostname=localhost

http://docs.janusgraph.org/latest/configuration.html

To follow up on this old issue, I believe I have similar problems. Well, similar in that I found I can not use the fancy operators with remote connections (if I do the data is not saved)
I have forked gremlin-scala-examples to show this: I'm using JanusGraph Server as my server here, but whatever it's mostly just Gremlin Server underneath:  rwilcox/gremlin-scala-examples JanusGraph example for JanusGraph Server
There are three examples here:

Java copied from Janusgraph's official remote example

an operator ( / structure) based API example with a remote JanusGraph, copied from gremlin-scala janusgraph example

a traversal API based example, where I (poorly!) try to convert the edge / vertices operator API -> traversal API.

(@TitiHl these all use JanusGraphFactory.open("inmemory") instead of EmptyGraph(), which I found too limiting ie not supporting transactions etc etc)
TL; DR:

connect to JanusGraph Server: val graph : ScalaGraph = JanusGraphFactory.open("inmemory").configure( _.withRemote( conf) ) line
graph + ( "Saturn", Key[String]("name") -> "Saturn" )  line
JanusGraph Server data store is unchanged

BUT, I used the addV traversal methods, like so:

connect to JanusGraph Server: val graph : ScalaGraph = JanusGraphFactory.open("inmemory").configure( _.withRemote( conf) )
graph.addV().property( Key[String]("name"), "Saturn" ).iterate() line
JanusGraph Server data store is changed

By going through issue history, I found #118, which has the following comment link - which is one of the reasons why graph.addV() exists at all!

ScalaGraph does have addV (I just called it addVertex). Also note that we have a nicer syntax to add vertices/edges, you might want to use that instead (it's documented on the front page (readme))

I think the difference is that addVertex on a Graph instance does not create a traversal, it operates directly on the Graph where addV operates on the traversal source and creates a traversal.

But methods like + and --- operate on ScalaGraph objects (calling addVertex), not the underlaying traversal source object.
@mpollmeier does this logic sound right to you? (I'm a relative newbie to this project and graph / tinkerpop in general)
@TitiHl  : I have not tested the original bug with this configuration (JanusGraphFactory.open("inmemory")) vs the other , but that may solve your problem ???
In general, It would be great to somehow have the + or --- operators also work on gremlin.scala.TraversalSource objects, instead of just ScalaGraph objects. (Is there a way to force this??)

Interesting - I'll run this tomorrow and see if I can find a workaround.
To make sure we're on the same page: how exactly did you start janusgraph? I'm just downloading janusgraph-0.2.0-hadoop2.zip from https://github.com/JanusGraph/janusgraph/releases/.
The docs suggest to run gremlin.sh and then graph = JanusGraphFactory.open('conf/janusgraph-berkeleyje-es.properties') - is this what you did?

Take a look at the JanusGraph Server Getting Started, but TL;DR: use bin/janusgraph.sh start <-- should work out for you

Ok so it turns out that we shouldn't use Graph to add elements, and instead always use the Traversal. This doesn't impact local graphs (one edge case though: the user cannot provide the element id), and is the only way to handle remote graphs, as you had to figure out yourself painfully.
I've made a start to change everything to use a traversal (only for vertices so far) in https://github.com/mpollmeier/gremlin-scala/commit/f74078858954969848caa47d7186a2f767456520 - let me know your thoughts.
So I can actually test this, maybe you help me with the following: when I run your test cases, I get the following error:
- janusgraph server ported Java (from janusgraph-server example) *** FAILED ***
java.util.concurrent.CompletionException: io.netty.handler.codec.DecoderException:
org.apache.tinkerpop.gremlin.driver.ser.SerializationException:
org.apache.tinkerpop.shaded.kryo.KryoException: Buffer underflow.

Any ideas what's wrong? Some missing configuration?
Thanks for bringing this back up and providing a nice project to reproduce, @rwilcox
Other random thoughts:

you're building up a ClusteredClient but don't actually use it...
IMO using janusgraphfactory.open(inmemory) is misleading, it gives you the (false) sense that you can actually use that graph instance. Use EmptyGraph instead

Woh, awesome! I'll take a look at the changes probably tomorrow,
(And that buffer underflow error sounds familiar too - I can't place it but I'll check it out at work tomorrow... maybe there it will come to me).
I have answers to your random thoughts now:

you're building up a ClusteredClient but don't actually use it

Yes, in my reading sample code / readings docs / and code provided to me from others on my Current Graph Database Project, I believe the ClusteredClient etc provides JanusGraph specific management features: ie the ability the create indexes to speed up searching, schemas, etc. But only learned this in the last day or so.

... IMO using janusgraphfactory.open(inmemory) is misleading, it gives you the (false) sense that you can actually use that graph instance. Use EmptyGraph instead

Maybe. What I believe / assume is happening is that creating a traversal off an EmptyGraph will give you only features available in generic Gremlin Server, but basing the traversal off a JanusGraph gives you JanusGraph features.
I'm super interested in what the local graph instance is used for in remote traversal situations: is it just a bootstrap mechanism or is it used somehow ie does it hold a subgraph in memory for cache reasons????? I may go ask the JanusGraph people, as my lead engineer had similar questions (and of course that has memory implications for mid-to-large graphs).

It would certainly be a good idea to use the graph instance for some local caching, but I don't think it's doing that, instead it just seems to be a bootstrap for the traversal..

@rwilcox any news re the DecoderException? Can you reproduce it?

any news re the DecoderException? Can you reproduce it?

No, and my browser history and notes didn't help either :(

'No' as in, if you run the test locally it works, and you don't get that exception?
If so, what exactly did you do? I downloaded the 0.2.0-hadoop2 release, unpacked and ran bin/janusgraph.sh -v start, and then ran the test.

'No' as in, if you run the test locally it works, and you don't get that exception?
If so, what exactly did you do? I downloaded the 0.2.0-hadoop2 release, unpacked and ran bin/janusgraph.sh -v start

Correct - on OS X 10.12 with JAVA_HOME set to a 1.8 JVM, I ran bin/janusgraph.sh -v start then ran my tests one by one in IntelliJ. (Are you using JVM 1.7 or 1.9 maybe???????)

How about if you run it in sbt?
I'm on linux with java 1.8
java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

I just freshly unpacked janusgraph and ran sbt test. Output on janusgraph console:
27043 [gremlin-server-worker-1] ERROR org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor  - Could not deserialize the Traversal instance

and sbt
*** 3 TESTS FAILED ***

Ok, super weird: sbt test gives me the error too. Was not expecting that....

Ok, super interesting. In my IntelliJ test configuration there's a checkbox to "use SBT". It was off. When I checked it to be on I got the same error in IntelliJ.
I guess I can see the Scala IntelliJ plugin somehow wanting to bypass sbt for Reasons by default

That's good news, we're getting the same results :)
Let me know when you get to the bottom of the error, maybe the working setup with intellij can help? Maybe there's a difference in the classpath?

Hey, I'm also interested in this. I got a similar SerializationException running some slightly different code. After some digging I solved it by explicitly specifying the serializer when creating the cluster like so:
private def buildCluster() = {
    val serializer = new GryoMessageSerializerV1d0(GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()))
    val cluster =
      Cluster.build().addContactPoint("localhost").port(45679).serializer(serializer).create()
    cluster
  }```
Hope it helps!

For what it's worth, I'm running into the same issues trying to connect to a new Amazon Neptune GraphDB Cluster.
val builder: Cluster.Builder = Cluster.build()
  builder.addContactPoint("my-endpoint.amazonaws.com")
  builder.port(8182)
val cluster: Cluster = builder.create()
val graph = EmptyGraph.instance().asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster)))

Gives the same errors:
(Empty)Graph does not support adding vertices

@alicefuzier thanks for sharing, but that didn't fix the exception I'm getting:
io.netty.handler.codec.DecoderException: org.apache.tinkerpop.gremlin.driver.ser.SerializationException: org.apache.tinkerpop.shaded.kryo.KryoException: Buffer underflow.

I don't know much about Janus and it's serialisation unfortunately.
@apatzer that's the error you get when you add a vertex with graph.addV, or graph + someCaseClass. Until this is resolved, the workaround is to add your vertex in a traversal, i.e. using the addV step in GremlinScala. Note: case classes aren't yet supported for that.

Ok I just figured out how to connect to janusgraph. Use a different serialiser.
hosts: [localhost]
port: 8182
serializer: {
    className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0,
    config: {
        ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry]
    }
}

I'll continue with the changes to allow adding vertices to a remotegraph shortly.

I just found some time to dig deeper into this. The underlying problem is that the configuration for remote is not stored in the graph instance, but in the TraversalSource. Because of that, one cannot simply call e.g. vertex.addEdge any more, because that doesn't know about the TraversalSource, and therefor the remote graph.
Since IMO the graph instance should hold that information (ScalaGraph does by holding onto the TraversalSource), I decided to add that as an implicit for the arrow DSL. I.e. from now on you need to have an implicit ScalaGraph in scope, then the arrow DSL works fine with remote and local graphs.
I just released gremlin-scala <IP_ADDRESS> and provided a working example for gremlin-server. I'm still fighting with janusgraph (the basic setup is here), and assume I need to release a new version for 3.3.0, since Janusgraph hasn't released anything for 3.3.1 yet.

It looks like I'm running into a similar issue even with <IP_ADDRESS> when interacting with a Neptune graph.
Caused by: org.apache.tinkerpop.gremlin.driver.ser.SerializationException: org.apache.tinkerpop.shaded.kryo.KryoException: Buffer underflow.
`
val cluster = Cluster.build()
.addContactPoint(url)
.port(port)
.create()
val g = EmptyGraph.instance().asScala.configure(_.withRemote(DriverRemoteConnection.using(cluster, "g")))
object Name extends KeyString
g.addV("Node")
.property(Name, "N/A").head()
`
Have you found any solutions other than changing the serializer? Neptune does not have such a serializer published as far as I can tell

Quick update re JanusGraph: since it's last release (0.2.0) is still based on tinkerpop 3.2.x I can't backport the new model for handling this in remote graphs, because it relies on GraphTraversal.from(Vertex) which was only introduced in 3.3.x. I'll only provide a working JanusGraph example when they release a new version.

A quick update...  JanusGraph 0.3.0 was released on July 31, 2018.  It now supports tinkerpop 3.3.3.

Finally got around to setting up a remote janusgraph example: https://github.com/mpollmeier/gremlin-scala-examples/blob/fcc048e/janusgraph/src/test/scala/SimpleSpec.scala#L55
I found debugging the serialisers non-straightforward, but here's a setup that works:
val serializer = new GryoMessageSerializerV3d0(GryoMapper.build.addRegistry(JanusGraphIoRegistry.getInstance))
val cluster = Cluster.build.addContactPoint("localhost").port(8182).serializer(serializer).create
implicit val graph = EmptyGraph.instance.asScala.configure(_.withRemote(DriverRemoteConnection.using(cluster)))

does anyone have a working setup for gremlin-groovy or gremlin-java? this isn't really a gremlin-scala specific issue..

I can't get the gremlin-server example to work. It adds vertices / edges fine as in the provided example.. but fails to retrieve any property values

@nkconnor @mpollmeier For neptune I'm using the following setup. Still new to gremlin, so not sure how much of this is specific to issues with Neptune. I sort of walked it back from using idomatic (gremlin-)scala in a lot of areas, but am still able to use the g + CC functionality.
Like @hudsonmd said, adding the following serializer is important:
val cluster = Cluster.build()
    .addContactPoint("localhost") // with ssh tunnel to Neptune
    .port(8182)
    .serializer(new GryoMessageSerializerV3d0())
    .create()

  implicit val g = EmptyGraph.instance.asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster)))

And then for retrieving an item map with properties:
val userMap = g.V().has[Int](UserLabel, userIdKey, id)
        .valueMap()
        .head()

Calling the valueMap before head is important if you want properties - also calling head seems to stop a traversal, so something like .head().out() I don't think works.
Updates for properties in neptune seem to only work if you first delete the property. I was running into this gnarly bug where if you try to increase the property value of a Double it works, but if you try to decrease it it does not.
g.V().has(UserLabel, userIdKey, uId).properties(userPropertyKey.name).drop().iterate()
g.V().has(UserLabel, userIdKey, uId).property(userPropertyKey, myPropertyValue).iterate()

@Joe29 are you able to use .toCC[User] prior to head? Or do you work soley with the value maps?
// .toCC errors
java.lang.IllegalArgumentException: Class is not registered: gremlin.scala.GremlinScala$$Lambda$48836/1166529519
Note: To register this class use: kryo.register(gremlin.scala.GremlinScala$$Lambda$48836/1166529519.class);
	at org.apache.tinkerpop.shaded.kryo.Kryo.getRegistration(Kryo.java:484)
	at org.apache.tinkerpop.shaded.kryo.Kryo.getSerializer(Kryo.java:502)

@nkconnor It's been a couple of weeks since I touched the code, but I do recall having problems with .toCC. Yeah it looks like I've got some dirty code to work around that with the value maps.

@nkconnor If you want to get up and running feel free to use this, though it's not pretty (two json libs??). I'm also making some assumptions here about the type of data/case class. Let me know if you find a cleaner solution.
import spray.json._
import org.json4s.DefaultFormats
import org.json4s.native.Json

  def mapToJSON(map: Map[String, Any]): String ={
    val correctedMap = map.map(kv => {
      if (kv._2.isInstanceOf[java.util.ArrayList[Any]]){
        kv._1 -> kv._2.asInstanceOf[java.util.ArrayList[Any]].head
      } else {
        kv
      }
    })

    Json(DefaultFormats).write(correctedMap)
  }

  implicit val userFormat         = jsonFormat3(User)

  val m = g.V().has[Int](UserLabel, userIdKey, id)
        .valueMap()
        .head()

      mapToJSON(m.toMap).parseJson.convertTo[User]

Thanks for the help Joe.... I'm going to look around at other graph libraries since the remote support is limited


Simple compressor (flow controlled and pressure controlled)

Similar to SimplePumps (for "compressible" media).
Actually the approach works for all media (in theory and from my experience also in practice, use for example ThermofluidStream.Media.myMedia.Incompressible.Examples.Essotherm650). But i dont know how to call a component that can be interpreted as either pump or compressor or fan.

Merged compressors into pumps, because for the simple case (from a thermodynamic perspective) pump and compressor do the same (just for different media).


Improve ManagedSeed e2e tests to reduce flakiness

How to categorize this PR?

/area dev-productivity
/kind test
What this PR does / why we need it:
See https://github.com/gardener/gardener/issues/7229#issuecomment-1361071276 ff.
Which issue(s) this PR fixes:
Fixes #7229
Release note:

NONE

/retest


Bug: (Unable to resolve path to module<EMAIL_ADDRESS>

Which packages are affected?

[X] @eslint/compat
[ ] @eslint/config-array
[ ] @eslint/migrate-config
[ ] @eslint/object-schema

Environment
Node version: v18.20.3
pnpm version: 9.1.4
ESLint version: 9.4.0
Operating System: MacOS 11.5.2
VS Code
What did you do?
My project is written in JavaScript, and I would like to add ESLint to it.
What did you expect to happen?
import { fixupConfigRules } from '@eslint/compat';
This line should not be prompted with an error
What actually happened?
Unable to resolve path to module<EMAIL_ADDRESS>Link to Minimal Reproducible Example
https://stackblitz.com/edit/vitejs-vite-bm5pcp
Participation

[ ] I am willing to submit a pull request for this issue.

Additional comments

When I added "main": "./dist/esm/index.js" to the package.json file under the node_modules/@eslint/compact directory, my editor stopped showing errors.

Hi @zapzqc, thanks for the issue. I think this is related to the import/no-unresolved rule coming from the eslint-plugin-import plugin and not something we can solve. Please get in touch with the maintainers there.

The reproduction case you linked to does not show this error. Please provide a repro case where we can see the error in action and we can take a look.

The reproduction case you linked to does not show this error. Please provide a repro case where we can see the error in action and we can take a look.

Hi @nzakas, I could reproduce this. This is related to the no-unresolved  rule from eslint-plugin-import, but I'm not sure if it is because @eslint/compat does not have a main property in its package.json. The rule does not complain when there is a main property.
npx eslint .

/home/projects/vitejs-vite-bm5pcp/eslint.config.js
   3:34  error  Unable to resolve path to module '@eslint/compat'  import/no-unresolved

Oh I see. There were no instructions on how to use the StackBlitz repro. I thought from the description that the error shows up immediately upon opening it. I didn't realize I had to manually run ESLint.
This seems more like a bug in eslint-plugin-import to me, but if adding main unblocks people, we can do that.

Just a note that we should do this for all the packages, not just @eslint/compat.


Continue reading last manga function in library/on app start

Describe your suggested feature
It would be nice to have a button in the library (or history) to load up whatever manga/comic you were reading the last time the app was open. That is, you click it and it takes you to the last manga you were reading (for privacy, maybe this should have the option to be disabled). Otherwise, you can sometimes be wandering around the library trying to remember what the last manga you were reading was. Inside the manga listing itself there is a resume button to pick up at the last chapter you were on, but this requires you find the manga you were reading, which can be hard in a large collection.
EDIT: On checking, it seems like the resume button in the manga always snaps to the last unread chapter, rather than the last chapter you were reading (ie when doing a reread, you would want to go the last chapter you read rather than the oldest chapter that is unread that you haven't caught up to yet). I can see either way making sense in different contexts, but for purposes of the functionality being discussed here, this would not always allow you to pick up where you were reading.
Other details
Ideal implementation: At the top of the library screen and/or the history screen, a button for "resume from last", "continue reading", etc.
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an official extension, I should be opening an issue in the extensions repository.
[X] I have updated the app to version 0.16.1.
[X] I will fill out all of the requested information in this form.

Double tap History. Doesn't this do what you're looking for?

Double tapping the button never occurred to me. It doesn't give any indication that there is a doulbe tap function.
This does the same as the resume button: goes to the oldest unread chapter in the last manga you were reading, not the last chapter that you were reading.
ie I am re-reading a manga, and am at chapter 21. If I leave and come back, this goes to chapter 63, the next one I have not read before, rather than 21, the one I was up to in my reread.


Drive discovery limit exceeded

I get limit issues when attempting to connect to my Google Workspace. What are the limits and can we edit or filter the scan criteria?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e276bebe-2aaa-5701-57da-59a2baa73c58
Version Independent ID: 1405b814-f193-5950-1908-6d1bac65d004
Content: Overview: Migrate Google Drive using Migration Manager - Migrate to SharePoint and OneDrive
Content Source: migration/mm-google-overview.md
Service: sharepoint-online
GitHub Login: @JoanneHendrickson
Microsoft Alias: jhendr

Thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.


Advanced order types: BracketOrders/OCO/OTO/TrailingStops

See also #366 and #189.
Bracket Orders:

Simultaneous orders that aim to limit profits and losses
http://www.investopedia.com/terms/b/bracketedbuyorder.asp
http://www.investopedia.com/terms/b/bracketedsellorder.asp

One-Cancels-the-Other(OCO):

An order that cancels a different open order upon success (necessary for brackets)
http://www.investopedia.com/terms/o/oco.asp

One-Triggers-Other(OTO):

An order that triggers another order to be placed upon success
http://www.investopedia.com/university/intro-to-order-types/conditional-orders.asp

Trailing Stops:

A fixed nominal or percentage amount from the peak price after purchase that triggers an order
http://www.investopedia.com/terms/t/trailingstop.asp

Most of these could be implemented by adding an optional trigger callback to order objects, which can then be used with the already implemented order types.

This issue should also cover fixing limit orders
https://github.com/quantopian/zipline/issues/1369

Other related issue: https://github.com/quantopian/zipline/issues/189


Solution for issue 881

Hi, I added a test case for issue 881: if you add it to your clean master you can see it happening. The test case is in file tests/AsyncConcurrencyTestWithThreads.cs
I refactored a lot of code by using async-aware Nito.AsyncEx 5.0 locking library: all task synchronization now uses AsyncLock class.
Around AsyncLock I built a g
Fixes #eneric class ObjectWithLock that wraps an instance of type T and makes it available only if you obtain the lock. The source of this class is at the end of SqliteAsync.cs
it is used this way:
var example = ObjectWithLock<MyClass>();
using (var instanceAccess = example.Lock())
{
    // instanceAccess is an IDisposable interface that exposes (through the Obj property)
    // the lock-protected MyClass instance.
    // when the interface is disposed, the lock is released.
    instanceAccess.Obj.MyClassMethod()
}

The above class supports also LockAsync() and timeouts for obtaining the resource
I Used such class for refactoring all the lock() protected objects in sqlite, for example now there are these two classes:
internal class Mappings : ObjectWithLock<Dictionary<string, TableMapping>>
{ }
// i am indenting the code this whay only here, just to make the nested structure
// more understandable
internal class InsertCommandMap :
      ObjectWithLock<
                  Dictionary<
                            Tuple<string, string>,
                             ObjectWithLock<PreparedSqlLiteInsertCommand>
                      >
        >
{ }

`
I refactored the _TransactionDepth from a simple integer to a dedicated TransactionDephtTracker that holds that integer and protects it with an AsyncLock. The way I implemented it should solve also the "mild race condition" that was referred in the comments... or if I interpreted correctly which was the race condition the comment was referring to.
I could be wrong but I felt It was a bit of an overkill to use InterlockedExchange (and methods like those) for achieving thread safety: I don't think that the speed improvement achieved by using InterlockedExchange instead of lock() is noticeable considering that immediately after you are going to have sqlite parse and execute things like "begin transaction" that surely involve disk access.  I feel that it is cleaner this way.
SQLiteConnectionWithLock now isn't anymore a class derived from SQLiteConnection, but it derives from ObjectWithLock. It bypasses the locking mechanism, by exposing them directly, only those properties and methods of SqliteConnection that do not require any locking, but to call methods that require exclusive access you need to obtain the embedded SqliteConnection instance by explicitly calling Lock(), LockAsync() (or the versions of these methods that accept a timeout parameter).
As an optional feature (that I couldn't expose directly as a property of SqliteAsyncConnection because I think you added some trick in github that doesn't allow me to modify the external interface of such class) I added the possibility to use automatically the "BusyTimeout" set for the database also as a default timeout for SQLiteConnectionWithLock.Lock() calls anyway it is off by default and Lock() calls do wait forever. I added a test case for demonstrating this feature, anyway: (can still be enabled, but requires a bit more complicated call)
I also modified a bit the implementation of the AsyncTests in order to allow them to be executed in parallel (I use NCrunch as a test runner, and It can do it) by having each test create its uniquely-named database file, instead of using a fixed filename used in turn by each test.

Hello,
Thank you very much for this work. However, I do not like the dependency on Nito. Surely this can be done with the BCL primitives.
Way too much has changed here for me to audit. That said, I totally want your unit tests so will take those bits.
Thank you!

Would you consider giving my changes a second tougth If i drop Nito.AsincEx and use the Monitor class as a locking mechanism? I think it is an easy change to be implemented.. and I feel that my changes make the code a bit more robust (see the racing conditions I eliminated) and make it more difficult to do introduce errors, since (the way I wrote it) it is impossible to access lock-protected data structures without using the "using (access=Resource.Lock()) {}" pattern...

(we can discuss the changes on a teamviewer session if you want, if you don't mind my bad spoken english)

I did remove the NitoAsync package and I rewrote the lockings using just the monitor Monitor class.
Are the merge conflicts I am seeing now due to something you have done to try to address the same bug?
I am asking because my solution passes all the tests, I have fixed them to be run in parallel with each (avoiding conficting database file names among different tests) and they are have been running continuosly and in parallel (using NCrunch "churn mode") for 2 hours without having any issue..

Ah, ok... i didn't notice you already released a bugfix,


Unable to run sync route execution longer than 60 seconds

Container unexpectedly dies during sync execution but runs fine in docker using command after 1 minute execution:
docker run -d -i -P denismakogon/aioservice-examples:latest
Images:

denismakogon/aioservice-examples:latest
denismakogon/sleep120:latest

Steps to reproduce:
curl -X POST -d '{"app":{"name":"testapp"}}' localhost:8080/v1/apps
curl -X POST -d '{"route":{"type": "sync", "path": "/sync", "image": "denismakogon/sleep120"}}' localhost:8080/v1/apps/testapp/routes
curl -X POST localhost:8080/r/testapp/sync
Function logs:
When POST to /r/{app}/route submitted
INFO[1442]                                               name=run.testapp.requests type=count value=1
INFO[1442]                                               name=run.testapp.waittime type=time value=0s

When container dies
INFO[1502] container status                              container_error= container_finished=2016-11-24 09:37:59.410257982 +0000 UTC container_running=false container_status=exited exit_code=137
INFO[1502]                                               name=run.testapp.error type=count value=1
INFO[1502]                                               name=run.testapp.time type=time value=1m0.06911744s
INFO[1502]                                               name="run.exec_time" type=time value=1m0.06911744s

But both containers are capable to run on Docker successfully.
It appears that sync func can run no longer than 60 seconds (Docker ReST client default HTTP timeout is 60 seconds).
Functions latest commit: af14904
Go version: 1.7
Docker version: 1.12.3, build 6b644ec

This is a bug. The problem is that there is a hard-coded 30s timeout in the source code.
https://github.com/iron-io/functions/blob/c14bc323f97f4c8d11628b27496903f80dab962e/api/server/runner.go#L172
@treeder @pedronasser @seiflotfy - what would the appropriate fix? Is the timeout an attribute of the route or the task call?

@ccirello would be the right fix to set execution timeout through API? There are three cases possible:

No timeout specified - use default 60 seconds (or whatever it be)
Timeout specified - run within timeout
Run until not finished

cc @treeder @pedronasser @seiflotfy

would be the right fix to set execution timeout through API?

I don't see any other place to land the fix. :) It must be in the API - the only you way you can interface with IronFunctions daemon.
However, is this an attribute of the route (PUT /v1/apps/{app}/routes/{route}) or the task (POST /r/{app}/{route})?

@ccirello as i can see, it should be a part of routers API (POST /v1/apps/{app}/routes/{route}).

I think the Timeout should be configured in the route/apps configuration and even maybe via a Header. If no timeout is specified use the default. (like @denismakogon suggested)

@pedronasser to what kind of headers you're referring to?. We already have config object in payload, can't we just check on the API side if timeout was specified or not. In such case we have very small API impact (AFICS, only doc/swagger impact).


Retry using different pod when node shutdown.

When node shutdown then the retry pod will always use the same pod because it can not recongize that the pod can not work anymore and k8s can not delete it before the node recovered and it will cause retry is actually not working.
I fix it by check the DeletionTimestamp to know if the pod is actually not work any more.
Fix https://github.com/tektoncd/pipeline/issues/6558

Changes

Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs if any changes are user facing, including updates to minimum requirements e.g. Kubernetes version bumps
[ ] Has Tests included if any functionality added or changed
[ ] Follows the commit message standard
[ ] Meets the Tekton contributor standards (including functionality, content, code)
[ ] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[ ] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings). See some examples of good release notes.
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

thanks @yuzp1996! Could you please add tests for this functionality?
I'm surprised that this change is all that's needed to retry on a new node. I would think the taskrun controller would need to handle creating a new pod and updating the pod name in the taskrun status. Could you share some more details on how you tested out this bug fix?
@pritidesai you might be interested in this PR.

/ok-to-test

/assign

@yuzp1996 please feel free to reopen this PR when you pick up this work 🙏🏾
/close
(cleaning up old PRs)


[PAPRIKA] Fix ion concentration in in system setup

This PR provides a small bug fix so that the correct ion concentrations are added to the host-guest system.

Oops, made a mistake in the choice of the branch to merge to.


Header is collides with the content in the mobile design.

The header collides with the body content in responsive mode. Is there going to be a change in header format?. Or may I fix this issue?

@PorePranav  hey kindly assign it to me ... i make sure that i am the best for the responsive designs.here is the proof of work  that i have done  (https://voting-app-65gn.onrender.com/)

@arun0452
Thank you for opening up the issue, however, the bug is due to the fact that the website is not currently responsive. I already have other people working on the same issue, hence I won't be able to move forward with this one.


[Help pls] Need help to recover funds 25% wallet 75% Channels. Version < 1.1

Hi, i got a problem with my raspiblitz, i cant connect through ssh and cant connect through RTL.
I got access to the HDD and SD card though.
My display says i need to login with root but my masterPW dont work on it somehow.
I tried to login with a direct keyboard on the raspberry pi,
What can i do here to backup my funds / btc in open channels + wallet?
Previous Errors, now i dont even get that far anymore:
https://i.imgur.com/24qB1NO.jpg
https://imgur.com/YNuXFlc
https://i.imgur.com/n3WPjTE.png
I m not sure how to recover my funds here now.
I got 25% of my funds in the wallet and 75% in channels.
Since i have a older version (i m not sure where to see which version), i dont have the following things to recover my funds:
v1.1 lnd.rescue.sh
v1.2 channel.backup
So i m not sure now what todo without losing funds. I read alot that people r able to get their wallet funds through their Seed but they dont get the channel funds back. Some even dont get the funds of the wallet balance what makes me worry now since my amount is not that small here.
Previous Issue: https://github.com/rootzoll/raspiblitz/issues/674

Burn a new SDcard with the most recent version.
Booting with the new SD will recover all your funds if the data on the HDD is intact.
You can also boot your computer with a Linux USB (as suggested by @rootzoll before) and make a copy of the lnd directory on the HDD. That would allow to restore your funds if copied over to a working RaspiBlitz.

I just tried as u mentiond to burn v1.2 on a new SD card.
After starting the raspberry pi with the new SD card and the old HDD and connecting through ssh i had to pick a new name for the raspiblitz and setup the passpords A and B.
After those steps it showed the following:
https://i.imgur.com/YQ9kSPn.png
It was unexpected to me so i did "sudo reboot"
After reboot it showed this same as the old SD card where i´m not able anymore to login with my password
https://i.imgur.com/EJmsWRS.jpg
I repeated all steps until this message
https://i.imgur.com/YQ9kSPn.png
Now i m at this point: https://i.imgur.com/j03aNmn.png
And i dont know where to go from here.

It seems that your HDD is corrupted.
There is a slight chance that it is because it does not get enough power.
Best would to try to attach it to PC booted with Linux to see if you can copy the lnd directory.
Here is how you can make a bootable Ubuntu USB: https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-windows#0
Test it only, you shouldn't modify your PC system at all apart from booting form USB.
Alternatively you can try to use  Y-cable with external power or a powered USB hub to give exyra power to the HDD when you connect to the RaspberryPi.
There is a chance, that your lnd data is gone.
In that case you should be able to get back the onchain funds with the seed.
There is an experimental method to attempt to get back the funds in channels as well following this guide: https://medium.com/@guggero/did-you-lose-funds-on-the-lightning-network-because-of-a-disk-crash-8971b6a92494

I opened the Hdd with a software called "DiskInternals Linux" and yes i m able to backup the "lnd" folder.
But what i do with it?

Good news. I recommend to run with the new SDcard to obtain a channel.backup with the new lnd version.
Your HDD was corrupted (lucky that the channel information seems to be intact), make sure you have a backup off device as it is likely to happen again. You could benefit from continuous backup to  Dropbox as well:
https://github.com/rootzoll/raspiblitz#b-dropbox-backup-target
Consider using a Y cable and extra power or a powered USB hub for you HDD as usually the problem lies with power supply issues to the HDD.

Unfortunately an error appeared after 15% sync of the bitcoin blockchain.
https://i.imgur.com/JlcNtsS.png
Error log: https://termbin.com/cq1n
I was able to connect to RTL while syncing and see the total amount of wallet & channel funds in there.
After the error, i was able to get into the main menu but not be able to really do anything in there since the blocks werent synced.
After reboot i cant login anymore now and i have to newly setup the SD again.
Any idea what todo now? I just need to somehow close the channels to afterwards use my seed to save the funds. Can i somehow close the channels without syncing the blocks?

Your data hard disk still does not seem to function properly. Did you change anything with the power (powered SB hub/ Y cable)?
If you are running in a closed case, remove the sides to avoid high temperatures too.
Once you get everything synced you will need to copy your backed up lnd directory in place of /mnt/hdd/lnd/:

login with ssh to your RPi and stop lnd with:
$ sudo systemctl stop lnd

copy the backed up lnd directory from your PC in place of /mnt/hdd/lnd/
You can do it with SCP from the terminal or use WINSCP as described here: https://stadicus.github.io/RaspiBolt/raspibolt_50_mainnet.html#copy-using-winscp

when done restart your RPi from the terminal:
sudo reboot

When starts up again it should come up with your old funds and channels. Will need to use your old lnd wallet paasword (password C) to unlock the wallet.

Your data hard disk still does not seem to function properly. Did you change anything with the power (powered SB hub/ Y cable)?
If you are running in a closed case, remove the sides to avoid high temperatures too.
Once you get everything synced you will need to copy your backed up lnd directory in place of /mnt/hdd/lnd/:
* login with ssh to your RPi and stop lnd with:
  `$ sudo systemctl stop lnd`

* copy the backed up lnd directory from your PC in place of `/mnt/hdd/lnd/`
  You can do it with SCP from the terminal or use WINSCP as described here: https://stadicus.github.io/RaspiBolt/raspibolt_50_mainnet.html#copy-using-winscp

* when done restart your RPi from the terminal:
  `sudo reboot`

When starts up again it should come up with your old funds and channels. Will need to use your old lnd wallet paasword (password C) to unlock the wallet.

Thank you.
My node got synced now after copying the backup LND folder and i got my channels and funds back and i was able to close my open channels and send the funds to my normal wallet.
I still have to make a new setup again because some commands in the main menu like for example checking balance give out some errors and dont work.


Catch not work, "missing at least one required field for message ..."

I get this error when I try example (b.), the problem occures here:
b.EncounterPokemon(currentPokemon, function(suc, dat) {

/Users/USER/Sites/nodePokemon/node_modules/protobufjs/dist/protobuf.js:2661
throw(e);
^
Error: Missing at least one required field for Message .RequestEnvelop.EncounterMessage: .RequestEnvelop.EncounterMessage.spawnpoint_id
at Error (native)
at ProtoBuf.Reflect.MessagePrototype.encode (/Users/USER/Sites/nodePokemon/node_modules/protobufjs/dist/protobuf.js:3118:27)
at MessagePrototype.encode (/Users/USER/Sites/nodePokemon/node_modules/protobufjs/dist/protobuf.js:2657:27)
at Pokeio.self.EncounterPokemon (/Users/USER/Sites/nodePokemon/poke.io.js:392:65)
at /Users/USER/Sites/nodePokemon/run.js:47:27
at /Users/USER/Sites/nodePokemon/poke.io.js:277:7
at Request._callback (/Users/USER/Sites/nodePokemon/poke.io.js:143:16)
at Request.self.callback (/Users/USER/Sites/nodePokemon/node_modules/request/request.js:187:22)
at emitTwo (events.js:100:13)
at Request.emit (events.js:185:7)

we are fixing it just wait the next push


Yosys optimization of combinational logic with don't care

I'm simulating and synthesizing simple circuits described in VHDL and synthesized with Yosys and web downloaded stdcell libraries.
The minimal working example of the circuit that I'm synthesizing is below.
entity test is port(
A : in std_logic_vector (3 downto 0);
Y : out std_logic);
end;
architecture beh of test is
begin
with A select
Y <= '0' when "0001",
'1' when "0010",
'0' when "0100",
'1' when "1000",
'-' when others;
end beh;
In my opinion, and by using other synthesis software as Quartus, the description simplifies to the logic
Y <= A(1) or A(3);
Bu Yosys produces a more complex circuit that seems to be ignoring the don't care condition and sees the condition as '1'. Indeed it seems that Yosys is synthesizing the following VHDL description:
with A select
Y <= '0' when "0001",
'1' when "0010",
'0' when "0100",
'1' when "1000",
'1' when others;
The Yosis script I'm using is the following:
ghdl  test
hierarchy -check -top test
flatten
proc; opt -full; memory; opt -full; fsm; opt -full
techmap; opt -full
read_liberty -lib synth_gates.lib
dfflibmap -liberty synth_gates.lib
abc -liberty synth_gates.lib
splitnets -ports; opt -full
clean -purge
The std_cell library does not really matter since the same happens with three different std_cell libraries.
I can also tell that if the order of the of the lines is changed as:
with A select Y <= '0' when "0001",
'1' when "0010",
'1' when "1000",
'0' when "0100",
'-' when others;
then Yosys treats the dont'care cases as '0'.

Yosys has never been really good at this. See for instance  #765
FWIW, In the end I've had better results by generating truth tables externally, feed those through a logic optimizer and then feed the resulting and/or tree to yosys for lut mapping than leaving yosys do it itself.


fixing issue 214, keyError(data) when calling tag_recent_media

As discussed here: https://github.com/Instagram/python-instagram/issues/214
The code i'm trying to merge solve my problem. Not sure if it's the right solution, but it looks correct.

:+1:

This solved my problem too! Thanks

How can I apply this code to my environment managed by pip?


[UI] New Tab -> Paste Doesn't Replace Start URL

OSX, latest Beaker.
When I open a new tab and then press "APL+V" to paste, the base URL doesn't get replaced, so the resulting URL in is "beaker://start/dat://mywebsite.hashbase.io", which is obviously invalid.
Annoyingly, this doesn't happen every single time, but it does happen enough to be quite irritating. If I find a better way to reproduce it, I'll add that here.

Here's a repro:
Open a working or not working site. Select the URL. Open a new tab. Press paste. You will have a "beaker://start/dat://mywebsite.hashbase.io" URL.

Yeah this is a real pain! I've got this fixed in the upcoming release (just fixed it last week). Sorry to make you wait for 0.9 but it is solved.

Nice! Thanks!


Add defaultProps to AbstractComponent

Partial fix for https://github.com/facebook/flow/issues/7467
But I don't think it's faithful to how Flow models defaultProps ?
$Rest<X, {}> is basically better $Shape (makes fields really optional)

This is not sound:
class A extends React.Component<{| foo: number, bar: number |}> {
  static defaultProps = {foo: 3};

  render() {
    this.props.foo.toString();
  }
}

const AC: React.AbstractComponent<{| foo?: number, bar: number |}> = A;

AC.defaultProps = {bar: 3};

<AC bar={3} />; // foo is undefined at runtime, so the `toString()` call will error.


Update LOCALIZATION_CONTRIBUTORS: Add Oki Gunawan

Changes

Implementation details

How to read this PR

Screenshots

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Pointer's copy_from|copy_to|move_from|move_to are inherently broken.

Following lines certainly lead to wrong behavior on 64bit platforms with large arrays cause of #to_u32.
https://github.com/crystal-lang/crystal/blob/46e9d81b965d9e00dea4aeb0002999c756545b6a/src/pointer.cr#L245
https://github.com/crystal-lang/crystal/blob/46e9d81b965d9e00dea4aeb0002999c756545b6a/src/pointer.cr#L258
https://github.com/crystal-lang/crystal/blob/46e9d81b965d9e00dea4aeb0002999c756545b6a/src/pointer.cr#L499
BTW, why Crystal has neither size_t nor intptr_t equivalent? Some places uses UInt64, some uses UInt32 (like this one). It is just... infantile.
For example, Go defines int to be ssize_t and uint to be size_t, and has intptr and uintptr (though, looks like on all supported platforms they have same size to int).
Having platform dependent int has profit in low-level programming, and dis-convenient for application level programming, so it certainly should not be default type.
But still any place that deals with low-level memory handling should operate on platform dependent types/aliases instead of raw UInt32 and/or UInt64. This bogus lines are just tip of iceberg.

I wouldn't really consider it inherently broken, since, if you're copying >2GB of data at once, your program is probably screwed up beyond belief anyway.

Actually, no; it'd have to be four gigabytes of data in one copy in order to cause trouble.

If you think, real programs doesn't do such "crazy" things, you are not right.
It is broken. You may say "it is workable on useful sizes". But it is still broken on "acceptable" size.
Either error should be thrown, or behavior should be fixed.

Crystal isn't C. Please keep this in mind and be nice when asking questions or reporting issues.
All sizes in Crystal (e.g. String, Array, StaticArray, Slice or Pointer) are clamped at Int32::MAX. This is by design and that won't change. We use a 32 bit number because larger values are considered broken (i.e. don't bloat memory, stream). We use a signed number because we don't want to leak unsigned integers that would lead to confusing behaviors (e.g. when operating on Slice#size). A maximum of 2GB is already plenty enough.
Now, since we clamp values, and users may try inconsiderate sizes, we should have bound checks and raise an ArgumentError when values are too large. Would you be willing to open a pull request, with passing specs?
Relates to #3209.

@ysbaddaden I think that String and Array should use Int32 but Slice should have a 64-bit size. Slice is more low level than the other types and isn't resizable so it makes sense for it to support larger sizes: it's a "window" on some memory, you don't always control the memory or it's size. Pointer obviously supports 64bit already.

Reading pointer.cr you're right. It does support 64 bit addresses, but it's always 64 bit (even on 32 bit platforms?), it sometimes casts sizes to UInt64 (malloc, realloc) but to UInt32 in other places (clear, copy, move). This seems illogical and incompatible from a quick look.
@RX14 that would defeat the purpose: if I can allocate a Slice with Int64 size, while should String or Array be limited?

@RX14, @ysbaddaden  unfortunately mentioned lines are from pointer.cr , so it is Pointer broken.
At least you should fix this lines of Pointer.

We use a 32 bit number because larger values are considered broken (i.e. don't bloat memory, stream).
A maximum of 2GB is already plenty enough.

I'm not against using Int32 as base type for size of all standard-library containers. That is really ok.
But language that claims it suitable for some low-level programming have to have convenient types for.
Lets have Int32 for container's size and IntSize for allocation and IntPtr for pointer arithmetic.
I don't think It is ok to use UInt64 in many places if your platform is 32bit.

All sizes in Crystal (e.g. String, Array, StaticArray, Slice or Pointer) are clamped at Int32::MAX

Sizes, but not memory size of allocated pointer. How much will consume a = Array({Float64, Float64, Float64, Float64}).new(1<<29 - 1)? It will allocate 1<<34 bytes. Yes, it will be correctly allocated now cause in appropriate places you use to_u64 (hope it never breaks on 32bit platforms).  But a.unshift 1.0 is currently broken for such array.

@ysbaddaden because array uses realloc while slice doesn't. Array owns the memory it allocates and uses realloc assuming the memory is small. String because 2gb strings you've gone too far. Whereas slice represents a pointer and a size. A window on memory. It makes no assumptions about what's in that memory it just let's you access it. That memory could come from a C program which allocates more than 2gb of memory. A slice could be used to represent a mmap of a file on disk. These are perfectly valid usecases for a slice larger than 2gb.

@RX14 This is a valid claim, but Crystal doesn't aim for this, and we shouldn't care about potential large allocations C. If we assume Int32 is plaintly enough, then Slice must follow. Developers are discouraged to use Pointer and to use Slice instead. If Slice.new(5.gibabytes) is allowed, we'll get complains that making a String from a large slice is broken... and so on.
We're already kinda forced to have Pointer handle large sizes, due to Int32::MAX * sizeof(T) being possible —though maybe we should just raise, because nobody should do that; I mean with T=Int32, that's 8GB, with T=Int64, that's 16GB... seriously?

Either you should raise, or just fix move_from, copy_from and clear.
I agree with you intention to simplify application programming.
But since language provides low-level features, they should just work.
Lets be clear: Slice, Array, String - they all are part of Standard Library, cause they could be implemented without intrisicts/primitives.
Pointer is a part of language, cause it is known by compiler and implemented with intrisicts.

Reading very large files is a common task even for applications with 32-bit addressing. These are tools such as grep, diff, databases, video processing and much more. In this case, the Flle MMAP is fine and yes, it requires 64-bit addressing in files and memory.

Disappointed with these decisions. "Crystal is not C" isn't a valid excuse for not making a low level feature work properly.

I hope that these are just leftovers from the past. There certainly has been an effort to clean up these "32isms". Also note that LibC::SizeT etc. do already exist.
https://github.com/crystal-lang/crystal/issues/823 https://github.com/crystal-lang/crystal/commit/4d350892e0755d9838b1a6601f1d726c3b9ed388
And yeah, some comments here have been worrying. It's never OK to have randomly breaking code when someone happens to allocate a memory region over 2GB.

All of this should be fixed, but it's hard. The main issue is that if Pointer#address changes of type depending on the architecture, then some methods might break. For example maybe a method accepts UInt32 but Pointer#address is sometimes UInt32, sometimes UInt64. I don't see an easy way to fix this. But having Pointer#address be UInt64 all the time seems good, because UInt32 fits in UInt64.
Those to_u32 calls are wrong, they are probably there from before Instrinsics.memcpy was updated to provide a 64-bit alternative.
As @oprypin says, most of these things are left-over from the past. We should fix them slowly, though I don't know what maximum sizes should Slice, String, Array, Hash, etc. have. Maybe Slice can have a size of Int64. When trying to create a big string from it we can simply raise an exception.

There's an easy fix for this, it's making a new numeric type like PointerAddress that uses 32 or 64 bit ints under the hood.

@zatherz As we pointed - there is LibC::SizeT and we need simply LibC::PtrDiffT too. But it need some time to rework things inside the compiler (https://github.com/crystal-lang/crystal/pull/4624#pullrequestreview-46246944)

So, what's the real issue here? What code breaks?
I think we can:

Keep Pointer#address as UInt64 (in 32 bits systems, this will just be a value less than or equal to UInt32::MAX)
Fix Pointer#copy_from, etc., to not cast some values with to_u32
Maybe make Slice have a size that's UInt64, and also update String to check that the slice given to it in the constructor has a size less than some maximum allowed.

Is there any other thing that needs a fix?

So, what's the real issue here? What code breaks?

$ # still correct, cause sizeof(array) = 2 GB
$ crystal eval 'a=Array(Int64).new((1<<28)-1){|i| i.to_i64}; p a.reduce{|s,v|s+v}; a.unshift(1_i64); p a.reduce{|s,v|s+v}'
36028796616310785
36028796616310786
$ # wrong, cause sizeof(array) = 4 GB (but number of elements = 512M)
$ crystal eval 'a=Array(Int64).new((1<<29)-1){|i| i.to_i64}; p a.reduce{|s,v|s+v}; a.unshift(1_i64); p a.reduce{|s,v|s+v}'
144115187270549505
144115186733678596
$ # segfault?
$ crystal eval 'a=Array(Int64).new(1<<28){|i| i.to_i64}; p a.reduce{|s,v|s+v}; a.unshift(1_i64); p a.reduce{|s,v|s+v}'
36028796884746240
Invalid memory access (signal 11) at address 0x20000000
[0x55cc41f78e55] *CallStack::print_backtrace:Int32 +117
[0x55cc41f6d71d] __crystal_sigfault_handler +61
[0x7f972e499670] ???
[0x55cc41fb505e] *Pointer(Int64) +14
[0x55cc41fb4ecb] *Array(Int64) +267
[0x55cc41fb4db2] *Array(Int64) +18
[0x55cc41f5e0cf] ???
[0x55cc41f6d619] main +41
[0x7f972dabe3f1] __libc_start_main +241
[0x55cc41f5d76a] _start +42
[0x0] ???

We can probably limit the size of an array. Why do you want an array that big? What's a use case for that?

@asterite you asked wrong question.
Whenever one write program that accepts arbitrary data, there is a chance to have enough data to trigger limit.
512M elements is not too big array. I had to deal with such arrays at least twice solving real world issues. (I didn't use crystal for solving them). I don't remember exact tasks. Something about collecting and aggregating data.
What will change if it will be not Int64, but Tuple{Int64, Int64, Int32, String} ? Array size will be limited by (1<<32)/sizeof(Tuple{Int64, Int64, Int32, String}) ?
2G elements is annoying, but acceptable limit. If there will be stricter limit, Crystal will loose a lot of usability.
And, any way, Pointer is not container. Pointer shall not have any restrictions beside hardware/operating system. Otherwise Crystal is just a toy.

Java's List#size is int: https://docs.oracle.com/javase/7/docs/api/java/util/List.html#size()
So I guess Java is a toy?

I understand now. We can have Int32::MAX elements, but it still behaves wrong. The problem is that I can't seem to understand the issue from those one-liners. Would you care to explain what's wrong with Array implementation that makes it work wrong, and why my comments here ( https://github.com/crystal-lang/crystal/issues/4589#issuecomment-328832169 ) wouldn't fix that issue?

Would you care to explain what's wrong with Array implementation that makes it work wrong

I think, problem is on Pointer side.

why my comments here ( #4589 (comment) ) wouldn't fix that issue?

I think, it will fix. (Note, if flag? in intrinsics.cr should check aarch64 as well).
Part of discussion is about: isn't it better to use SizeT and IntPtrT in such places?

@funny-falcon adding type aliases for integers which will probably change between platforms probably isn't something we want to do, as unlike C our integers don't automatically convert (a good thing). We already have that issue with some C types (for example, the bigint PR that broke on 32bit), lets not spread it around the stdlib too.
I agree with @asterite's suggestion of what to do entirely.

I'll send a PR to fix all of this later today.

@RX14
bigint PR is a bad example: it was broken exactly cause every one forget about distinction between types on different platforms, and how libgmp uses this type.
Now there is a risk to forget, how external libraries uses intptr_t, uintptr_t, ptrdiff_t. So, not using native platform type increases risk of bugs, not decrease, as you assume.

Sent PR: https://github.com/crystal-lang/crystal/pull/4960


feat: Added DocExpr

feat: Added precompilation

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

43 of 47 (91.49%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.3%) to 86.981%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/parsing/macrocall.jl
10
11
90.91%

src/precompile.jl
33
36
91.67%

Totals

Change from base Build<PHONE_NUMBER>:
0.3%

Covered Lines:
1236

Relevant Lines:
1421

💛  - Coveralls


Precalculate some metrics

Precalculate some metrics (sessions used in percentage) for convenience of aggregation / alerting etc.

Solved in ad581b9d


NGP creates new volumes after updating the image

Checklist

Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?

Yes

Are you sure you're not using someone else's docker image?

Yes

Have you searched for similar issues (both open and closed)?

Yes

Describe the bug
I updated the image, and upon relaunching, I found that all my settings were gone. After some research, I discovered that if the docker container is updated it creates new data volumes to use.
I attempted to ensure that the docker container used created volumes in the compose file, but even then upon rebuilding the container, I found it continued to generate new anonymous volumes to store the data
Nginx Proxy Manager Version
2.9.18
To Reproduce
Steps to reproduce the behavior:

Create a container using the docker-compose.yaml method
Make some configuration changes
Run "docker volumes ls" and note the anonymous volumes created
stop the docker container
remove the docker container or pull the latest container image
run the docker compose again
Note there are two new anonymous volumes created and the container is completely reverted to it's default configuration

Expected behavior
Image/Compose file creates named containers that can be reused for data persistance. This way when the image is updated it doesn't wipe the configuration.
Screenshots

Operating System
Ubuntu Server 22.04

You should map /data and /etc/letsencrypt to a location on your host (or the default docker location) in your volumes. If not mapped everything will be wiped. This is true when redeploying any container. See https://docs.docker.com/storage/volumes/

I made several attempts to spin up a container with specific volumes created and mapped in the docket-compose.yaml and it still was creating anonymous volumes. If you have had a

I made several attempts to do this in the docker compose file and no matter how I mapped things it still stored all the data in an anonymous docker volume. Cursory research of other docker forums seems to indicate this is a problem with the docker file itself. If you have a working docker compose file that is working, could you post the lines that map those volumes?


Update cloudwatch, sdk-core, ses, sns, sqs, ssm to 2.20.151

About this PR
📦 Updates

software.amazon.awssdk:cloudwatch
software.amazon.awssdk:sdk-core
software.amazon.awssdk:ses
software.amazon.awssdk:sns
software.amazon.awssdk:sqs
software.amazon.awssdk:ssm

from 2.20.150 to 2.20.151
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #2904.


Figure out scrolling/clipboards for Teleport

How to enable the features for remote access.

Just not supported in Firefox haha


[Bug] Malformed Manifest

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED:
Failed parse during installPackageLI:
/data/app/vmdl627376597.tmp/base.apk (at Binary XML file line #27):
mp.com.binabh.basedcooking.based_cooking.MainActivity:
Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present

@Rustmilian can you retry with latest version from source code or playstore? It should soon also be available in F-droid.
Thank you for reporting!

@Binabh  Based Cooking (Google Play) v1.0.3 works without issue. I'll close this issue after confirming that the F-droid version is working when it releases.

@Rustmilian can you confirm on F-droid? It should be working now.

@Binabh Unfortunately v1.0.3 isn't released in the F-droid repo yet.
May I suggest submitting to IzzyOnDroid. It's faster than F-droid when it comes to releases.

@Binabh F-droid version confirmed working.


type graph roam nodes disapper!

Version
4.4.0
Steps to reproduce
鼠标缩放平移，resize图表会出现节点消失，或者仅在缩放阶段就会出现
What is expected?
希望不会消失
What is actually happening?
缩放后 节点消失

Here is a  minimum reproducible demo for the issue :demo

Which node has disappered?

After resizing the chart (by resizing the window size), all nodes disappear, as shown in the figure-

I'm afraid I cannot reproduce this, even by calling chart.resize(). Does it require a specific window size?

重现步骤：1.Scale Chart by scrolling the mouse wheel   2.resizing the chart (by resizing the window size)。
then,all nodes disappear,this is 100 percent reproducible.
PS---Key: First scroll the scroll wheel to zoom chart！

OK. It can be reproduced.


Useless parameter for dockstore workflow convert

For the command dockstore workflow convert, one of the required params is --descriptor (CWL or WDL). This is useful for the dockstore tool convert equivalent, however since workflows can only be of one type we should remove this parameter and just use the actual descriptor type for the workflow.

There may be other commands for workflows with this parameter where we should really just use the set descriptor type for the given workflow.

Verified removed for at least
dockstore workflow convert entry2json and


Minio cluster

Issue migrated from https://api.github.com/repos/Jumpscale/digital_me/issues/9, opened by @FastGeert
We need to be able to deploy multiple instances of Minio for the same set of ZDB's, using a shared mongodb cluster for the metadata.
Things that need to be done to accomplish this.

Deploy a minimum set of 3 virtual zero-os machines with active / active database disk
In each zero-os start a mongodb container with hostnetworking, make sure the mongodb uses the mounted path to the database disk
Initiate the MongoDB replicaset

See

commented by @zaibon
Is this a duplicate of #8? I don't really a difference between the two issues

Architecture has changed. This is obsolete now


BUG/TST: Retain encoding upon concatenation

Retain encoding upon concatenation of DataArray or Dataset.

[ ] closes #1297
[ ] tests added / passed
[ ] passes git diff upstream/master | flake8 --diff
[ ] whatsnew entry

This looks pretty good. We also should make sure that the Dataset.encoding attribute is passed on.

Concatenation of DataArray and Dataset use the same underlying code, do you mean specifically for the test?

No, I mean that there is an encoding attribute on the Dataset in addition to the DataArray that should also be propagated. I think you'll need to basically repeat what you did in variable.py for the Dataset: https://github.com/pydata/xarray/blob/10fc0846b1ae86d729ffd855641f4510947085a9/xarray/core/combine.py#L223

@gerritholl - do have questions about my last comment? This should be pretty easy to get wrapped up and merged.  We also need a whatsnew entry.

Sorry, I've been really busy, but I'll get around to it eventually!

I have an updated version of this PR up at #1545.


Is there a way to exclude a filename from all backups?

What's your question?
I noticed that remotecache.vdf is included for some Steam Cloud backups, which seems to be a file steam uses to check when the save has changed.
Sometimes this file can be slightly different on several machines, which shows up as a delta change. I would prefer for it to be ignored.
Is there a way to globally exclude all remotecache.vdf files from all my backups, no matter the paths they are located?

This isn't possible right now, since the backup exclusions (backup.filter.ignoredPaths) only consider full paths. I'll look into adding support for files/globs in the exclusions as well.

Thanks for considering it.

In the next release, you'll be able to do this by specifying **/remotecache.vdf as a backup exclusion.


API for gapps (using it programmatically)

Is there a way to use gapps as a JS-library instead of using the CLI? Thank you!

I think there's a way to since index.js exports the commands. Perhaps only docs are missing?
module.exports.auth = require('./lib/commands/auth');
module.exports.init = require('./lib/commands/init');
module.exports.upload = require('./lib/commands/upload');
module.exports.defaults = require('./lib/defaults');

I'm investigating further...

So it works but it's a bummer that the commands themselves do console.logs, instead of just propagating errors to the program.

Hmm, good catch, that's a poor design decision. I think a PR propagating the errors to the top level would be really valuable.


[Installation]: no image for vllm/vllm-openai:v0.6.6.post1 on docker hub

Your current environment
The output of `python collect_env.py`

How you are installing vllm
pip install -vvv vllm

Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

latest one is for v0.6.6.post1 https://hub.docker.com/r/vllm/vllm-openai/tags

Thank you for letting us know! I have just uploaded it.


Add batch remove action for selected statements in T

A new option in the batch actions menu in S list. This action should be confirmed by a modal prompt.
This is motivated by #1588

implemented as multiple calls to delete one

@adammertel So this is done, and could be closed?
(Motivated not only by #1588, but also other things.)

@davidzbiral No I'm still working on the client side, but it's gonna be finished in upcoming days


Some native alert API invoked from JavaScript are not working

Is your feature request related to a problem? Please describe.
window.alert() and window.prompt() are not working on MacOS.
Describe the solution you'd like
Display dialog when window.alert() and window.prompt are invoked.
Describe alternatives you've considered
We can use dialog api in tauri.
Is there the reason why Tauri has a dialog api?
Would you assign yourself to implement this feature?

[x] Yes
[ ] No

Additional context
Add any other context or screenshots about the feature request here.

Did you enable the dialog > message allowlist in the tauri.conf.json?
Also we're not injecting our API in window.prompt yet so it won't work.

Did you enable the dialog > message allowlist in the tauri.conf.json?

I see. But is there reason why not use window.alert?
And could I try to implement window.prompt?

I understood some reason about using dialog.
https://github.com/electron/electron/issues/472


Run load tests

Problem

We have not yet tested how well Prisma Client Python scales. Scalability is a core concern with ORMs / database clients.
Suggested solution

Use Locust to write tests.
We should also include these tests in CI so that we can fail checks if there are any regressions and upload the results so they can be viewed on GitHub pages.

FYI, I have some basic performance data available. I can give a more specific timing on sections if you tell me what you're interested in profiling.

Last week, I built an API to ingest a file that has 256 thousand rows with 21 columns into postgres+flask. It's about 100MB of plaintext CSV data. This data is inserted into three tables:

Table 1 - one row with metadata about file (1 row, 6 columns)
Table 2 - all rows within file (256k rows, 21 columns)
Table 3 - metadata table tracking all possible items in database (256k rows, 9 columns)

Here's an anecdotal version of performance:

Processing the file is very fast so there's no significant performance hits before reaching prisma
prisma in python land is slow to convert into objects ready to send to the engine. A lot of time spent in prisma.builder.create, especially creating children (which are the 256k rows)
httpx is slow sending/receiving data
prisma is fast returning data

I had two versions implemented:

No transactions using connection pool

Batched rows to create_many. Upsert for table 3, No upsert for Table 1 and 2
~3 mins request to response

Transaction around Table 1 + 2, no transactions for Table 3 but with upserts:

Batched rows to Table 3, use create with relationships
Needed to increase httpx timeout to support this
~6 mins request to response

We're okay with 2 for now, but ultimately might move to doing a raw query transaction using INSERT + COPY instead for performance wins + transaction.

Wow! Thank you for the very detailed report.

I can give a more specific timing on sections if you tell me what you're interested in profiling.

I'm most interested in profiling the parts of the code base that we can improve; Things like building the internal Prisma query, sending the query to the internal engine, deserialising records etc.

Batched rows

Just to double check, by batched rows are you referring to the query batcher? e.g.
async with client.batch_() as batcher:
	batcher.user.create({'name': 'Robert'})

If not, I wonder if it would be possible to ingest all the data in a single batched query? This would give you the benefits of running in a transaction and hopefully performance benefits too. You would obviously still be bottlenecked by httpx.

This has given me an idea for a potential performance improvement - Prisma Python will still convert the data that Prisma gives us into pydantic models even if the returned pydantic models are redundant. Pydantic validation (while still fast) can incur significant performance costs especially when deserialising hundreds of thousands of records.
We should add a parameter to actions to disable returning records.

Looking into this a bit myself with a dataset of 500,000 records with 14 columns
On my local machine:

Loading from JSON took just over 1 second
Serialising raw data to internal queries took 37 seconds
Executing queries (500,000 batched create calls) took 285 seconds
Executing queries (500,000 records in a single create_many) took 91 seconds

@tday So if I'm understanding your use case correctly, it looks like your best bet would be to wrap multiple inserts within a batched query:
async with client.batch_() as batcher:
    batcher.table1.create_many(...)
    batcher.table2.create_many(...)
    batcher.table3.create_many(...)

Bearing in mind that create_many does not support nested relational fields so if you have any relations between these tables you will either have to use a pre-known ID for each relation or split it up to not using the batcher.

I actually did something a bit different by chunking up create many into multiple create many calls and then using a async.gather to maximize the io bound time. This was gave about the same time as your batch version, but without a transaction. Unfortunately, I do need the relationship which batcher doesn't support.
It seems like a nested write with a one to many relations executes many creates rather than a create_many. Is that a potential improvement?
Alternatively, it'd be nice if you could do something like:
with client.batch_() as batcher:
  result = batcher.table1.create_many
  batcher.table2.create_many({result.id ...}
   batcher.table3.create_many

prisma supports this with interactive transactions

I actually did something a bit different by chunking up create many into multiple create many calls and then using a async.gather to maximize the io bound time.

That is a smart solution 👍

It seems like a nested write with a one to many relations executes many creates rather than a create_many. Is that a potential improvement?

Could you elaborate more on what you mean please? Are you talking about the actual generated SQL queries?

prisma supports this with interactive transactions

I do have provisional support for this in a WIP branch, you could try it out by installing like so: pip install -U git+https://github.com/RobertCraigie/prisma-client-py@wip/transactions.
Unfortunately when I started working on this there were a couple of kinks that still needed to be ironed out on the Prisma side before I could officially add support. This has been improved in the latest releases I just haven't gotten around to finishing up the implementation yet: #53

Yea, the actual generated queries are different

I see, I wonder if it would be feasible for Prisma to be smart enough to create a single query from those batched queries instead of creating multiple queries.
I do not know how the SQL queries are generated internally, that's all handled by the Prisma engines team, so it might just not be possible, I'll have a look.


Slightly better JsonObject conversion

We use this a lot so it might as well not iterate multiple times if it doesn't have to.

Codecov Report

Merging #703 into master will increase coverage by 0.05%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master    #703      +/-   ##
=========================================
+ Coverage   86.54%   86.6%   +0.05%
=========================================
  Files          71      71
  Lines        2252    2262      +10
  Branches       86      91       +5
=========================================
+ Hits         1949    1959      +10
  Misses        303     303

Impacted Files
Coverage Δ

...re/shared/src/main/scala/io/circe/JsonObject.scala
93.79% <100%> (+0.52%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ea94d19...a87c44d. Read the comment docs.


Please Remove

Please remove language for BURMESE: Hashim Tin Myint

please write on this email:
<EMAIL_ADDRESS>


Fresnel - Circular Aperture test case failing.

I just reimplemented the Anderson and Enmark test case in PROPER, and get a peak intensity=3.13422, which agrees within the available precision with the value 3.134 that I digitized from the Anderson and Enmark PDF figure using GraphClick.
So that is clearly the value we should be aiming for. But not the value we are currently getting. :-(
That disagrees with both the value I get with @douglase's original code (peak=3.36), or my current code after various edits related to #103 and #104 (peak=3.89).  In fact it looks like something is pretty off because the number of oscillations is quite different. See attached.  I will try to dig into this more.

Found it. in fresnel.Wavefront.ptp() when calculating the rho value, the x and y separations are divided by 2. I believe that factor of 2 is unnecessary and wrong.
Changing that gets the periodicity of the oscillations correct:

The peak value is still a bit high compared to our references, and the POPPY output is visibly more jagged than PROPER. I believe both of these may be due to aliasing from the discrete (0 or 1) pupil amplitude, compared with the smoother gray edge that PROPER draws circles with. I've tested this by increasing the sampling and the POPPY output maybe does trend toward the PROPER and Anderson & Enmark values with increasingly fine sampling (at a cost in speed). I'm not totally sure though.
A while ago I started working (in a separate branch) to implement similar grayscale antialiasing of edges in POPPY, but never got that working entirely robustly. Might be worth revisiting that now, I suppose.  Though I kind of don't want to be juggling too many significant code overhauls at the same time!

The peak value is still a bit high compared to our references, and the POPPY output is visibly more jagged than PROPER. I believe both of these may be due to aliasing from the discrete (0 or 1) pupil amplitude, compared with the smoother gray edge that PROPER draws circles with. I've tested this by increasing the sampling and the POPPY output maybe does trend toward the PROPER and Anderson & Enmark values with increasingly fine sampling (at a cost in speed). I'm not totally sure though.

Nope! Other way around: in this case it turns out that POPPY was actually running at finer resolution than the default setup I'd made in PROPER, and likewise finer than whatever calculation Anderson and Enmark did.
If I brute-force it in PROPER (npix=16384, beam_ratio=0.125), I get a peak intensity equal to 3.30790.
And all those little ripples on the outer large ripples show up as well. There are only tiny remaining differences when compared to POPPY running at moderately high sampling:

If you click through to full resolution in the above image, you can see faint hints of some extra crosshatch/grid pattern noise near the center of the POPPY result, which I think is still the aliasing from the sharp-edged circle, just relatively faint since the sampling is not too low.
(NB. when doing such comparisons, one must keep in mind the slightly different conventions between PROPER and POPPY: PROPER defines npix as "number of pixels per side of the array including zero padding" while POPPY defines it as "number of pixels per side of the actual pupil, prior to padding". In the above figure I have labeled both using the PROPER convention so that it's the total number of pixels in the array that is FFTed.)


Denoise data – trainning

Hi,
Just trying to run a Keras model out but getting this error:
IOError: Unable to open file (unable to open file: name = 'denoise_data9.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

Can you please share the process you followed?


create hackathon page

create hackathon page

Good idea Simon! I'm not going to merge this because I don't think it's done yet. Move the hackathon information to a data file, and load it from there. Also, if you can remember them, try to add a few that are already done


New PR to test SignCLA at 2019-08-14 21:59:10.255657404 -0700 PDT m=+4.059562110

Body of PR

indiv-pass-fork-staging: test succeeded


Master manifest file

Work in progress and branched off from https://github.com/OctoLinker/browser-extension/pull/100
Based on the comment https://github.com/OctoLinker/browser-extension/pull/100#issuecomment-226648352 this PR adds gulp which allows us to extend the manifest file with additional information.
New commits on top of #100 are

5102bca22b9f6b6fe722ed868b59efda7bb1bc62
715abdf04ac8c2c27962c31fc1e9603199fddac3
55b20755051ff0a31b0ac3edcd9fb36060fa12f9
3dfa20f660381f37d319627a81c926a7c1d78b98

Wow, I wasn't expecting so much effort to go into generating the manifest files, but it looks like there's some other changes here too. I'm wondering if we really need gulp and all the reorganization, though. For example, we could generate chrome/manifest.json from firefox/manifest.json with this npm script (using the json package):
"build-chrome-manifest": "json -e 'delete this.applications' < firefox/manifest.json > chrome/manifest.json",

Likewise, the pack-repo task could be simplified to this npm script:
"pack-repo": "mkdir -p out && zip --recurse-paths out/octolinker-repository-$npm_package_version.zip * --exclude dist/\\* out/\\* node_modules/\\*",

What do you think?

Mhhh to be honest, I'm a bit prejudiced, as I worked a couple of hours to get it working 😄  I see you point and in general I totally agree, but maybe there is some good reason to use gulp – let me think ...

The firefox mainfest.json needs an additional permissions property https://github.com and chrome don't. Both need the permission https://githublinker.herokuapp.com/. How can we achieve that with https://www.npmjs.com/package/json?

Oh, I definitely understand not wanting to let your work go to waste 😄 I certainly have no problem with using gulp, but it just struck me as overkill.
Nice catch on the permissions difference between firefox/chrome manifest.json. I wasn't sure if that was intentional or not. Anyway, we could remove it from the chrome manifest.json by changing the npm script to this:
"build-chrome-manifest": "json -e 'delete this.applications; this.permissions.shift()' < firefox/manifest.json > chrome/manifest.json",

To tie in what I was saying about the package.json version in https://github.com/OctoLinker/browser-extension/pull/103#issuecomment-227255630, here's a script that copies the version property from package.json to firefox/manifest.json:
"update-firefox-manifest": "json -I -f firefox/manifest.json -e \"this.version = '`json version < package.json`'\"",

I'm gonna close this in favor of #107


feature(get parameters): Add support for get parameters

Adds support for get parameters in the basic resolver
Retains support for $_POST and other method parameters.

Ok, I've refactored it somewhat so that the superglobals $_SERVER, $_POST, and $_GET are accessed only in the resolve method, and passed through to getInputParams as before.
I've added a flag, $is_get to the method in order to determine whether the parseInput methods should be called.
The result doesn't effect the output, so the tests have remained the same.


Field wrap component

I'm submitting a ...

[ ] bug report
[x] feature request

I would like to ask if is possible to have an optional wrap component for a fields (or all the fields).
I need to create a strange form, where you have to enable/disable the field before using it.
I've started that by doing a custom field that would show a fake/disabled field with the value, and when you unlock it, it show the real field. But with this approach I have problem redeclaring and importing the original field.
Would be really useful if I can pass in the schema of the field, a wrapper component that is placed in the form and receive as the default slot the real field, and some other information (like the schema, model, etc) as props.
In this way we can create wrapper that interact with the field, or simply create more complex view.
Thanks
Best regards
Daniele

This feature is beyond the scope of VFG.  Your use case seems very particular to your application and doesn’t seem highly reusable.
My recommendation would be to just create a custom field component that is capable of receiving the real fields type, then adding that real field using a v-if ... look at the main VFG template for examples on how to add unknown fields (component tag with “is” attribute)


[FX-4409] Change commit format to Toptal's

FX-4409
Description
After RFC-39 being completed, we now need to move on to Toptal commit messages
How to test

Temploy
Checkout branch and try to commit something and push, it should fail when the message follows conventional commits and succeed on Toptal's format

Screenshots
No screnshots
Development checks

[NA] Add changeset according to guidelines (if needed)
[x] Read CONTRIBUTING.md and Component API principles
[x] Make sure that additions and changes on the design follow Toptal's BASE design, and it's been already discussed with designers at #-base-core
[x] Annotate all props in component with documentation
[x] Create examples for component
[x] Ensure that deployed demo has expected results and good examples
[x] Ensure the changed/created components have not caused accessibility issues. How to use accessibility plugin in storybook.
[x] Self reviewed
[NA] Covered with tests (visual tests included)

Breaking change

[NA] codemod is created and showcased in the changeset
[NA] test alpha package of Picasso in StaffPortal

All development checks should be done and set checked to pass the
GitHub Bot: TODOLess action

PR commands

List of available commands:

@toptal-bot run package:alpha-release - Release alpha version
@toptal-anvil ping reviewers - Ping FX team for review

PR Review Guidelines

When to approve? ✅
You are OK with merging this PR and

You have no extra requests.
You have optional requests.

Add nit: to your comment. (ex. nit: I'd rename this variable from makeCircle to getCircle)

When to request changes? ❌
You are not OK with merging this PR because

Something is broken after the changes.
Acceptance criteria is not reached.
Code is dirty.

When to comment (neither ✅ nor ❌)
You want your comments to be addressed before merging this PR in cases like:

There are leftovers like unnecessary logs, comments, etc.
You have an opinionated comment regarding the code that requires a discussion.
You have questions.

How to handle the comments?

An owner of a comment is the only one who can resolve it.
An owner of a comment must resolve it when it's addressed.
A PR owner must reply with ✅ when a comment is addressed.

@toptal-anvil ping reviewers


#1449 move cronjobs into environment variable to force in-pod cronjob

Changelog Entry
Bugfix - move cronjobs into environment variable to force in-pod cronjob (#1449)
Closing issues
closes #1449

Looks good to me :)