Connecting netconf device to netopeer2-cli

Hi all,
I have an issue when trying to connect device to netopeer2-cli. I would like to use netopeer2-cli to configure the device, but I am getting following errors.
Using netopeer(v1) the connection works and I can reconfigure the device, but want to move to netopeer2 as its used for other devices.  I understand the issue is caused by the characters sequences used, but what can I do to solve this problem?
I can not edit the devices yang models.
yuliya@ubuntu:~$ ping -c 4 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=63 time=0.985 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=63 time=2.49 ms
64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=63 time=1.04 ms
64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=63 time=2.70 ms

--- <IP_ADDRESS> ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3039ms
rtt min/avg/max/mdev = 0.985/1.806/2.702/0.796 ms
yuliya@ubuntu:~$
yuliya@ubuntu:~$ sudo netopeer2-cli -d -v3
[sudo] password for yuliya:
> connect --host <IP_ADDRESS> --port 830 --login superuser
Interactive SSH Authentication
Type your password
Password:
<EMAIL_ADDRESS>password:
ly ERROR: Encountered invalid character sequence "\.\-]*"".
ly ERROR: Module "vendor-types" parsing failed.
ly ERROR: Importing "vendor-types" module into "vendor-telemetry-subscription" failed.
ly ERROR: Encountered invalid character sequence "\.\-]*"".
ly ERROR: Module "vendor-types" parsing failed.
ly ERROR: Importing "vendor-types" module into "vendor-system" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-sw-upgrade" failed.
ly ERROR: Encountered invalid character sequence "\.\-]*"".
ly ERROR: Module "vendor-types" parsing failed.
ly ERROR: Importing "vendor-types" module into "vendor-rpc" failed.
ly ERROR: Encountered invalid character sequence "\.\-]*"".
ly ERROR: Module "vendor-types" parsing failed.
ly ERROR: Importing "vendor-types" module into "vendor-perfmon" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-port-pluggable" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-port-optical" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-port" failed.
ly ERROR: Module "vendor-ote-port" parsing failed.
ly ERROR: Importing "vendor-ote-port" module into "vendor-ote-port-ethernet" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-monitored-channel" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-ne" failed.
ly ERROR: Module "vendor-ote-ne" parsing failed.
ly ERROR: Importing "vendor-ote-ne" module into "vendor-ote-ne-ip-service" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-fru" failed.
ly ERROR: Module "vendor-ote-fru" parsing failed.
ly ERROR: Importing "vendor-ote-fru" module into "vendor-ote-fru-fan-module" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-fru-power-module" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-fru" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-equipment" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-ne" failed.
ly ERROR: Encountered invalid character sequence "\.\-]*"".
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-equipment" failed.
ly ERROR: Module "vendor-ote-equipment" parsing failed.
ly ERROR: Importing "vendor-ote-equipment" module into "vendor-dci" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-edfa" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-connection" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Module "vendor-ote-types" parsing failed.
ly ERROR: Importing "vendor-ote-types" module into "vendor-ote-port" failed.
ly ERROR: Encountered invalid character sequence "\d{4}-\d{2".
ly ERROR: Encountered invalid character sequence "\d+$)?[a-z".
ly ERROR: Module "iana-crypt-hash" parsing failed.
ly ERROR: Importing "iana-crypt-hash" module into "ietf-system" failed.
ly ERROR: Encountered invalid character sequence "\d+$)?[a-z".
ly WARNING: Identity found, but in a non-implemented module "ietf-x509-cert-to-name".
ly WARNING: Failed to resolve identityref "ietf-x509-cert-to-name:specified". (/netopeer-cfgnetopeer:map-type)
ly WARNING: Identity found, but in a non-implemented module "ietf-x509-cert-to-name".
ly WARNING: Failed to resolve identityref "ietf-x509-cert-to-name:specified". (/ietf-netconf-server:map-type)
>

Thank you,
Regards,
Yuliya

Hi Yuliya,
you should look at all the mentioned models and change the patterns with errors. With a bit of luck, all you need to do is enclose the patterns in ' instead of ". As for the last warnings, just implement the module mentioned (load it explicitly before other models).
Regards,
Michal


Make HTTPClient.child_spec callback be optional

My use-case is I want to use Tesla as an HTTP Client and use pre-configure Finch that is already defined in the application tree. But the HTTPClient requires the implementor to implement child_spec.
My proposal is to make child_spec optional and attach it to the supervisor if it's available. I can help working on this if you're ok with this proposal. :)
Thanks

@wingyplus yes, I think this is a good idea. PRs are welcome, absolutely! 🙏


Test simplification

To see what it currently looks like in gitlab-ci please see: https://gitlab.com/nickma/mbusd/pipelines/24092368

Note: This PR also includes https://github.com/3cky/mbusd/pull/34


WebMock should load "base64"

WebMock uses base64 but it doe not load base64 by itself. It may cause NameError: uninitialized constant WebMock::Util::Headers::Base64.

Thanks!


Shrink & clean up custom_set.json

Discussed here: https://github.com/exercism/discussions/issues/10
I'm trying to improve custom_set in two ways:

Reducing the test suite, to remove redundancy or uninteresting
implementations.
Changing test order to improve flow

Reducing the test suite
The previous test suite contained 74 tests, which is a lot. I haven't
checked all the exercises, but it's the biggest test suite that I've
come across.
If all of those tests provided value (exposing corner cases, improving
implementations, etc.) then that's fine. But I found there to be a lot
of duplicate tests. With the subset/union/etc tests, a student's
implementation is usually done by the 2nd or 3rd test, so the remaining
tests didn't provide any additional value.
So I have removed the tests that seemed redundant.
The tests also expected methods like size, delete or is_empty. I
have removed those because

They aren't vital to the behavior of a Set
They are usually implemented as an alias
They aren't used by the set operations (diff/subset/etc)

Changing test order
The previous test suite started with equal. I found that this requires
students to implement two things:

Creating a new element
Comparing two collections of elements

I have chosen to start the tests with contains, since that only
requires one set. And, helpfully, when the student implements add and
equal, they can leverage their already-existing contains function.

I do not understand how size, is_empty and delete are not vital for a set.
I need the size very often when dealing with sets in my code, also I do need a fast check for emptiness which does not count a billion of entry's before it tells me that I have a size unequal to 0.
Also when we are able to insert a single element, we should also be able to remove one. For some implementations a specialised delete is much faster than creating and subtracting a singleton set.

@NobbZ, I think it depends on what we want this exercise to teach. I think there are two options:

We want it to show the student how to create a full-featured Set library.
We want it to show a student how to handle the unique parts of Set logic (no uniques, unions, etc.)

If it's 1, then you're absolutely right. We should do delete, size and probably a few more methods (superset?, merge?).
But if it's 2, then I think we can focus the API on teaching what we want the exercise to teach. And I didn't see how delete and is_empty did that.

I think that whether we lean towards 1 or 2 we should clarify in the README what the purpose is.

@exercism/track-maintainers, thoughts on what the purpose of this exercise is?

#1

I was actually thinking (2) more than (1).

@kytrinyx's vote puts at 2-1 in favor of option (2). That's not a very high turnout, though. I'd like to hear from more people...

I like (1), personally

Although I don't think that the options are really mutually exclusive

I'm leaning towards 2 because there are plenty of other places to learn about implementing data structures in the language of your choice. I wouldn't call that a primary purpose of exercism.
However, I agree with @ryanplusplus that the two aren't mutually exclusive.
If requiring a fully featured set results in more interesting code discussions, then I'm all for it.
Still, I feel like 1 might be putting too many details into the exercise and could result in more muddied code and/or discussions.
tl;dr: 2, but open to changing

Hmm. I do find when reviewing submissions of the more involved exercises (ones that require a lot of code) that sometimes it's hard to figure out how to go about it. There's a lot of code, where do I start reviewing? etc.
For that reason, it is good to keep exercises focused. No more than what they need to be.
... All right, admitted that the above doesn't take a stance on whether this exercise should focus on the full set library or just the interesting set operations. I'll pick just the set operations, but I could be convinced either way.

@ryanplusplus What tests would you see in the suite if we combined options 1 & 2?

@IanWhitney basically my thought was that we'd strip the exercise down to the essential set operations (as in 1), but reorder those tests to try to minimize the amount of code that has to be written to pass each successive test (as in 2). I think that the example of starting with contains instead of equals is perfect and is exactly how I approach the problems when developing with TDD: I choose features strategically in order to minimize the code written at each step and keep my cycle time low.

I like that approach, @ryanplusplus. What would the right order be, do you think?
I think I would go with:

is_empty (gets a test passing very quickly)
contains (another one that gets a test passing quickly)
add (pretty much foundational for everything that comes next)
delete? (I'm still not sure we need it, but if we do it makes sense to do it after add)
equal (this could go other places, I think)
subset
disjoint
intersect
difference
union

I lean towards dropping symmetric_difference, since (in my experience) it's not used often. But I did also find it interesting to implement in Rust, so maybe it stays.
Downside of this approach is that the test suite stays pretty big, right? Probably ~45 tests. Is having those extra methods worth it?

@IanWhitney I like your suggested order, but would move equal to after subset and difference in order encourage more creative implementations of equal.

Sure. I keep forgetting that equality can be done much better than I did in my terrible implementation.

Changes!

Added tests for empty
Moved tests for equal
Dropped tests for symmetric_difference because no one made a case for them

I'm going to let this sit until Monday. If things look good then, I'll merge.

Updated to address @petertseng's comments. I'll rebase all this stuff before any merge.

I think that's all I have to say about what's here, and I can't think of any test that should be here that shouldn't be.

Maybe a test that [1, 2, 3] is not a subset of [1, 2], but that may have already been covered by the test that [1, 2, 3] is not a subset of [1, 2, 4], unsure.

Possible thing someone may say: does it seem "weird" to have equal come between difference and union? Maybe because we're going back and forth between operations that take two sets and return

subset (set, set) -> bool
disjoint (set, set) -> bool
intersect (set, set) -> set
difference (set, set) -> set
equal (set, set) -> bool
union (set, set) -> set

Seems weird to go back and forth like that, I guess?
I know there was a desire to have equal after difference though, so it's a bit tough. Not sure if anyone will be bothered by it

Maybe a test that [1, 2, 3] is not a subset of [1, 2], but that may have already been covered by the test that [1, 2, 3] is not a subset of [1, 2, 4], unsure.

I'm not sure either. Let me think this through. If a student has an implementation that passes [1, 2, 3] ⊄ [1, 2, 4] but that wouldn't pass [1, 2, 3] ⊄ [1, 2], what would that look like? They would have to be checking that all elements in set 2 appear in set 1, right? That way the presence of 4 in the first test would make it fail.
So, in Ruby, it might be:
def subset(other)
  # if I contain all elements if the other subset, then I am a subset.
  other.elements.all? { |e| self.contains?(e) }
end

And if that's the case, then this test should fail
{
  "description": "empty set is a subset of non-empty set",
  "set1": [],
  "set2": [1],
   "expected": true
 }

Since set2 now contains elements that aren't in set 1, subset returns false.
"Ah hah!" you say. "What if they have a conditional return?"
 def subset(other)
  # I'm empty, so I'm always a subset
  return true if self.empty?

  # if I contain all elements if the other subset, then I am a subset.
  other.elements.all? { |e| self.contains?(e) }
end

Good point, fictional observer.
In that case, this test fails
{
            "description": "set is a subset of larger set with same elements",
            "set1": [1, 2, 3],
            "set2": [4, 1, 2, 3],
            "expected": true
}

Because all elements of set2 do not appear in set1 and neither is empty. So our incorrect implementation fails.
I think we're good.

The one thing that I think is missing here is the notion that sets are unordered.

I know we said we don't check sorting, but does that mean that we might care about ordering?

How would you like to test sorting or ordering, @kytrinyx ? I wasn't quite sure about this.
My thought was that sorting & ordering don't really come into Set operations, so I didn't focus any tests on it. What mattered was set equality, which is order-independent.

What mattered was set equality, which is order-independent.

Yeah, that's what I was trying to get at. Right now we're not checking that their sets are order-independent.

Ok, now to write the Blazon issue.

Changes to Custom Set tests
We recently rewrote the test suite for Custom Set. If this track contains Custom Set, please take a look at the new custom_set.json file and see if your track should update its implementation.
The new test suite reorders tests so that students can get to green quickly. It also reduces the number of tests so that students can focus on solving the interesting edge cases.
Full details of the change are at https://github.com/exercism/x-common/pull/232

Should we link directly to the custom_set.json from the issue?

Makes sense!

(to be fair, I had the Rust PR ready to go before I even merged the test changes)

Okay, I realize I'm late on this, but I think there are some issues with the new tests. Many of the tests that come before "equal" depend upon "equal" in the assertion (which kind of defeats the purpose of the reordering). I think this is probably my fault because I suggested putting "equal" after "subset" and "difference". Given this, I think we need to make a few more changes before we roll this out.
I think this can be fixed by moving "equal" up above all dependent tests. It can still stay below "subset", but can't be below "difference". Looking through the tests, I think we'd be okay as long as we move "subset" and "equal" below "add".
Thoughts?

I'm not sure what you mean. How do the earlier tests depend on equal?

Take the add tests:
         {
            "description": "add to non-empty set",
            "set": [1, 2, 4],
            "element": 3,
            "expected": [1, 2, 3, 4]
         },

It's strongly implied that the expectation will be checked with "equal". I realize that you can check with repeated uses of "contains" (and I started by doing this), but eventually it becomes absurd. Additionally, it appears that your tests for Rust use "equal" prematurely (thought I'm not a Rust guy so maybe I'm misunderstanding something).

Maybe it's semantics, but is the equal method the same as == (or whatever your language chooses)?. In Rust I can say
assert_eq!(Set::new(1), Set::new(1))

And that can work, even if I don't define the equal method.
In Ruby I could do the same:
class CustomSet
  #...
  def ==(other)
    self.collection == other.collection
   end
  #...
end

assert_equal CustomSet.new(1), CustomSet.new(1)

Then, later on, I implement an actual equal method and maybe I do it with a more set-like approach
class CustomSet
  def equal(other)
    self.difference(other).empty? && other.difference(self).empty?
  end

  def ==(other)
    self.collection == other.collection
  end
end

Maybe this approach doesn't work in other languages, though. These two are the only ones I'm familiar with.

I think that for many (most?) of the language tracks == will not work that way and you'll get referential equality (ie: they will not be equal). The only language I'm familiar with that will do a value comparison for composite data types is C. Additionally, I don't think that the example you gave in Ruby really illustrates your point since you are defining == and are not getting it for free as you did in Rust (I am not a Ruby expert, but I'm almost certain you get referential equality by default). So for the Ruby track, you'd have to define both == and equals? which is not productive since == would be defined only for the purposes of making the tests happy (and needs to have the same semantics as equals? anyway).
Even if a language does check value equality by default, a set can be represented multiple ways and you're not going to be able to use value equality as a reliable measure of set equality. For instance, say that your internal representation is a vector of all of the set elements. Because sets are not ordered, you might have a set with an internal representation [1, 2] which would not be considered == to another set with an internal representation [2, 1] although you would definitely describe those sets as "equal".

This is bikeshedding in the extreme (which is fine by me, btw. not complaining). In the cases above, neither language has an equal (or equals? for Ruby) method until we implement it. In both Rust and Ruby, you can compare two objects (or types, in Rust) by implementing either == or eq. So the student can compare two CustomSets for equality by implementing one of those methods. That will allow all tests that use assert_equal to pass.
When the Student reaches the test for implementing the equal method, how they do so is up to them.
I'm fully on board with your suggestion that this might be a problem in other languages. Maybe a maintainer of a language that has a problem with our current test implementation can contribute here? Or do we need a new issue, since I'm not sure how many people read comments on closed pull requests.

I think the fundamental problem is that regardless of what mechanism(s) a language provides, implementing == (or an equivalent) must be semantically identical to equal. There's no way around this since the tests require both of these to determine set equality. The distinction you've drawn between == and equal does not make sense and I contend that there cannot be any (semantic) distinction.
Given this, the reordering doesn't make sense because if someone goes through the tests from top to bottom, they will need to implement set equality before getting to the equal tests. I'm happy to put together a PR that resolves this, but I first want to reach agreement on the problem because it's entirely possible I'm a raving lunatic and simply haven't figured it out yet.

Pardon me for butting in, have not been following this closely, but I do think that this test has a bit of a problem. Since sets are unordered one is unlikely to be able to use a built in equality operator to check if the "given set plus an element" is equivalent to the "expected set".
In the Common Lisp track the test's assertion would most likely use the equal equality operator which checks for "structural equality", effectively for a list: are the first elements equal, are the second element equal... so the order matters. The equal function written by the submitter for their set data type could work differently of course (as the equal operator does with respect to pathnames: they must be "functionality equivalent" i.e. not compared as strings).

I'm not familiar with Lisp, but since you say that the Student could implement their own equal function, it sounds like they could write one that doesn't rely on order.
Also, in the case of Lisp (or other languages with an existing equal method/function), the naming is just a suggestion. So if it causes less confusion to call the method is_equal, then go for that.
@ryanplusplus, maybe a longer Ruby example will make my idea clear.
class CustomSet
  def ==(other)
    collection == other.collection
  end

  def eq?(other)
    self == other
  end

  def initialize(element)
    self.collection << [element]
  end

  def collection
    @collection ||= []
  end
end

With that code, and that code only, this test passes:
set1 = CustomSet.new(1)
set2 = CustomSet.new(1)
assert_equal(set1, set2)

Because we implemented the eq and == methods, and that's what Ruby uses for equality comparisons between instances. But this test would fail:
set1 = CustomSet.new(1)
set2 = CustomSet.new(1)
assert set1.equal(set2)

#NoMethodError: undefined method `equal' for #<CustomSet:0x007fd7ad006db0 @collection=[[1]]>
#	from (irb):21
#	from /Users/Ian/.rubies/2.2.3/bin/irb:11:in `<main>'

Because there is no global equal method in Ruby. I have to write it.  I can do it a simple way:
class CustomSet
  # everything else is unchanged
  def equal(other)
    self == other
  end
end

Or I could do it in a wrong way
class CustomSet
  # everything else is unchanged
  def equal(other)
    self != other
  end
end

Or I could do it using my set methods
class CustomSet
  # everything else is unchanged
  def equal(other)
    self.difference(other).empty? && other.difference(self).empty?
  end
end
``

The behavior of my two correct implementations are exactly the same, sure. But (in Ruby, at least) I'm not required to define `equal` to get previous tests to pass.

If your language allows this sort of test ordering, then I think it's valuable to leave the definition of `equal` until later. Like you've said, the Student has to have already implemented some way of defining equality. So this late introduction of an `equal` method is weird. I think it's *good* that it's weird. It should, hopefully, encourage some thought about the correct implementation of `equal`, based on the work that they've already done.

But if there's a language where this sort of approach is impossible, then move the `equal` test earlier. I'm not sure that requires a reordering of the test file. It might be handled fine by a comment at the top.

@IanWhitney I understand that you can implement both == and equal. That's not what I'm concerned about. I'm concerned about the fact that both implementations need to have the same semantics. In order to have the tests pass reliably, == and equal must have the semantics of set equality. So whether there is one mechanism or there are two mechanisms, they both need to be the same. Because of this, it's a red herring to say that it doesn't matter whether `equal or there are two ways

@IanWhitney believe me, I understand that you can implement both == and equal (or is_equal or equals? or equal_to or...) independentely. That's not what I'm trying to discuss. My concern with the existing test suite is that you must have implemented set equality (by some name) long before you get to the tests for set equality. It's a red herring to focus on the name given to the method instead of on the fact that you must implement set equality before it is addressed in the test suite. This is particularly relevant since one of the goals you gave for this update a situation where two things needed to be implemented at one time in the tests for equal (see "Changing test order" in the PR description).
To hopefully make this more clear, consider this add test (which comes before the tests for equal):
          {
             "description": "add to non-empty set",
             "set": [1, 2, 4],
             "element": 3,
             "expected": [1, 2, 3, 4]
          },

Even in your sample Ruby implementation this will fail for == because in your implementation of == the order of the collection matters. The case you provide where it does pass is one of a few special cases where structural and set equality just so happen to be identical because of implementation details. So even at this point you must have implemented set equality if you want these tests to pass.
It is untrue to say that == can be implemented in a meaningfully different way than equal, so why not explicitly address set equality prior to this point in the test suite? This will mean that students no longer need to implement both add and set equality (by whatever name you choose) at the same time just to get add to pass. This is easily accomplished because the tests for equal do not rely upon anything except for the set constructor.

I think I need to punt on this one. It's not that I don't see the problem you're describing, it's that I don't see it as a problem.
The best approach here is to submit a PR, get feedback from people with opinions other than mine and then I'll update the Rust tests to do whichever.

Backing up @ryanplusplus and @verdammelt here.
For Common Lisp this exercise could easily devolve into an exercise to how well a programmer can implement generic equality since one could easily implement something with weird behaviors if they rely on equal internally. For example, here's an ad hoc, informally-specified, bug-ridden, slow implementation of half of CDR 8: Generic equality and comparison for Common
Lisp
  (defmethod equals ((obj1 t) (obj2 t)
                     &rest keys
                     &key recursive (case-sensitive t) &allow-other-keys)
    (declare (ignorable recursive))
    (when (equal (type-of obj1) (type-of obj2))
      (typecase obj1
        (number (= obj1 obj2))
        (cons   (tree-equal obj1 obj2 :test #'equals))
        (character (funcall (if case-sensitive #'char= #'char-equal) obj1 obj2))
        (string (funcall (if case-sensitive #'string= #'string-equal) obj1 obj2))
        (array (loop for i from 0 below (array-total-size obj1)
                  always (apply #'EQUALS
                                (row-major-aref obj1 i)
                                (row-major-aref obj2 i)
                                keys)))
        (hash-table (error "Not implemented.")) ; FIXME
        ;; structure not implemented either but default behavior probably okay
        (otherwise (equalp obj1 obj2)))))

  (defmethod equals ((set1 set) (set2 set)
                     &rest keys
                     &key recursive &allow-other-keys)
    (null (set-difference (elements-of set1) (elements-of set2) :test #'equals)))

@IanWhitney is right, a PR is the best way to further discuss these changes. Please see https://github.com/exercism/x-common/issues/257.


/requirementanalysis/: current branch from /requirementanalysis2/ is merged into /requirementanalysis/

/requirementanalysis/: current branch from /requirementanalysis2/ is merged into /requirementanalysis/

reverted the code to v<IP_ADDRESS> of the repo


Move to Kotlin?

I've created a release (https://github.com/psfblair/pikaparser-kotlin/releases/tag/pikaparser-0.0.1-SNAPSHOT-equivalent), which based on the tests has feature- and performance-parity with the current Java version. If you'd be interested in developing the reference implementation in Kotlin in the future, feel free to pull it into your repository; you'd just need to change the copyright and the package names back to yours. A few files and methods did get moved around, so depending on how committed you are to your existing organization, you might want to move them back.
From this point I intend to do a lot of refactoring and reorganization, primarily so that I can understand much better the details of the code, and then start modifying the implementation to the extent that I need to do so for my plans. So I think this release would be the point you'd want to branch from, if it's of interest.

Thanks, I appreciate this. I do want to use Kotlin when I ramp up work on my language, so this is probably a good starting point (though that is on hold right now as I have other projects going on).
I will probably leave the reference parser in Java though, since the paper covering the parser is now in peer review, and I think it's better to use Java for the reference, since it is more widely used than Kotlin.


Controller is not reset during simulation of patients

I discovered that in a batch simulation, there happens no controller reset between patient simulations, even if the controller reset() method is specified. I think this is a pretty serious flaw because in most cases only the first simulated patient will give correct results.
I will prepare a PR for that issue, but wanted to hear your opinion on this issue first.

Yes, that is a real bug.
Need to reset it here https://github.com/jxx123/simglucose/blob/9dfa3c4648559b5ec1c25f32bcea968a3788527e/simglucose/simulation/env.py#L136.
Thanks for the report.
Let me know if you are interested in a PR.

I'm interested and will open a PR soon.

Hi, could you explain a bit more about what this issue is? I've been using the batch simulation regularly, and would be interested in knowing if this affects any of my experiments. What happens when the controller does not reset?

In my case I trained a neural network that used a continuous chain of states and stored the internal state of the neural network (LSTM; hidden state).
Due to the absence of the reset call, the hidden state was carried over from simulation to simulation and when a new simulation was started, a chain of states from the previous simulation + new states from the new simulation was used. This has led to a significant distortion of the results from the second simulation of a simulation batch onwards.
Depending on your experiment setup this could lead to distorted results too.

This issue is going to be solved when this PR is merged #47 .


dillinger: init at 2017-10-08 with module and minimal test

Motivation for this change
Adds the markdown editor web-app dillinger
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

/cc @cillianderoiste :)

@matthewbauer I just rebased this on the current master but dillinger is based on nodejs-4_x which has already been deprecated. I built this with nodejs-6_x and it still seems to run fine.
I'm not sure if I should either use node 6 or close the PR for now and hope that some day dillinger will use nodejs 6 by default.

I think that as the README stated that Node v4+ should be fine (see https://github.com/joemccann/dillinger/tree/9581db83096a29948c7059bb421fd27e23f4f7f8#installation)
@WilliButz besides the test have you confirmed the basic functionality of the software? (in this case it should be fine, between NodeJS 4 and 6 aren't too much breaking changes that could cause an issue for us)
As this seems to be a NodeSource powered product (which uses NSolid, see https://nodesource.com/products/nsolid and I don't know anything about this ecosystem except what I just read) I'm not sure how easy it is to perform platform bumps or maintain compatibility among several platforms...


VirtualBox guest make nixos-rebuild switch very slow at setting up tmpfiles step.

Describe the bug
After installing VirtualBox guest addition, nixos-rebuild switch is extremely slow. setting up tmpfiles step takes few minutes.
Steps To Reproduce
Steps to reproduce the behavior:

Install VirtualBox like

  virtualisation.virtualbox.host.enable = true;
  users.extraGroups.vboxusers.members = [ "user" ];
  virtualisation.virtualbox.guest.enable = true;

launch a nixos-rebuild switch command
witness that setting up tmpfiles step takes a very long time

Expected behavior
nixos-rebuild switch should be as fast as if the line
  virtualisation.virtualbox.guest.enable = true;
wasn't there.
Additional context
:~$ sudo systemctl status virtualbox.service
○ virtualbox.service - VirtualBox Guest Services
     Loaded: loaded (/etc/systemd/system/virtualbox.service; enabled; preset: enabled)
     Active: inactive (dead)

avril 05 12:45:58 ThinkPadT470 systemd[1]: Dependency failed for VirtualBox Guest Services.
avril 05 12:45:58 ThinkPadT470 systemd[1]: virtualbox.service: Job virtualbox.service/start failed with result 'dependency'.
avril 05 12:48:49 ThinkPadT470 systemd[1]: Dependency failed for VirtualBox Guest Services.
avril 05 12:48:49 ThinkPadT470 systemd[1]: virtualbox.service: Job virtualbox.service/start failed with result 'dependency'.
avril 05 12:56:41 ThinkPadT470 systemd[1]: Dependency failed for VirtualBox Guest Services.
avril 05 12:56:41 ThinkPadT470 systemd[1]: virtualbox.service: Job virtualbox.service/start failed with result 'dependency'.
avril 05 12:58:55 ThinkPadT470 systemd[1]: Dependency failed for VirtualBox Guest Services.
avril 05 12:58:55 ThinkPadT470 systemd[1]: virtualbox.service: Job virtualbox.service/start failed with result 'dependency'.
avril 05 13:05:24 ThinkPadT470 systemd[1]: Dependency failed for VirtualBox Guest Services.
avril 05 13:05:24 ThinkPadT470 systemd[1]: virtualbox.service: Job virtualbox.service/start failed with result 'dependency'.
:~$ sudo systemctl status dev-vboxguest.device
○ dev-vboxguest.device - /dev/vboxguest
     Loaded: loaded
     Active: inactive (dead)

avril 05 12:48:49 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start failed with result 'timeout'.
avril 05 12:56:41 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start timed out.
avril 05 12:56:41 ThinkPadT470 systemd[1]: Timed out waiting for device /dev/vboxguest.
avril 05 12:56:41 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start failed with result 'timeout'.
avril 05 12:58:55 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start timed out.
avril 05 12:58:55 ThinkPadT470 systemd[1]: Timed out waiting for device /dev/vboxguest.
avril 05 12:58:55 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start failed with result 'timeout'.
avril 05 13:05:24 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start timed out.
avril 05 13:05:24 ThinkPadT470 systemd[1]: Timed out waiting for device /dev/vboxguest.
avril 05 13:05:24 ThinkPadT470 systemd[1]: dev-vboxguest.device: Job dev-vboxguest.device/start failed with result 'timeout'.

Notify maintainers
@svanderburg @FriedrichAltheide @blitz
Metadata
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
this path will be fetched (0.01 MiB download, 0.05 MiB unpacked):
  /nix/store/10i1kjjq5szjn1gp6418x8bc1hswqc90-stdenv-linux
copying path '/nix/store/10i1kjjq5szjn1gp6418x8bc1hswqc90-stdenv-linux' from 'https://cache.nixos.org'...
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.84, NixOS, 23.11 (Tapir), 23.11.5833.1487bdea619e`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.1`
 - channels(root): `"nixos-23.11, nixos-unstable"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Add a :+1: reaction to issues you find important.

The guest.enable and host.enable are somewhat mutually exclusive. You use the guest one in the guest and the host one on the host.
I guess you enabled the guest one by accident and that times out?

@Thatoo Please check if the problem also occurs on unstable. Quite a lot of logic of the guest additions packaging was changed not so long ago.

The guest.enable and host.enable are somewhat mutually exclusive. You use the guest one in the guest and the host one on the host.
I guess you enabled the guest one by accident and that times out?

I'm very confused.
Sorry for disturbing and thank you.


vmware-iso: Could not find networking conf file: /Library/Preferences/VMware Fusion/networking

after https://github.com/StefanScherer/docker-windows-box/pull/31 when I run:
packer build --only=vmware-iso windows_2016_docker.json
I get:
==> vmware-iso: Creating floppy disk...
vmware-iso: Copying files flatly from floppy_files
vmware-iso: Copying file: ./answer_files/2016_core/Autounattend.xml
vmware-iso: Copying file: ./scripts/disable-screensaver.ps1
vmware-iso: Copying file: ./scripts/disable-winrm.ps1
vmware-iso: Copying file: ./scripts/docker/enable-winrm.ps1
vmware-iso: Copying file: ./scripts/docker/2016/install-containers-feature.ps1
vmware-iso: Copying file: ./scripts/microsoft-updates.bat
vmware-iso: Copying file: ./scripts/win-updates.ps1
vmware-iso: Done copying files from floppy_files
vmware-iso: Collecting paths from floppy_dirs
vmware-iso: Resulting paths from floppy_dirs : []
vmware-iso: Done copying paths from floppy_dirs
==> vmware-iso: Creating required virtual machine disks
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Could not find networking conf file: /Library/Preferences/VMware Fusion/networking
==> vmware-iso: Deleting output directory...
Build 'vmware-iso' errored: Could not find networking conf file: /Library/Preferences/VMware Fusion/networking
==> Some builds didn't complete successfully and had errors:
--> vmware-iso: Could not find networking conf file: /Library/Preferences/VMware Fusion/networking
==> Builds finished but no artifacts were created.

Thanks for the pull request.
VMware Fusion (Pro) needs a license. After installing it with brew cask install vmware-fusion you need to open the app at least once to start the 30 day trial. This also adds missing network cards vmnet1 and vmnet8.
I hope that helps.

thanks; after opening app and starting 30 day trial, still getting this error.
also tried https://github.com/hashicorp/vagrant/issues/8285#issuecomment-366501706 with no success

I tried it in a fresh macOS.

install brew
brew install packer
brew cask install vmware-fusion
Open VMware Fusion
go into system preferences -> Security -> allow VMware, Inc.
quit VMware Fusion
open VMware Fusion again
ls "/Library/Preferences/VMware Fusion/networking" shows me that file.

thanks! that did work :)
for the next steps:

brew cask install vagrant was needed (maybe add it to README?)

vagrant up failed with A Vagrant environment or target machine is required to run this
so I ran vagrant init ; maybe mention it in README?

then: vagrant up gives:

No usable default provider could be found for your system.
Vagrant relies on interactions with 3rd party systems, known as
"providers", to provide Vagrant with resources to run development
environments. Examples are VirtualBox, VMware, Hyper-V.
not sure if I'm doing this right...

Thanks for the feedback.
When I started this repo I was years into Vagrant, so that's the difficult part writing a README.md for others that are just starting with Vagrant. :-)
As you go down the road with vmware-fusion you need to know that you will need a paid Vagrant VMware license, see https://www.vagrantup.com/vmware/index.html for more details.
You would need a helper ( brew cask install vagrant-vmware-utility) and the VMware plugin ( vagrant plugin install vagrant-vmware-desktop and vagrant license vagrant-vmware-desktop license.lic).
If you want to use Vagrant for free you could use VirtualBox (brew cask install virtualbox).
I don't know if all these steps can be covered in the README, as Vagrant can be used on at least three major OS (Windows, Mac, Linux) with different hypervisors.

Are you still going the VMware path or do you think it's easier for you to start with VirtualBox?

Closing due to inactivity.


info: MR to add helm_ls into Mason.nvim

hi, i really like your project,so i create an https://github.com/mason-org/mason-registry/pull/1160
to add you helm_ls into the mason registry. for the mason.vim project
like this you'll reach more people. because this server will be really appreciated in DevOps comunity.
Edit: will do the same for https://github.com/neovim/nvim-lspconfig/pull/2558
both are merged

Nice work, we could also add it to langserver.org to reach more people.

Hi.
Awesome work guys
Thanks for submitting the helm_ls on nvim-lspconfig and mason-registry

still need to do a last mr on https://github.com/williamboman/mason-lspconfig.nvim
will do asap =D

All MR are merged , can be closed
Tu guys


Duplicated triples generated in train_test_split_no_unseen()

Description
The script to carve a train/test set from a list of triples leads to:

duplicated test triples
and therefore the train set being the diff of all triples - test ones is bigger than expected.

Will do a pull request with fix.

Reopen to make sure the results must be deterministic and there should be a unit test to cover.


⚠ Avatar API Endpoint has degraded performance

In 69f83ec, Avatar API Endpoint (https://avatar.roblox.com/v1/avatar-rules) experienced degraded performance:

HTTP code: 200
Response time: 2231 ms

Resolved: Avatar API Endpoint performance has improved in 4f50ffe.


Cannot import Gpy, but installation correct

Hi,
I have downloaded Gpy and installed with "pip install gpyopt"  I have the below message print
Installing collected packages: GPy, gpyopt
Successfully installed GPy-1.8.5 gpyopt-1.2.1
I have anaconda installed so I have checked
with "conda list" if all the packages were installed
GPy                       1.8.5
GPyOpt                    1.2.1
Then I did:

Python
import Gpy
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'Gpy'

I don't know what is the problem.
Thanks

@geilerloui got the same issue. How did you solve it ?

conda list|grep -i gpy
GPy                       1.9.5                     <pip>
GPyOpt                    1.2.5                     <pip>
$python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:07:29)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Gpy


PRs with one review and CI are now mandatory

FYI @lu4p @pagran @capnspacehook.
Also, I've invited @pagran, and set up these settings in the repo. Pushing directly to master is now forbidden to all.


A new fantasy console: sixengine

Here's a new one https://www.sixengine.com/

Seems definitely worth a try. I just sent an access code request to the author. Will keep an eye on it until I can tell what exactly it could do.

William replied, and I have to say it's cool to have fantasy level games running in browser. It has a potential, but for now I couldn't add it because the engine is not yet public. Let's see how it goes in the future.


Add the alphametics exercise & babel-polyfil dependency

Why does it keep including all the other commits that have already been merged? Also looks like the build failed again.

@arthurchipdean I'm not sure why you're seeing those commits, but that's not a big deal-- you can squash everything as we discussed before.
I'm guessing your build failure is because you have a/some package.json files in individual exercises that don't match the global one.  Running make test should copy the global file to each directory.  I would give that a try, commit the result, then push.  See if that resolves the build issue.

@matthewmorgan I tried that already and it wasn't working. It's listing all files from those commits as new after I run git reset --soft . I just committed the result.

OK, I will pull down this branch and have a closer look.  I'll let you know what I find out.  Thanks for your efforts!

OK,
A couple of things:

When I tried using reset --soft it appeared to work.  I can't be sure, because I can't push back to your branch.  FYI I ran git reset --soft 5252b42, then committed the result, and got only one commit in my history.  GItHub may be doing something different, but it worked with git.
@tejasbubane called out an issue with the Makefile in #301 .  I verified that problem, and when I commented out the test-package-files command, I was able to run the test suite on your branch with no problem.

Bottom line, I think we need to fix #301 before we can build anything, including your branch.  If I have time today I will check it out....I think it may be as simple as setting the -max-depth parameter on find.

@arthurchipdean Can you check if this works? https://babeljs.io/docs/plugins/transform-regenerator/#usage-via-babelrc-recommended-
Since babel-plugin-transform-regenerator is already installed, I think it would be better if that can be used instead of adding a new package.

@tejasbubane  Yes that worked! I committed the change.

@matthewmorgan I tried that git reset soft using the hash you provided and it seems to be adding more commits.

@arthurchipdean We have Babel settings in package.json ( see babel
section). Add the transform plugin there and remove the .babelrc file.
On Jun 2, 2017 8:19 PM, "Arthur Dean"<EMAIL_ADDRESS>wrote:
@matthewmorgan https://github.com/matthewmorgan I tried that git reset
soft using the hash you provided and it seems to be adding more commits.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xecmascript/pull/299#issuecomment-305810302,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA73L6_NAGILklz3ZIJ-Mz0jJ68eizBlks5sACEHgaJpZM4NsaBG
.

@arthurchipdean I pulled your branch and it looks like you are in the middle of a REBASE that has created some merge conflicts.  This is very common, and should be resolvable.  I would suggest following these steps:

Edit the config.json file to remove the problems key and its values.  Please also remove any conflict artifacts like ========== etc.
git add config.json
git rebase --continue

I believe this should put you back in a proper state.  Then try pushing the changes back up and let's see what we have.  If that doesn't work, don't worry- I'll help you sort it out!

@matthewmorgan I followed your steps.

@arthurchipdean the current problem is that the package.json file in one or more exercises does not match the global package.json file, so the test-package-files task in the makefile is failing.
Unfortunately, there is not a simple way to copy that file to every exercise.  That is our fault-- we prematurely merged that new task into the makefile without providing an easy way to copy those files over.  Let me see what I can do about that.

@arthurchipdean I've made a change to master that will work around this problem for now.  You can either pull that change in to your branch, or simply delete line 36 from the Makefile:
	@$(MAKE) -s test-package-files

and re-run make test from the xecmascript/exercises directory.  This should copy all those files over to the individual directories for you.
I'll open an issue to modify the Makefile to perform this task automatically so others don't have the same issue.  I feel terrible that this has been such a hassle for you.

@arthurchipdean is there anything I can do do help you get this one finished?

@matthewmorgan sorry for the delay, I have been busy. I'm attempting your feedback right now. Tests are running. So after running the tests I'll just commit the result and push?

It's failing here :(
 FAIL  exercises/connect/tmp/temp.connect.spec.js
  ● Test suite failed to run

    Cannot find module './_copyObject' (While processing preset: "/root/xecmascript/exercises/connect/node_modules/babel-preset-env/lib/index.js")

@arthurchipdean no worries I have been busy myself!  End of school year etc.
I pulled down your branch and was able to run it locally with no trouble at all.  I'm going to try making another branch with your code and opening a PR to see if there's any issue in CI for me.

@arthurchipdean Travis is apparently struggling to keep up with submitted PRs, so I don't have CI result.
I found two issues with your PR, I'm not sure either would have caused this problem, but I changed them in my branch:

alphametics has a jest_0 directory with a few artifacts.  That dir should be removed.
config.json has a reference to flatten-array, which is not part of this track.

Anyway, as soon as I see a result from Travis I'll report back, and we can go from there.

@arthurchipdean I made a new branch from yours here.
I fixed a few issues (flatten-array is not in master, but was in your branch, removed jest artifacts) and everything is now passing the CI build on Travis.
It looks to me like everything in my branch is what you intended to be in your PR: altered config.json files for all exercises, and the new alphametics exercise.
I would suggest that you pull the main exercism repo down again and merge my branch acd-resolved-config in to this one.  Push it back up, let's see if the build passes. I believe it will.

@arthurchipdean I would like to see your work incorporated into the repo.  Let me know if you'd like to finish up this PR, or I can instead merge #309.
Either way, we appreciate your contribution!

Closed in favor of #309 .  @arthurchipdean Thanks for doing the heavy lifting on this one!


Added Dockerfile for Windows / Mac support

Added a Dockerfile to allow installation of the API on Windows / macOS.
Also changed '' to "" in the example curl command in README.md for Windows compatibility.

Looks great, was hoping to add Docker as it always makes things more portable. Don't have my computer to test it right now but does GPU passthrough work automatically or do we need to specify any other options for this to work through Docker?

From NVIDIA container toolkit:
"Make sure you have installed the NVIDIA driver for your Linux Distribution Note that you do not need to install the CUDA Toolkit on the host system, but the NVIDIA driver needs to be installed."
For instructions on getting started with the NVIDIA Container Toolkit, refer to the https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installation-guide
Not sure about other GPUs.


":eval" sees '|' as its argument inside an if block

Describe the bug
:eval sees | as its argument inside an if block when the condition fails.
To Reproduce
Start Vim with no config:
vim -Nu NONE

Execute this Ex command:
if 0 | eval 0 | endif | let x = 123 | echo x

The cursor is still on the command-line.
Execute :endif; the cursor leaves the command-line.
Execute :echo x; E121 (undefined variable) is raised.
Expected behavior
There is no need to execute :endif a second time to leave the command-line; the first one is enough.
:echo x doesn't raise any error, and outputs 123.
Environment

Vim version:  8.2 Included patches: 1-259
OS: Ubuntu 16.04.6 LTS
Terminal: XTerm(322)

Additional context
I think the issue is due to :eval which consumes the bar, instead of stopping at it.
This seems to be a bug for 3 reasons:

it's not documented at :h :bar (:eval is not mentioned there), nor at :h :eval

it's inconsistent with an :eval outside an if block:
:eval 0 | echo 'test'

Here :eval does not consume the bar, and the test message is correctly displayed on the command-line.

it's inconsistent with an :eval inside an if block whose condition is true:
:if 1 | eval 0 | endif | echo 'test'

The same issue applies to other types of blocks (:for, :while, ...):
:for i in [] | eval 0 | endfor | let x = 123

:while 0 | eval 0 | endwhile | let x = 123

I confirm the error.
Wrapping the :eval statement in an :exe statement, as in e.g. :if 0 | exe "eval 0" | endif | let x = 0 makes Vim behave as expected.
OTOH replacing one or more bars by carriage-returns (by hitting Ctrl-V followed by Enter) doesn't.


[HUDI-6521] Disable failing test case.

Change Logs
The test case Test Bulk Insert Into Bucket Index Table in TestInsertTable.scala is failing as a result of changes made in ##9156. Commenting out the test case to unblock to the build.
Impact
None
Risk level (write none, low medium or high below)
None
Documentation Update
None
Contributor's checklist

[X] Read through contributor's guide
[X] Change Logs and Impact were stated clearly
[X] Adequate tests were added if applicable
[X] CI passed

@hudi-bot run azure

Hi @amrishlal and @nsivabalan, sorry for the test case failure introduced.  I have raised #9163 and fixed ci. Should we just revert this pr and enable the test again? Thanks~


Slash command is fired even when focus is outside of current file

Slash command should only work when the cursor is active in the currently open document

Fixed by #122


Add License

Hey thanks for creating this awesome library!
I am currently evaluating it, whether to use it for my bachelor thesis. It would be really awesome to have a license in the repo so I can safely use the package.

Hey, I added a MIT license.
Glad you liked this repo !
I wish you good luck with your work :)


[GHSA-667q-vj58-rj88] Exposure of Sensitive Information to an Unauthorized Actor in Jenkins

Updates

Affected products
References

Comments
Add some patch links related to CVE-2018-1999046.

Hi @sunSUNQ, unfortunately, we will not be accepting this contribution as the commits are duplicative of https://github.com/jenkinsci/jenkins/commit/6867e4469525d16319b1bae9c840b933fe4e23c4.


question about the performance of the tutorial example

Running the example shows the following performance in GB/s on an Intel Max1100 GPU. The GB/s for Torch(native) may be too high to be true.  Can you reproduce the issue ?  Thanks.
softmax-performance:
          N       Triton  Torch (native)  Torch (jit)
0     256.0    68.186768      439.804651   123.453937
1     384.0   103.079215      668.057698   187.816933
2     512.0   199.911205     1192.690579   250.422577
3     640.0   252.761294     1628.906115   322.201210
4     768.0   299.017327     1954.687338   388.062927
..      ...          ...             ...          ...
93  12160.0  4788.703938    32769.758318  9233.467813
94  12288.0  4797.868921    33776.997205  9382.499224
95  12416.0  4847.846722    33459.647967  9274.141556
96  12544.0  4897.824524    34480.684647  9525.051007
97  12672.0  4990.333577    34149.537616  9465.360970

Torch and ipex version:
2.0.1a0+cxx11.abi
2.0.120+xpu

I will close the issue, which was already reported.


Add proposal F

This proposal tries to follow up with all the comments made on the issue #50

Could we also add a row to the table of proposals in the README? https://github.com/opencontainers/wg-reference-types#proposals

Fixed https://github.com/opencontainers/wg-reference-types/pull/52/commits/47a0daa6a00ac31c25ba0d180c158ff9442e6634

For any unresolved topics from this PR, please add here: https://github.com/opencontainers/wg-reference-types/issues/53
Thanks!


Fixes #104

#104: Since uglify was introduced, a huge amount of compiler warnings occure on the console

#106 should fix this. I don't want to have an API for removing compression as it's something that the user shouldn't worry about.


Quick edit forms for a table of items

This is more a question than an issue.
I have a table of items, and for each item would like a quick-display and quick-edit of those items, that can be used without leaving the table.
For example, a table of products may be shown, and when I click on the stores column of a product, a modal form slides in listing the stores the product is located at. Stores can be added and removed in that form, after which the form slides back out of the way and the table of products is still there underneath.
What I'm unclear about, is whether this is a use-case that this plugin is able top support. All the examples I can see seem to show a single form on the page, with a unique ID, and that form can be pulled on when needed. What I don't know is whether that form is rendered with the complete page, or rendered only when it is requested.
There are no examples of data being passed from the event - for example a product ID - to the rendering of the form. So is that something not supported? Obviously the ideal situation, where there could be hundreds of products in a page, is that no edit forms for those products hit the browser until they are actually needed.
Is this how it works, or are all forms constructed and rendered up front whether used or not? Or maybe there is a simple "show a component in a model" package I should be using instead?

Hi Jason! Thanks for your question.
It seems like your use case is supported. For example, if you the following example:
@foreach (\App\Models\User::get() as $user)
    <x-tall-interactive::modal
        id="edit-user"
        :form="\App\Forms\UserForm::class"
        :model="$user"
    />
@endforeach

Instead of users, you will iterate over the products that you have in the list. Then, if you pass it like :model="$product", you can use it to receive it in the mount() method of the form (https://github.com/ralphjsmit/tall-interactive#mounting-the-form):
public Product $user;
public string $x = '';

public function mount(array $params, Product $model): void
{
    $this->product = $model;
    $this->x = $params['x'];
}

public function getFormSchema(): array
{
    return [
         //
    ];
}

Alternatively, you can check this section: https://github.com/ralphjsmit/tall-interactive#reacting-to-events. In that case, you only need a single modal component included.
Sidenote
As a sidenote, I'm not sure if you aware of Filament (filamentphp.com) (or perhaps you found this plugin via their website). Filament will launch a new major version of all the packages in it's ecosystem in 34 days. That will also include the launch of a new so-called "Actions" package.
The reason I'm saying this is that I'll probably deprecate this package, because the Filament Actions package will do this all, but better. So if you can wait a little over a month, I'd recommend to put a reminder in your agent and check out the Filament website and the docs about the new package.
Hope that helps!


Add JavaFX-enabled OSGi config

JavaFX cannot run in most OSGi environment.
Creating a pre-configured environment enabling JavaFX might be very useful to a lot of people.
Notice that this might involve having several configs for different jre versions.
For JRE7_u13, I already know what to do:
https://gist.github.com/renatoathaydes/5021107

The TornadoFX project has done this.
https://github.com/edvin/javafx-osgi


Add the --noformat option

Adds the --noformat (-n) option to avoid formatting the output as a
table.

Resolves https://github.com/grisu48/seidl/issues/3 completely


Sourcemod support

There's some sourcemods that are not on steam like Open Fortress. They do not appear in the list of non-steam games to choose from as of now.

Leaving some notes here for future reference or if someone wants to submit a PR:

Find path: HKCU\SOFTWARE\Valve\Steam\SourceModInstallPath
To get names read gameinfo.txt file in each mod. Name is under GameInfo->game.
Sort mod dirs alphabetically and index them by number.
For example if we have 2 dirs "crates" and "mapbase", "crates" it would be 1, "mapbase" would be 2, and so on.
Generate new appid: newAppId(index).
Save the usual way: appid.png, appid_logo.png, appid_hero.png etc.

For icons, probably shouldn't mess with game files but just in case:
Icon needs to be a tga saved in the mod dir then edit gameinfo.txt: GameInfo->icon value with relative path to icon.


[1 of 2 System logs] Add stream endpoints

System logs 1 of 2
System logs 2 of 2
This PR adds stream endpoints to the SystemLogActions, so we can fetch stream types (aka. 'file' types) to display in the log viewer.
You can test the action and store out here: https://github.com/dcos/dcos-ui/pull/1422
You need to start a cluster with testing/pull/971 to test it out.

Looks good! ✨


Do you know how to transform a codeigniter 3 application to PWA?

Hello,
Do you know how to transform a codeigniter 3 application to PWA?

PWA is a front end methodology and it does not matter what backend framework you use.
Have a look at this article on dev.to:
The easy way to turn a website into a Progressive Web App


Make TOML configuration reader scan for extension files

From this Zulip chat: a scenery/sciview use case requires the following --add-opens flags:
            "--add-opens=java.base/java.lang=ALL-UNNAMED",
            "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
            "--add-opens=java.base/java.net=ALL-UNNAMED",
            "--add-opens=java.base/java.nio=ALL-UNNAMED",
            "--add-opens=java.base/java.time=ALL-UNNAMED",
            "--add-opens=java.base/java.util=ALL-UNNAMED",
            "--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED",
            "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED",
            "--add-opens=java.base/sun.util.calendar=ALL-UNNAMED"

This is quite a few more packages than the ones configured in the current fiji.toml. And it highlights an important consideration: extensions to Fiji might need to augment the Jaunch configuration with additional flags.
A general way to address this, which would be compatible with the current ImageJ Updater, would be for Jaunch to look for additional files matching some convention, such as jaunch/fiji-x-*.toml, and load those as well. Then an update site could ship, say, jaunch/fiji-x-sciview.toml, with the additional --add-opens flags needed for that update site's functionality to behave properly with Java 17+.

With c5101c3a94c3093c45ae67d4ecfc5c4ecc9d99fd, TOML files get sourced based on the primary TOML config file's includes line. To tackle this issue, we could simply allow wildcards in there, so that additional config files could be dropped in matching the pattern.


Error while deploying React App to Azure (azd)

Hi there. Not sure if to post here or on azd repo but here it goes.
While deploying to azure with github actions using the example provided here, i'm getting the following error deploying a react app:
ERROR: failed packaging service 'drcpwebapp': failing invoking action 'package', parsing source container image: empty image URL provided
I'm using version 8.0.0-preview.3.24076.8.
builder.AddNpmApp("drcpwebapp", "../drcp-frontend", "dev")
    .WithEndpoint(3000, scheme: "http", env: "PORT")
    .WithReference(authService)
    .WithReference(machineService)
    .AsDockerfileInManifest();

Thanks in advance!

Just a quick update. Decided to try and deploy manually using azd up directly on my machine. Everthing deploys however, I get the error that .NET is not installed on every dotnet service.

Can you file this here https://github.com/Azure/azure-dev/issues

I just hit this as well, logged https://github.com/Azure/azure-dev/issues/3391.  I'm not getting past this locally even like you are @adamtrip

Did you set the container port?
https://github.com/dotnet/aspire-samples/blob/0f07e991cc2c0f4a8935040d39d64b68c66039ba/samples/AspireWithNode/AspireWithNode.AppHost/Program.cs#L10

Yep, I'm using the same sample https://github.com/timheuer/js-aspire


Option to always return CoroutineMock

Hi,
Sorry if this is documented somewhere, but is there a way to force either Mock, MagicMock or CoroutineMock to always return CoroutineMock for method calls? I understand that this can work with a spec parameter, but the library I am using (aioredis) implements the methods in a way that they are not detected as awaitable.
Thanks!

May I ask you for an example test case that you would like to make it work to better address this question?

Hi,
This is a tricky problem because there are a lot of edge cases.
CoroutineMock actually mocks a coroutine functions¹
For instance, what should we do to mock:

an attribute which is not a coroutine but an awaitable (a Future)?
a function which can return (or raise an exception) directly or return an awaitable?

It's doable by creating subclasses which override MagicMock._get_child_mock(**kwargs), as documented in unittest (https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock._get_child_mock), but it seems usually unsafe (any attribute will be mocked as a CouroutineMock)

Hey,
Thanks for the thorough answer!
I suppose my ask is more narrow then that. Since the option to do what I am expecting already exists when using the spec parameter, I'd just like a way to force that introspection when I am not using spec, but I am certain about the object that I am mocking. I understand that could be expanding the API surface in a way that is not acceptable to the maintainers.
We've already implemented an internal test framework (that sort of ignores the edge cases), but I would like to switch to an open source alternative. If I need to get into overrides with MagicMock._get_child_mock(**kwargs), I am better off staying with the custom solution we've already built.
Here is a simplified example of code I am testing.
import asyncio

import aioredis
import aioredis as redis

from asynctest import TestCase as AsyncTestCase, Mock as AsyncMock, CoroutineMock
class Foo:
    def __init__(self, redis):
        """ redis initialized elsewhere with
        loop.run_until_complete(
            aioredis.create_redis_pool(redis_addr, loop=loop))  # type: aioredis.Redis
        """
        self.app = app = {}
        app['redis'] = redis

async def set(foo_inst, value):
    await foo_inst.app['redis'].set(value)

class TestFoo(AsyncTestCase):
    def setUp(self):
        self.redis_mock = AsyncMock(spec=redis.Redis)
        self.redis_mock.get = CoroutineMock(return_value=0)

    async def test_set(self):
        """ self.redis.set is called here"""
        await set(Foo(self.redis_mock), 1)
        self.redis_mock.set.assert_called_once_with(1)

results in
    await foo_inst.app['redis'].set(value)
Exception: object Mock can't be used in 'await' expression

Overriding _get_child_mock seems like the right approach. Ignore the fact that it starts with _, it's part of the public interface:
from asynctest import Mock, CoroutineMock

class AsyncMock(Mock):
    def _get_child_mock(self, *args, **kwargs):
        return CoroutineMock(*args, **kwargs)

Hm, I'm not exactly sure I understand your request, do you think that an attribute allowing to specify which attributes of a mock should be CoroutineMock instances would answer it?
For instance:
redis_mock = asynctest.Mock(coroutine_functions=["set", "get", "read", "write"])
isinstance(redis_mock.get, asynctest.CoroutineMock)  # true
isinstance(redis_mock.something, asynctest.CoroutineMock)  # false
redis_mock = asynctest.Mock(coroutine_functions=Mock.ANY)
isinstance(redis_mock.get, asynctest.CoroutineMock)  # true
isinstance(redis_mock.something, asynctest.CoroutineMock)  # true

I'm still not sure it's a good idea, but I can't find a good solution for this problem (detecting that a function returns an awaitable).

Yes, that would definitely work. I am not sure how often the first syntax would be useful (coroutine_functions=["set", "get", "read", "write"]); I think if you are going to list the functions, might as well go ahead and mock them directly.
I think supporting the Mock.ANY flag would address my issue. The tricky part is deciding how (and if) it should be propagated to the child mocks. My intuition is that if you go down this path, all your code is async so propagation is fine, but there could be additional edge cases here.
redis_mock = asynctest.Mock(coroutine_functions=Mock.ANY)
isinstance(redis_mock.execute, asynctest.CoroutineMock)  # true
isinstance(redis_mock.execute.read, asynctest.CoroutineMock)  # ???


Improve diffing

Improve items diffing to be able to use RecyclerAdapter also in functional-style programming, where the items gets synced every time the model changes (calling syncWithItems), causing minimum possible UI blinking and refreshing.

Released 2.5.0


Image on popular node-gyp issue (this tracker) got hijacked

Probably a non-issue but it's kind of trashy. This comment contains what I imagine was a screenshot but has now been replaced (hijacked by the hosting website probably definitely) with an advert for a potentially harmful site.
Maintainers might want to remove it or figure out what was there beforehand in order to restore it.
I don't think the user is to blame here since the surrounding conversation seems perfectly on-topic and according to Github the comment hasn't been edited.
EDIT: It appears the original link was sd-onsite dot com/wp-content/uploads/2013/02/Changing-profile-path-in-registry.jpg (seems to have some crap-ware on it now). Definitely should be edited off.
// cc @Sogl

I did that, thanks for pointing it out!
(I am not a node-gyp maintainer but I think it’s okay to do things that are obviously the right thing to do. If anybody feels differently, the original links are still left included as HTML comments.)

Thanks @addaleax :)

Hi!
I'm sorry for the trouble. I searched in Google images for some screens that explained what I'm talked about and have no idea what happened with site which contains them after some time.
Anyway thanks for the fix, because I can't do edit of this message.


WorkflowItems and WorkspaceItems do not obey projections and always embed all data.

Discovered in #9053, and also related to #8791 (which might be solved by the same solution)
Describe the bug
When WorkflowItems and WorkspaceItems are represented in REST API responses, they always embed a large amount of data.  This embedding is hardcoded into our code, and CANNOT be controlled via projections.  The results is that these objects always return the equivalent of a ?projection=full request, with no way to turn it off.
This behavior can result in performance issues on the MyDSpace page (/mydspace).  These performance issues are easier to see on the "Workflow Tasks" view (/mydspace?configuration=workflow), but also can impact the "Your Submissions" view (/mydspace?configuration=workspace) when the page size is a very large value.  See #9053 as one example.
To Reproduce
Steps to reproduce the behavior:

From the UI, open of your browser's DevTools "Network" tab (to watch the REST API requests/responses)
Login. go to "MyDSpace"
By default the "Your Submissions" view is shown.  This makes a request to REST that is structured like: /server/api/discover/search/objects?sort=lastModified,DESC&page=0&size=10&configuration=workspace&embed=thumbnail&embed=item%2Fthumbnail&embed=accessStatus

Notice this request has no projection param, and only a few embed params
If you look at the response to that request, you'll find that it's a very large JSON response.  For each workspaceitem listed, you'll find it embeds the following (in the _embedded section)

All data about the submitter
All data about the item
All data about the submissionDefinition
All data about the collection

BUG: This is more information than is necessary, as this page doesn't need information like the submissionDefinition (which is the entire submission configuration), etc.  There's also no way to turn off these embeds.

Now, using the "Show" selectbox, change to the "Workflow tasks" view.  This makes a request to REST that is structured like: /server/api/discover/search/objects?sort=lastModified,DESC&page=0&size=10&configuration=workflow&embed=thumbnail&embed=item%2Fthumbnail&embed=accessStatus  (This is the same request as above except configuration=workflow is used to load Workflow Items)

Notice this request has no projection param, and only a few embed params
If you look at the response to that request, you'll find that it's AGAIN a very large JSON response.  For each claimedtask or 'pooltasklisted, you'll find it embeds the following (in the_embedded` section)

All data about the group that can claim the task (for pooltask objects only) or the owner who claimed the task (for claimedtask objects only)
All data about the workflowitem

All data about this workflowitem's submitter
All data about this workflowitem's item
All data about this workflowitem's submissionDefinition
All data about this workflowitem's collection

BUG: This is more information than is necessary, as this page doesn't need information like the submissionDefinition (which is the entire submission configuration), etc.  There's also no way to turn off these embeds.

Expected behavior
REST API responses should all obey the rules for projections & the ideal default behavior is to embed as little data as possible.  This gives the User Interface more control over requesting the exact embedded data it requires for different pages.
The core problem appears to be that the AInprogressItemConverter (used for both WorkspaceItems and WorkflowItems) embeds all data by default.  For example, this section of code always embeds the entire SubmissionDefinition in each of these objects:
https://github.com/DSpace/DSpace/blob/main/dspace-server-webapp/src/main/java/org/dspace/app/rest/converter/AInprogressItemConverter.java#L82-L126
This Converter is used anytime a WorkspaceItem or WorkflowItem is displayed, even when they are displayed in lists/searches, like on the MyDSpace page.  This causes every object to load its SubmissionDefinition (and other unnecessary embedded data) even on the MyDSpace page.
This obviously impacts performance. If you change the pagesize to 100 on MyDSpace, that will result in all objects loading their SubmissionDefinition...so you will find 100 SubmissionDefinitions in the final REST response.  Logically, the SubmissionDefinition is only needed when editing a submission (or an item in workflow), so this extra data is wasteful and hurts performance.
Related work
Related to #9053
A fix to this bug might also fix #8791 (which is a similar ticket, but limited just to WorkspaceItems).

@benbosman : This is the new ticket for the follow-up work to #9053 . Feel free to enhance it as needed.
Assigned you so that you/your team can work on it immediately.  I've moved this to the 7.6.x board in the hopes that we can include it in a 7.6.2 release sometime in the future.  NOTE This ticket might partially duplicate #8791 (also assigned to your team), so these two bugs might be solved by one PR.


Search results badge update (continues #61532 efforts)

This PR make count badge always visible in wide search views as was proposed in https://github.com/Microsoft/vscode/pull/63965#issuecomment-443387693 .
Also a bit unifies layout for actions in different line types.
Behavior:
Narrow (<1000px): No changes

Content/filename & path take all available width.
Count badge is always aligned to right. Visible while line is not hovered or focused.
Actions are always aligned to right. Visible while line is hovered or focused.

Wide (>=1000px):

Content/filename & path take all do not stretch.
Count badge is always aligned to the end of content/filename & path. Always visible (changed).
Actions are aligned according to the search.actionsPosition value. Visible while line is hovered or focused.

@roblourens thank you!


onboarding recommendation

First off thank you for creating this, much better setup than i had before.
That being said, my recommendation is to keep the out of the box experience with this plugin as a "run pint".
It took me a few mins to realize that the plugin was actually working, it was just using the --preset psr12 flag
Plus chances are, if a user does have opinions on what they want to use they will likely already be using pint.json

Just ran into this as well, since Laravel Pint v0.2.0 changed the default preset back to Laravel.

Opened a PR to at least fix the default preset for now: https://github.com/open-southeners/vscode-laravel-pint/pull/8.

ah that would explain the decision to set that as default, i wonder if there is a way to refactor this to be more of an override, that way out of the box it works just like the binary would.

That's exactly what I suggested at the end of the PR:

@d8vjork, maybe it's even better to leave out the --preset flag by default as @JeffBeltran suggested: https://github.com/open-southeners/vscode-laravel-pint/issues/7#issue-1284653040.

We could either remove the setting altogether, or add an auto option as default. Thoughts?

This is what I've discussed with @zepfietje on #4
They evolve quick! Enough to say I'm better thinking on a default option for everything which won't send any param if left as is (at least for the preset)
Its behaviour for the config will be the same, evaluating if workspace's folder have a pint.json on it, if so send it as param

@zepfietje voting for that auto one

@d8vjork, should we merge https://github.com/open-southeners/vscode-laravel-pint/pull/8 in the meantime as a quick fix to stick to the current Laravel Pint defaults?

@zepfietje I'll do it tomorrow as I'm away from the computer today

Closing this as for 0.4.0 release already improving all the "out of the box" stuff


Alternative implementation for Service Flavor when hosting policy is LOCAL

Hi everyone.
I want to highlight that the current implementation has some drawbacks that are worth them to stress.
In the Service Flavor implementation, the Consumer can choose whether running the provided Service locally or remotely through the field hostingPolicy.
When the Consumer chooses to run it locally (hostingPolicy=local), in the current implementation we have the following scenario:

Basically, the provider intrinsically setup a Liqo peering within the Reservation phase so it can offload its application.
However, this situation can lead to the following issues:

The Consumer could not have enough resources to host the offloaded applications
The security infrastructure that should be upon the whole FLUIDOS Node architecture is not used (Verifiable Credentials, etc.) as the peering is set automatically
The REAR protocol is broken as we're introducing new interactions within the standard workflow

As such, what I suggest to do it is to have a behavior like the following:

Here, the Consumer can basically ask a Service with hostingPolicy=true only if it already offers a Peering to the Provider at issue.
In my opinion, this would be a cleaner as well as a safer approach to implement this use case.
Eager to receive any feedback.
Regards,
Francesco

Ok, so if I got it right, you're suggesting to subordinate a Service Flavor consumption to another Flavor (which kind?) consumption already solved and with a peering established, do you?I agree with the cleaner and safer approach, but I can hardly map it into a use case workflow:

Hi @LorenzoMoro .
Yes, the workflow that you have is overall aligned with what I'm proposing but there is a detail to take into account.
The Service Flavor consumption on the consumer cluster is only possible if the provider already had a peering, but this is something done in a previous and separated negotiation.; it's not something triggered when requiring a Service flavor is asked from the consumer.
However. this could potentially be  a discussion to be put off once we have Liqo 1.0.0 integrated as it could solve lots of issues we're having with the current version, which also affects this specific use case.
Anyways, I believe it's useful if we start brainstorming about it.


Force the browser to use the dark mode scrollbar style

General information
Associated issues: N/A
Checklist
Author:

[ ] One or more reviewers have been assigned.
[ ] Automated tests have been included in this pull request, if possible, for the new feature(s) or bug fix.
[ ] The associated GitHub issues are included (above).
[ ] Notes have been included (below).

Reviewers:

[ ] All automated checks are passing (green check next to latest commit).
[ ] At least one reviewer has signed off on the pull request.  Reviewers have two business days to review the pull request, after which the author may merge in the pull request unilaterally.

Notes
Makes the scroll bar visible in the sidebar by forcing the browser to go into dark mode.  Otherwise, it's hard to see.
When fixed:
https://user-images.githubusercontent.com/989043/230424705-b6e58aa3-8dba-440a-ab37-ba554fa1cdc7.mov

It doesn't work for me, still can't see the scrollbar. Do I have to change something on my end? I have dark mode enabled system wide on my mac.

Perhaps the cache needs clearing?On Apr 6, 2023, at 12:46, Mike Kucera @.***> wrote:
It doesn't work for me, still can't see the scrollbar. Do I have to change something on my end? I have dark mode enabled system wide on my mac.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

ok seems to be working now, not sure what the problem was


Serialization Support

How can we Deserialize DomainResults.Common.DomainResult as it does not contain default constructor. Can serialization will be supported?

I am developing a Caching Behavior using mediatR as below to intercept (Pre-Processor) the call to a request Handler
public class CachingBehaviour <TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : MediatR.IRequest where TResponse : IDomainResultBase
My Request object is below
public class GetAllEmploymentTypesQuery : IRequest<IDomainResult<IEnumerable>>, ICachable
Definition of Request Handler is as below
public class GetAllEmploymentTypesQueryHandler : IRequestHandler<GetAllEmploymentTypesQuery, IDomainResult<IEnumerable>>
In the request handler I return
return DomainResult.Success<IEnumerable> (result.ToList());
Within the CachingBehaviour I would like to serialize and deserialize the DomainResult<IEnumerable>, I am having issues while Deserializing. Any suggestions on how to achieve this will help a lot.

Hey,
As I understand, you're using the MediatR.Extensions.Caching extension and the distributed cache (as the MemoryCache doesn't require serialisation). As the IDistributedCache relies on binary serialisation (with classes marked by the [Serializable] attribute), the topic here is "Implementing binary serialisation for the MediatR caching integration". Correct me here if I'm wrong.
1. Potential implementation
The main obstacle here is that the IDomainResult<T> type is essentially a wrapper on the object, the IEnumerable<EmploymentType> in your case, which caries

If the request succeeds – the IEnumerable<EmploymentType> object.
If the request fails – the details of the error (IDomainResult).

Hence, to serialise the IDomainResult<T>, all the nested T's must also be serializable. I'm hesitant to enforce this constraint, as it'd over-complicate the primary use case, but it can be left unenforced (if the T can't be serialised, then the operation would just fail).
So, the solution you're after would be a special IDistributedCache implementation for all the domain result types (IDomainResult, IDomainResult<T> along with tuples (T, IDomainResult)) and an extension method to register it.Perhaps IMemoryCache and HybridCache should also be added to the pot.
Does it sound about right?
2. Potential alternative options for your case
Perhaps the fastest (and independent) option for IDomainResult<T> caching in MediatR would be implementing a bespoke CachingBehavior class that caches/serialises the T, IDomainResult.Status and IDomainResult.Errors.  On resolving the value from the cache, it could form the IDomainResult<T> instance by calling something like
IDomainResult<T> ResolveFromCache<T>()
{
   // 1. Get the `value` (type of T), `status` (type of IDomainResult.Status) and the `errors` (type of IDomainResult.Errors)
   ....
   // 2. Form the required type by leveraging the implicit operator https://github.com/AKlaus/DomainResult/blob/7d82bc63d46871522882e3b457d0a0caf109b382/src/Common/DomainResultOfT.cs#L75
   return (value, new DomainResult(status, errors))
}

A more straightforward option could be caching just the T for successful requests only, as the failure can have intermittent and circumstantial causes.
Let me know if these are viable directions.


from shogun import svmlight error

I have already compiled shogun manually, but when I use svmlight, it give me an error:

from shogun import SVMlight
Traceback (most recent call last):
File "", line 1, in
ImportError: cannot import name SVMlight
So, how to solve it?
Thank you!

@ @vigsterkr

@songxujing It appears that you've written SVMlight instead of SVMLight. If that won't solve your problem you will need to give us more details to enable us to actually help you in a constructive way.


[8.x] Warn if relation's foreign key is not in select list

Fix #2550
If I have something like this
class Post extends Model
{
    public function comments(): HasMany
    {
        return $this->hasMany(Comment::class)->select('body');
    }
}

class Comment extends Model
{
    public function attachments(): HasMany
    {
        return $this->hasMany(Attachment::class);
    }
}

Comment just has an empty attachments array. I know, why this happens and that I can solve this, by adding 'id' to the 'select()` method call, but wouldn't it be good if Eloquent knew that it needs this key? Since there's no error message, the mistake is everything but obvious due to the abstraction Laravel and Eloquent have.

No plans to change this atm.

That's unfortunate. Because the behavior differs from how raw sql queries would behave. They would actually throw an error in that case.

throwing exceptions like that is not a good idea.

An empty collection is a wrong result. That's not what I expect.

it's not enough for me to justify an exception, that will bring the whole thing down for no reason.

Users don't necessarily understand why they get an empty collection either. And not understanding something and not being told anything is worse in my opinion. If you have an exception, you can google it and ask questions on stackoverflow.

there is a difference between notifying the developer about a potential issue, and breaking the whole page in production for all your users.
I don't see the point of throwing an exception in that case, just to warn the developer, an exception is not a warning, it's a handlable error, that will halt the execution of the page if not catched.
i would rather auto include the foreign key in the select than throwing an exception like that.

Okay, maybe a E_USER_NOTICE is better. How would you auto include the foreign key? If you auto select it, you change the behavior.

@lk77 Is #38215 what you'd do instead?

@shaedrich yeah totally something like that
for the implementation detail, i don't know

Yeah, not yet. Wanted to hear your opinion first.
Okay, added it and asked the Laravel team about it.


How to save checkpoints during QAT?

Hi~I want to compress yolov5 with MQbench. This problem occurs during the QAT process:
Traceback (most recent call last):
  File "xxx/tools/mqbench_qat.py", line 144, in <module>
    main(args)
  File "xxx/tools/mqbench_qat.py", line 133, in main
    trainer.eval_and_save()
  File "xxx/core/engine_qat.py", line 146, in eval_and_save
    save_checkpoint(ckpt, (is_val_epoch) and (self.ap == self.best_ap), save_ckpt_dir, model_name='last_ckpt')
  File "xxx/utils/checkpoint.py", line 43, in save_checkpoint
    torch.save(ckpt, filename)
  File "xxx/env/lib/python3.7/site-packages/torch/serialization.py", line 379, in save
    _save(obj, opened_zipfile, pickle_module, pickle_protocol)
  File "xxx/env/lib/python3.7/site-packages/torch/serialization.py", line 484, in _save
    pickler.dump(obj)
AttributeError: Can't pickle local object 'ObserverBase.__init__.<locals>.PerChannelLoadHook'

I guess the reason is that the Quantized model can not be saved correctly with normal torch.save() function. Pls help me with how to save the checkpoints during QAT.

What is in the ckpt variable?
https://github.com/ModelTC/MQBench/blob/main/test/load_ckpt/test_load_ckpt.py

I guess it is this self.load_state_dict_hook = PerChannelLoadHook(self), I also encountered it, changed it to torch.save(model_1.state_dict(), 'saved_model.ckpt') is ok，don't use torch.save(model) directly. or call directly PerChannelLoadHook(self) without assignment.


Lens making too many network call even when the UI is closed

Describe the bug
We have been seeing huge number of network calls made by lens. I assume it does heavy polling against cluster but the issue is that even when the I close the app, network traffic continues. i.e when app is closed but the lens icon is still visible in mac os system tray at the top
To Reproduce
Steps to reproduce the behavior:

Open lens
Open activity monitor on mac > network
Notice the network traffic
Now close the lens app by clicking on red close button in the lens app ( do not force quite from system tray)
Open activity monitor on mac > network
You will notice there is still a lot of network activity.

Expected behavior
When the UI is closed the background lens process shouldn't spam cluster
Screenshots
Following network activity by lens when ui is not even running

Environment (please complete the following information):

Lens Version: 4.1.5
OS: max os x 10.15.6
DMG

I think this is working as intended. If you disconnect all your clusters in Lens before closing the UI window do you still see network activity after closing the UI?

I just wanted to say I didn't notice the network activity specifically, but the very high cpu usage.
My laptop starts to run hot and rapidly drains the battery if I close the UI but don't exit the tray icon.


chore: allow solargraph to upgrade beyond v0.44

This PR proposes allowing Solargraph to update to any future version. At this stage (of both projects) I propose restricting it only when have a confirmed upstream incompatibility that we willfully decide we're not going to fix.
Two reasons:

We're currently missing out on bugfixes and improvements in Solargraph
We have no visibility on any possible compatibility issues, and I believe the best way to get those issues reported is by exposing them to the world.

Full disclosure: I'm not at the capacity to know if there's any reason that I'm not aware of why we need to micromanage Solargraph's version. If there is, LMK how I can help.

Currently solaragraph-rails code is very coupled with solargraph internals. So we need to be be strict about dependencies (eg. make separate releases which bump dependency). Otherwise people will install 10 different versions of solargraph and reports bugs which we will have a hard time to triage

OK, in that case my assumption that we do want to micro-manage Solargraph versions has come to pass. Thanks for replying, I'll happily stick with whatever version we're at!


Ingestion in progress ribbon/ progress bar

Problem / Motivation

WHO As a production team member or journal staff
WHEN and WHERE anywhere on the dashboard
WHAT I would like to know when an article is being ingested
WHY so that I know if the article sent from Kriya went through and so that I can anticipate an article arriving/updating

Proposed solution

An animated blue indeterminate progress bar/ ribbon underneath the header to signify that the system picked up something (see screenshot below and a similar example at https://material.io/design/components/progress-indicators.html)
When any run (1 or more) is in progress we show the blue ribbon feedback
The progress ribbon is displayed if at least one run is not complete
It disappears when complete

Tasks

[ ] A descriptive of a task
[ ] A description

Clarification needed and assumptions

A question
An assumption

Technical notes

We could use this technology
More notes or suggestions

User interface / Wireframes

sent from Kriya

Suggest changing to "sent from the production system"
(more generic)
Otherwise sounds OK 👍

Thanks @Melissa37 it's done


Houdini render wrong colorspace

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior:
"colorspaceData": {
    "colorspace": "",
    "config": {
        "path": "C:/Users/.....Documents/houdini20.0/ocio/houdini-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio",
        "template": "C:/Users/..../Documents/houdini20.0/ocio/houdini-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio"
    },
    "display": "sRGB - Display",
    "view": "ACES 1.0 - SDR Video"
},

Which seems to be the wrong OCIO config?
Also, it reports "colorspace": null for the instance itself, which makes me think it's also not correctly detecting the colorspace of the output product.
You're using Karma XPU?
Yes.
Expected Behavior:
.
Version
1.0.0
What platform you are running on?
Windows
Steps To Reproduce:
..
Are there any labels you wish to add?

[X] I have added the relevant labels to the bug report.

Relevant log output:
No response
Additional context:
No response

"colorspaceData": {
    "colorspace": "",
    "config": {
        "path": "C:/Users/.....Documents/houdini20.0/ocio/houdini-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio",
        "template": "C:/Users/..../Documents/houdini20.0/ocio/houdini-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio"
    },
    "display": "sRGB - Display",
    "view": "ACES 1.0 - SDR Video"
},

Which seems to be the wrong OCIO config?

So... this does actually work currently:
>>> get_color_management_preferences()
{'config': 'P:/Resources/colorspace/studio-config-v1.0.0_aces-v1.3_ocio-v2.1/studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio', 'display': 'sRGB - Display', 'view': 'Un-tone-mapped'}

Anyway, will look into collecting the colorspace of the renderlayers, etc.

Also, it's defaulting to the default display/view colorspace: https://github.com/ynput/ayon-houdini/blob/c6c52fd8c94d83fb31ffe5576a4cd7cd10473509/client/ayon_houdini/plugins/publish/collect_usd_render.py#L86
Which gets the defaults from here:
https://github.com/ynput/ayon-houdini/blob/7c71563ab7fb574bf41fde5a52ac6fc1c400e659/client/ayon_houdini/api/colorspace.py#L38-L56