LoadError on CI

I have an issue where the gem works perfectly fine on an existing db. However it will raise an error when running rake db:create/ rake db:drop, noticed it when it failed to pass CI.
rails_helper.rb

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', FILE)
require 'spec_helper'
require 'rspec/rails'
require 'clearance/rspec'
require 'pundit/rspec'

spec_helper.rb

require 'pundit/matchers'
require 'capybara/rspec'

Logs:

export RAILS_ENV="test"
export RACK_ENV="test"
bundle exec rake db:create db:schema:load --trace
rake aborted!
NoMethodError: undefined method define' for RSpec::Matchers:Module /home/ubuntu/site/vendor/bundle/ruby/2.2.0/gems/pundit-matchers-1.0.0/lib/pundit/matchers.rb:3:in module:Matchers'
/home/ubuntu/site/vendor/bundle/ruby/2.2.0/gems/pundit-matchers-1.0.0/lib/pundit/matchers.rb:2:in <module:Pundit>' /home/ubuntu/site/vendor/bundle/ruby/2.2.0/gems/pundit-matchers-1.0.0/lib/pundit/matchers.rb:1:in <top (required)>'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:91:in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:91:in rescue in block in require'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:68:in block in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in each'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler.rb:99:in require'
/home/ubuntu/site/config/application.rb:17:in <top (required)>' /home/ubuntu/site/Rakefile:4:in require'
/home/ubuntu/site/Rakefile:4:in <top (required)>' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/rake_module.rb:28:in load'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/rake_module.rb:28:in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:689:in raw_load_rakefile'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:94:in block in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:176:in standard_exception_handling'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:93:in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:77:in block in run'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:176:in standard_exception_handling' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:75:in run'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/bin/rake:33:in <main>' LoadError: cannot load such file -- pundit-matchers /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:77:in require'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:77:in block (2 levels) in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in each'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in block in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in each'
/home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in require' /home/ubuntu/.rvm/gems/ruby-2.2.4@global/gems/bundler-1.11.2/lib/bundler.rb:99:in require'
/home/ubuntu/site/config/application.rb:17:in <top (required)>' /home/ubuntu/site/Rakefile:4:in require'
/home/ubuntu/site/Rakefile:4:in <top (required)>' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/rake_module.rb:28:in load'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/rake_module.rb:28:in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:689:in raw_load_rakefile'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:94:in block in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:176:in standard_exception_handling'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:93:in load_rakefile' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:77:in block in run'
/home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:176:in standard_exception_handling' /home/ubuntu/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/rake/application.rb:75:in run'>

export RAILS_ENV="test"
export RACK_ENV="test"
bundle exec rake db:create db:schema:load --trace
returned exit code 1>

/home/ubuntu/.rvm/rubies/ruby-2.2.4/bin/rake:33:in `' Action failed: rake db:create db:schema:load

I was unable to reproduce the error. Can you please create a fresh Rails app with the minimal codebase required to reproduce the error? We can then rule out other factors. I would be happy to take a look at the source code of the app once you've done this.

apologies on the late reply as I was quite busy. The requested test repo is below:
https://github.com/mingxiangchan/test_pundit_matchers
The error shows up on the repo when trying to run $ rake db:create

uninitialized constant RSpec::Matchers (NameError)

It also occured when running $ rails g rspec:install, had to remove the gem from gemfile to allow the rspec:install command to run

It appears that Rails was trying to load the matchers in development while running rake db:create and rails g spec:install, but couldn't. Since pundit-matchers is not required in development, in your Gemfile, I moved the gem out of the group :development, :test block into a new block exclusively for the test environment:
group :test do
  gem 'pundit-matchers', '~> 1.0.0'
end

I've updated the Readme to mention this requirement.

For anyone else who encounters this, I got around it by adding a require: false to
group :test do
  gem 'pundit-matchers', '~> 1.0.0', require: false
end

It appears that most CI's will do something like
RAILS_ENV=test RACK_ENV=test bundle exec rake db:create db:schema:load

This loading of the test environment loads the pundit-matcher library, but hasn't required rspec yet, thus throwing the error that @mingxiangchan and I encountered.
Additionally, I'm submitting a pull request to require 'rspec/core' in the matchers class which should address this as well.


TINYINT in Model is wrongly converted to EDM.Boolean?

Hey @27pchrisl,
I'm not sure if this is by intention or a defect.
I have a couple of customizing tables that have a PK of TINYINT UNSIGNED AUTOINCREMENT. Those are referenced in different models via $table->unsignedTinyInt(…) in the migrations.
The metadata.xml says, those are of type EDM.Boolean, but in fact they are of type EDM.Byte.
As a workaround in my AppServiceProvider I explicitly rewire those attributes via
Lodata::getEntitySet('…')
        ->getType()
        ->getProperty('ref_type_id')
        ->setType(Type::byte());

This way the relations of my model are kept in order.
Can you please clarify the correct behaviour and classify this issue accordingly?

Hi @mgerzabek, is this a mysql database? This could be DBAL interpreting the tinyint column as a boolean: https://github.com/doctrine/dbal/blob/c70bae9e69e0e543044d5e282a624d9b3cbea6fb/src/Platforms/AbstractMySQLPlatform.php#L748
If that's the case then overriding the type in the way you have might be the only solution, as Lodata goes by what DBAL says the type is.

Hi @27pchrisl, yes I'm using MySQL and thank you for clarifying!
As it's MySQL that has no native boolean data type, I will continue to rewire attributes in question like I already did.
Thank's again for the rapid response.


[BOOKINGSG-3980][AS] BookingSG new loading animations

Changes
Adding new BookingSG Loading Animation.

[delete] branch

Additional information

You may refer to this BOOKINGSG-3980

pending confirmation on the lottie animation file. the current size of 343KB will bloat the client's javascript bundle significantly


Live Preview Syntax Error as soon as I edit anything in the HTML

Prerequisites

[Yes] Can you reproduce the problem with Debug -> Reload Without Extensions?
[Yes] Did you perform a cursory search to see if your bug or enhancement is already reported?
[Yes] Did you read the Troubleshooting guide?

For more information on how to write a good bug report read here
For more information on how to contribute read here
Description
So I open Brackets and open my HTML, and turn on Live Preview, and edit one letter and then the Live Preview bolt icon goes pink and the tooltip says "Live Preview (not updating due to syntax error)"
Steps to Reproduce

Open an HTML document
Start Live Preview
Edit one letter of the HTML

Expected behavior: Change on Live Preview screen
Actual behavior: Live Preview screen does not change and the Live Preview bolt icon goes pink and the tooltip says "Live Preview (not updating due to syntax error)"
Versions
OS: Windows 10 Pro 1803
Brackets: Release 1.13 build 1.13.0-17696 (release 49d29a8bc)

I am experiencing this same issue when attempting to add image sources to my HTML doc. It occurs upon typing '<' to start off the line.
My versions are all the same, although I should add the release of Brackets is specifically 49d29a8bc and the build timestamp is Thu Jun 14 2018 08:13:54 GMT+0100.

Any update on this? Same problem here, when creating new tags the live preview icon stays pink.

Nope. I haven’t heard anything.
On Feb 2, 2019, at 10:58 AM, TheShark27 <notifications<EMAIL_ADDRESS>wrote:
Any update on this? Same problem here, when creating new tags the live preview icon stays pink.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/adobe/brackets/issues/14469#issuecomment-459990012, or mute the threadhttps://github.com/notifications/unsubscribe-auth/Adatyf3DhLTlpZYQi_JphCOEcJBdWxhEks5vJd_NgaJpZM4VGY95.

It seems that once you hit save, it will go back to live-updating.

I am having the same issue, and cokert's work around is effective yet annoying.  I am working on Windows 7 Professional X64 SP1.  Brackets 1.14 build 1.14.0-17740 timestamp April 26, 2019 18:14:42 GMT.

Still an issue. Anything?

What kind of bugs is this? It's 2020 and the scientists are about to launch the COVID-19 vaccine.


Review how we create/handle indexes in Reverse Engineer

We've had a few issues around indexes, so rather than making isolated decisions without the all-up context we are creating an issue to take a holistic look at what we do.
Can you put together a summary of how we handle indexes and what needs to change. This should include the things discussed in:

https://github.com/aspnet/EntityFramework/issues/3642
https://github.com/aspnet/EntityFramework/issues/3664

When fixing, reenable SqliteDatabaseModelFactoryTest.It_assigns_uniqueness_to_pk_foreign_key (see https://github.com/aspnet/EntityFramework/pull/3714#discussion-diff-44565007R255). cc @smitpatel

Per discussion on 11/24/15 with @rowanmiller and @ajcvickers we need the following:

FKs: If the name of the index matches that which the convention would automatically create then no need to add a separate index fluent API at all. But if the name is different will need to add it and then the runtime will use that index (matching based on FK properties in the correct order).
PKs: may need to define the PK and add ConstraintName() if the name of the underlying index is different from what the convention would assume.
Alternate Keys: we already generate these. Check that we correctly issue fluent API defining the name.

Issue #3642 was addressed by commit 9b8ea39 and PR #3764.
Issue #3664 will be revisited during the work above.

Note to self: point 3 above is already done (see https://github.com/aspnet/EntityFramework/blob/dev/src/EntityFramework.Relational.Design/RelationalScaffoldingModelFactory.cs#L303).

Note: for point 2 above the correct API is HasName().

Fix checked in with commit dbb5c9f.


Like_meme

I have implemented the animated like button, I didn't take the firebase option as it required user id and since we are not asking signup info so I did otherways

Solved issue #31
@ak523 please merge


Add Programming Interviews

Added the awesome-interviews list.
Is the 'Computer Science' category the best fit, or does it better belong to 'Theory' or even Misc?

Duplicate of https://github.com/sindresorhus/awesome/pull/430, but the author removed the fork so that one can't be reopened, so I guess we'll continue this here.
I would put it under Misc.
Also please read: https://github.com/sindresorhus/awesome/blob/master/contributing.md
Especially this part:

Use title-casing (AP style).

// @MaximAbramchuck

Fixed the case and put it under misc.


Port of esp-at to ESP32-C3

Hi,
I cannot find any at firmware for the new ESP32-C3 SoC. Please port this repo to the ESP32-C3 also, since it is almost a drop in replacement for the old ESP8266/ESP8285 when changing the pinout accordingly.
BRs,
mhummels

@mhummels Thanks for your observation.
ESP32-C3 had ported to esp-at project internally, and in testing now.
Should be pushed to GitHub in the next two weeks
BRs,
CW

@mhummels ESP-AT has supported ESP32-C3 now, please git pull the latest code and test

@mhummels ESP-AT has supported ESP32-C3 now, please git pull the latest code and test

@ustccw I tested on ESP32-C3-DevKitM-1 master branch. No reply from UART1. I compiled the same branch on Saola and it is working

For ESP32-C3 increase stack size

@mtuxpe @msam-rak @mhummels ESP32-C3 AT released: https://github.com/espressif/esp-at/releases/tag/v<IP_ADDRESS>_esp32c3
this is the first ESP32C3-AT version, without BLE, please know.

same to #536

May I know if there is any update? If the issue still exists, please let us know.

Closing due to inactivity. Please feel free to re-open or file a new issue if you have any more questions.


Etcd unit stuck in "Waiting for unit to complete registration."

Just got the following etcd deployment:
Model  Controller     Cloud/Region   Version  SLA
etcd2  aws-us-east-1  aws/us-east-1  2.3.5    unsupported

App      Version  Status   Scale  Charm    Store       Rev  OS      Notes
easyrsa  3.0.1    active       1  easyrsa  jujucharms   38  ubuntu
etcd     3.2.9    waiting      3  etcd     jujucharms   76  ubuntu
flannel           waiting      0  flannel  jujucharms   51  ubuntu

Unit        Workload  Agent  Machine  Public address  Ports     Message
easyrsa/0*  active    idle   0        <IP_ADDRESS>             Certificate Authority connected.
etcd/0*     active    idle   1        <IP_ADDRESS>    2379/tcp  Healthy with 3 known peers
etcd/1      active    idle   2        <IP_ADDRESS>     2379/tcp  Healthy with 3 known peers
etcd/2      waiting   idle   3        <IP_ADDRESS>              Waiting for unit to complete registration.

Machine  State    DNS            Inst id              Series  AZ          Message
0        started  <IP_ADDRESS>  i-0030ada138adfdd65  xenial  us-east-1a  running
1        started  <IP_ADDRESS>   i-0c4fff41bd453c147  xenial  us-east-1a  running
2        started  <IP_ADDRESS>    i-0811789d2a9b3eac2  xenial  us-east-1b  running
3        started  <IP_ADDRESS>   i-0e1fdeaa3d7475395  xenial  us-east-1c  running

Relation provider  Requirer           Interface         Type     Message
easyrsa:client     etcd:certificates  tls-certificates  regular
etcd:cluster       etcd:cluster       etcd              peer
etcd:db            flannel:etcd       etcd              regular

The stuck unit asks the leader what the members are: /snap/bin/etcd.etcdctl --endpoint https://<IP_ADDRESS>:2379 member list
And the leader responds with:
'34ab72230aa203e7: name=etcd1 peerURLs=https://<IP_ADDRESS>:2380 clientURLs=https://<IP_ADDRESS>:2379 isLeader=false',
'49a0217af6e186aa: name=etcd0 peerURLs=https://<IP_ADDRESS>:2380 clientURLs=https://<IP_ADDRESS>:2379 isLeader=true',
'76ce57462ae7183a[unstarted]: peerURLs=https://<IP_ADDRESS>:2380']:
The unstarted unit is the stuck one. Any attempt to register with the leader (register_node_with_leader) ends here: https://github.com/juju-solutions/layer-etcd/blob/master/reactive/etcd.py#L328
Looking at the logs we see that the etcd service in the unstarted unit is refusing to start because there is no configuration rendered:
Apr  6 11:15:14 ip-172-31-20-129 etcd.etcd[11757]: Running as system with data in /var/snap/etcd/current
Apr  6 11:15:14 ip-172-31-20-129 etcd.etcd[11757]: No config found, please create one at /var/snap/etcd/common/etcd.conf.yml
Apr  6 11:15:14 ip-172-31-20-129 etcd.etcd[11757]: See /snap/etcd/142/etcd.conf.yml.sample for an example.

How did we get to this state?
The initial attempt to perform a self registration (https://github.com/juju-solutions/layer-etcd/blob/master/reactive/etcd.py#L336) failed with:
2018-04-06 11:16:52 INFO juju-log Invoking reactive handler: reactive/etcd.py:291:register_node_with_leader
2018-04-06 11:16:56 DEBUG leader-settings-changed client: etcd cluster is unavailable or misconfigured; error #0: client: endpoint https://<IP_ADDRESS>:2379 exceeded header timeout
2018-04-06 11:16:56 DEBUG leader-settings-changed
2018-04-06 11:16:57 WARNING juju-log Notice:  Unit failed self registration
2018-04-06 11:16:57 INFO juju-log etcdctl.register failed, will retry

I assume this actually did the self-registration but the stuck unit thought it did not. So it never rendered the etcd configuration (https://github.com/juju-solutions/layer-etcd/blob/master/reactive/etcd.py#L351), and it never got its cluster_unit_id (https://github.com/juju-solutions/layer-etcd/blob/master/reactive/etcd.py#L343). Instead it finished the self registration attempt here: https://github.com/juju-solutions/layer-etcd/blob/master/reactive/etcd.py#L349
This can be confirmed by the stated the unit went through:
Time                        Type       Status       Message
06 Apr 2018 14:11:10+03:00  workload   waiting      waiting for machine
06 Apr 2018 14:11:10+03:00  juju-unit  allocating
06 Apr 2018 14:12:58+03:00  workload   waiting      installing agent
06 Apr 2018 14:13:02+03:00  workload   waiting      agent initializing
06 Apr 2018 14:13:03+03:00  workload   maintenance  installing charm software
06 Apr 2018 14:13:04+03:00  juju-unit  executing    running install hook
06 Apr 2018 14:14:53+03:00  workload   blocked      Missing relation to certificate authority.
06 Apr 2018 14:15:18+03:00  juju-unit  executing    running leader-settings-changed hook
06 Apr 2018 14:15:21+03:00  juju-unit  executing    running config-changed hook
06 Apr 2018 14:15:24+03:00  juju-unit  executing    running start hook
06 Apr 2018 14:15:29+03:00  juju-unit  executing    running cluster-relation-joined hook
06 Apr 2018 14:15:33+03:00  juju-unit  executing    running cluster-relation-changed hook
06 Apr 2018 14:15:37+03:00  juju-unit  executing    running cluster-relation-joined hook
06 Apr 2018 14:15:42+03:00  juju-unit  executing    running cluster-relation-changed hook
06 Apr 2018 14:15:51+03:00  juju-unit  executing    running certificates-relation-joined hook
06 Apr 2018 14:15:55+03:00  workload   maintenance  Requesting tls certificates.
06 Apr 2018 14:15:57+03:00  juju-unit  executing    running certificates-relation-changed hook
06 Apr 2018 14:16:47+03:00  juju-unit  executing    running leader-settings-changed hook
06 Apr 2018 14:16:57+03:00  workload   waiting      Waiting to retry etcd registration
06 Apr 2018 14:16:58+03:00  juju-unit  executing    running certificates-relation-changed hook
06 Apr 2018 14:17:06+03:00  workload   waiting      Waiting for unit to complete registration.

Hi,
I saw sometime this issue after a scale up or power down/power up.
Your change on the etcd layer fix this issue ?
Thanks in advance,
Valentin

@ktsakalozos I haven't a "play script" because this is in our test suite and it's base on baremetal deployment. But the idea of the test it's to power off the first master, try to create a container, after that power on this server and check if all services are fine (etcd is located in a lxd container on the 3 kubernetes-master servers). Next, we do the same on the other master.
For the scaling test, we scale down one kubernetes master server (both etcd and kubernetes master) and after that scale up a new one.
In both case, after those tests, sometime one etcd have this message "Waiting for unit to complete registration.". And 5 hour after the message is the same......


Support extension of existing needs

Support the possibility to add/overwrite options of existing needs.
For example,
.. comp-sys::
   :id: COMP_MY_COMPONENT

.. needs-extend::
   :filter: id==COMP_MY_COMPONENT
   :derives: REQ_SYS_1

This is something I've been pondering.
I think there are probably two similar but distinct use cases.

you are writing documentation and want to extend the definition of a particular single need.

Perhaps the following syntax would work

.. +comp-sys::
:id: COMP_MY_COMPONENT
:merge-rank: 3
another paragraph of content about this component

This could have semantics that at most one instance can be declared without the + (and becomes the main need). Other +needs would be merged into the base, sorted by merge-rank (default 1 if not specified). For rank ties I'd suggest a sort order of declaring document path (so shorter paths naturally come earlier.

You want to augment potentially many needs. In this case potentially the filter function could have direct access to read and modify the needs (presumably after they have been merged together).

This would also have the potential to be allowed to generate new needs, for instance perhaps you have a relationship a->b->c->d and you want to make a new relationship a->X->d which aggregates all the combinations of b->c; or count needs matching a certain criteria and then make a statistic need representing this.

Great summary about the different use cases.
I think use case 2 covers somehow use case 1, as a filter could define a single need, e.g. by id == SPEC_123.
There may be a short cut for this by a new option, e.g. :extend_id: SPEC_123 or short :eid: SPEC_123.
Merging needs into a new one sounds interesting, but I can't imagine a real life use case, which wouldn't make writing docs too complex.
And overall the merged needs would still exist in the docs, so it somehow doubles the information.
But I'm totally open for examples, how this could help / speed up things.
I'm not a big fan of the +comp-sys syntax, as this kind of information is not needed, if the target-need is referenced by an id.
But I see some advantages in reading/understanding the sources, as you already get some important information about the target-need (here its type) and not only the filter/id.
I also see a problem, if content shall get extended, replaced or even deleted, e.g. for content.
Maybe one tag shall be added, and one of three already existing tags shall get removed.
So a "patch" syntax in the content part will provide more power (like git patches).
But it will not be so comfortable as overwriting everything by setting an option.
So please give some feedback, what of the following functions is needed in your cases:

Options:

Add new element
Overwrite everything
Overwrite/Replace specific element
Delete single element

Content:

Add new content (before/after/in the middle)
Replace content
Remove content

Argument(s) (used as title)

Extend (start, end, mid)
Replace

Looking further I agree the +syntax isn't very natural sphinx.
I also agree simplicity is important. The scenarios I was imagining were:

Adding elements to a need: A security review document analysis the component and you want to add a "securityReviewed" flag on component
Amending list elements on a need: A design mentions the component and you want to add a tag to track that component is related to the feature
Replacing element (?). A release note mentions a new version of the component has been deployed and the versionDeployed element of the component should be updated. (alternative would be to use seperate flags for each state but I imagine there are times where that wouldn't be ideal)
Amending content. A new design document adds some details about a component, you want to have it duplicated on the component. (An alternative may be making it a child need of the component instead and then the main component expands these out.

As I mentioned above one tie break criteria could be the full docname (including directory) and line number. This would mean when tied needs in higher level folders are ranked above those in their subfolders which I imagine is what you'd want most of the time (depth first search effectively). Its the type of thing where the algorithm could get more complicated (breath first or by taking hints from instances higher up in the chain) but keeping it simple and easy to explain is probably a good plan.

The use case I've got around creating derived needs is around making it easier to generate summarized diagrams or summarized data.
In the current structure I'm working with I have usecase needs that contain steps. Each step then provides a link between two subcomponents, along with metadata (what the call is).  These is particularly suited for generating sequence diagrams, and I've also been working on a patch for the flow diagram to allow some needs to act as links rather than nodes.
However these diagrams are low level and detailed, some of the time I may want to show which parent components talk to each other and due to which use-case. This would be the tuple (sourceParentComponent, use case ref/title, targetParentComponent).
Without the usecase ref just having a way to augment the links would be sufficient, but with the metadata a whole new need would be needed to represent it. This could then be included and filtered in tables or other diagram calls as necessary

@Thomas-Swindells-t Thanks for explaining your usecases in detail. Pretty amazing to see the kind of things you are doing with sphinx-needs :)
To get us started I am thinking of an even simpler implementation.
Support only a single extension of an existing need
This means you may create a need
.. need:
   :id: MY_NEED

and extend it exactly once in another file.
.. needs-extend::
   :filter: id==MY_NEED
   :links: ANOTHER_NEED

This could get rid of the ranking problem and having to use a depth-first approach.
We may apply the following rules:

needs-extend can match an existing need only once (throw an error for the need if an extension is used multiple times, similar to duplicate need being created)
need options in needs-extend has priority over options in need (add, update of options is possible with this, for deleting an option an empty option has to be specified in needs-extend)
If needs-extend if found first, create it as a need-proxy until the need is found and created
If needs-extends (that is, need-proxy  internally) exist without a matching need, throw a warning

Thanks for this really helpful discussion and all the ideas.
They helped a lot to finally come up with a final spec.
As I needed  to make some tests to prove, if some details are possible in sphinx, there is already some really rough documentation (on feature branch only) and a first implementation of the directive:

As you can see, the idea from @Thomas-Swindells-t  with the +-syntax got a revival, but on the option level.
So deleting a complete option (-) and adding additional input to an option (+) are supported.
Modifying single values will not be supported in the initial version. Because I'm also not sure that there is a strong use case for this and that no simple workaround is possible.
Please let me know, what you think.
Will finalize this in the next days for upcoming release 0.7.0

Cool. I will play around with it :)
Short question: As discussed, can the needextend be used to extend a need only once?

Nothing ready to play around yet.
Only the directive exists and can be configured. But no modification functionality right now.

ah Ok. Thanks for the info. I misinterpreted it when you said that the directive is available on a feature branch.
Let me give some more thoughts and I will give you a feedback on the concept.
Do you plan to support needextend once per need or what are your thoughts there?

Here are my thoughts:

I am still wondering if there is a better syntax possible than "+" or "-" for options. For a Language Server Protocol implementation that we have, it might provide a bit tricky to support it, but is doable. I did not find a better approach to do it inorder to support, add, remove and replace (remove+add) of options.
Shall we have a additional syntax like below as well

.. needextend::
  :status: in progress

which would be a shortcut for
.. needextend::
  :-status:
  :+status: in progress

If someone wants to do an add (newly) or replace, the shortform would be helpful.
If we use the above syntax, we can start with it, and include the "+" and "-" as a second step (incase these usecases are not urgent). I do not think, it will be a breaking change to support "+" and "-" later.

Updated the PR and added a first Prototype of a working needextend.
Docs got also updated.
Only test cases are missing, will add next days.
+option, -option and also option are supported now.
needextend can be executed on a need several times.
It is in the responsibility of the user to do this wisely :)
To support this, is_modified and modifications values are now available on each need, which can be used to filter for modified needs and needs, which maybe got modified too often.

I activated rtd for the feature branch.
So the current doc can be found here: https://sphinxcontrib-needs.readthedocs.io/en/needextend/directives/needextend.html

Its looking good.
Two thoughts (which could be done later)

have a shorthand for targeting a single need, perhaps a filter expression just containing a single token that is not a reserved word is evaluated as matching against complete_id (and/or id?)
I think link handling could be automated, if the field being updated is in the needs_extra_links then if a new need_id is being added look up that need and populate the _back field, if the need_id is being removed, remove it from the target _back field.

Good points.
Implemented them already.
Not sure, if dynamic functions are fully supported, especially for the link handling in needextend.
A single need can be simply extended  by:
... needextend:: MY_NEED_ID
    :status: new status

See docs.
Also link handling is now down in both directions.
Tests are still missing, so PR will need some more time.

Thank you for all the work on it, its looking really good and I am looking forward to be able to use it.

@danwos If I want to restrict that a need object is not modified more than once using needextend, would it be the right way to create a needs_warnings and checking if the modifications count is more than one?
This is to prevent unforeseen behavior in our case, when needextend is used from several pages multiple times and the page order determines the final need contents (not a problem for  :+option: usage but for :option: and :-option: usage)

Right, checking this constraint must be done by the user and I think using needs_warnings is the right way.
We may think about a better modification monitoring.
E.g. we could count which options got changed how often.
So two different needextend on the same need would be okay, if they have modified different options.
But I'm not sure, if this is a real or overthought use case...


remove socket=true from file manager

We no longer have AJAX file calls, so let's remove our old code from the javascript.

Will be seen in next release.


Can't run specs

engine_cart fails to create a test app. Conflicts include:

sass-rails
sprockets
something to do with safe_load:

/Users/eliotj/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/psych.rb:328:in `safe_load': unknown keywords: whitelist_classes, whitelist_symbols (ArgumentError)

Fixed with bf62bd46d1cdfd7c04bb75c594418c7fb793b185 - added a development dependency to keep sprockets 4 from coming along.
TravisCI is green again


In Hacking.rst, headnode_create also requires base_img argument

In the Hacking.rst developer document, the headnode_create command also requires the base_img as an argument.
haas headnode_create hn proj

It should be
haas headnode_create hn proj img1

Same issue in doc/consistency-model.md, docs/apidesc.md, docs/rest_api.md. I thought the documentation may have to be refactored afterwards, before v0.2.

@shwsun: Would you be interested in taking this on? Might be a good way to get used to the system before the meatier items.

@henn Sure. I will fix these outdated doc ASAP.
Also I would propose that maybe we should refactor the documentation somehow, i.e. installation/HACKING should cover all the things that user/developer need. rest_api or apidesc only appears as reference, details won't pop up unless someone is looking for them.

Awesome. Thanks!
Please check with @SahilTikale, since he's refactoring some of the
developer-related docs.

closing this because #653 got merged


1095 HL7 Ingest reject non ORU R01 messages

This PR adds a check to make sure we only process ORU R01 HL7 messages.  Any message that is not ORU R01 is ignored with a warning.  A warning instead of an error allows us to accept a mix of HL7 messages while we add support for other types.  Also added the report number where the message or error is for.
How does this work?  I am using the PreParser from HAPI to get the message structure as it simple parses a string with the HL7 delimiters.  Note that the message structure is a required field.  If I try to use the regular parser it can throw an exception as some message types are not supported by that parser.  Furthermore, the exception thrown by the regular parser will not show if it was some other type.
Test:

Send an HL7 batch with multiple ORU-R01 messages and at least one non ORU-R01.  Verify that verify you get a warning plus reportItemCount does not include the non ORU-R01 message.  Also verify the report number is shown in the warning.
Send an HL7 message without the MSH-9-3 field.  Verify you get an error due to the missing field.  MSH-9 fields are required in HL7.

Changes

Ignore non ORU-R01 messages
Added report number to warnings and errors
Updated Gradle wrapper to 7.2

Checklist
Testing

[ ] Tested locally?
[ ] Ran quickTest all?
[ ] Ran ./prime test against local Docker ReportStream container?
[ ] Downloaded a file from http://localhost:7071/api/download?
[ ] Added tests?

Process

[ ] Are there licensing issues with any new dependencies introduced?
[ ] Includes a summary of what a code reviewer should verify?
[ ] Updated the release notes?
[ ] Database changes are submitted as a separate PR?
[ ] DevOps team has been notified if PR requires ops support?

Fixes

#1095

To Be Done

lgtm, but I am going to want us to start accepting ACK/NACK soon, so we will need to revisit this in the very near future. :-D

Yes.  I made such that we could process different type of messages from that when statement by just adding a new check.


How to exit from the command line?

typing exit or quit doesn't seem to work...

Ctrl+D is available to quit.
Hmm... It seems to be difficult to notice. I need to support quit command.

This issue is fixed at the latest revision of master branch.
$ kube-prompt
kube-prompt v1.0.0 (rev-44c9760)
Please use `exit` or `Ctrl-D` to exit.
>>> exit
Bye!

Thanks. I close this.


Cancel producer sendtimeout task after creation failure

Motivation
SendTimeout task is being started in the ProducerImpl constructor though it is not being cancelled if the producer creation fails, leaving active ref to that object.
This problem looks like a problem similar to https://github.com/apache/pulsar/pull/5204.

cherry-picked to branch-2.6


Stage 0.10.1.

workers.json and changelog need to be updated

workers.json and changelog need to be updated

updated.


Solution hint is not passed to the HiGHS solver using mathopt

What version of OR-Tools and what language are you using?
Version: 9.10
Language: Python
Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
HiGHS, SCIP
What operating system (Linux, Windows, ...) and version?
Ubuntu 22.04
What did you do?
Using the following simple model I am trying to pass to the solver a solution hint in order to warm start it.
from ortools.math_opt.python import mathopt, model_parameters

model = mathopt.Model()
x = model.add_integer_variable(name="x")
y = model.add_integer_variable(name="y")

model.add_linear_constraint(2 * x + 2 * y >= 7)
model.add_linear_constraint(3 * x + 4 * y >= 12)
model.add_linear_constraint(2 * x + y >= 6)

model.minimize_linear_objective(8 * x + 10 * y)

params = mathopt.SolveParameters()
params.enable_output = True

solution_hint = model_parameters.SolutionHint(variable_values={x: 1, y: 25})
mathopt.solve(
    model,
    mathopt.SolverType.HIGHS,
    params=params,
    model_params=model_parameters.ModelSolveParameters(solution_hints=[solution_hint]),
)

The output below clearly indicates that the solution hint was not taken into account, as first BestSol is inf:
Coefficient ranges:
  Matrix [1e+00, 4e+00]
  Cost   [8e+00, 1e+01]
  Bound  [0e+00, 0e+00]
  RHS    [6e+00, 1e+01]
Presolving model
3 rows, 2 cols, 6 nonzeros  0s
3 rows, 2 cols, 6 nonzeros  0s
Objective function is integral with scale 0.5

Solving MIP model with:
   3 rows
   2 cols (0 binary, 2 integer, 0 implied int., 0 continuous)
   6 nonzeros

        Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work
     Proc. InQueue |  Leaves   Expl. | BestBound       BestSol              Gap |   Cuts   InLp Confl. | LpIters     Time

         0       0         0   0.00%   -inf            inf                  inf        0      0      0         0     0.0s
 T       0       0         0   0.00%   -inf            32                 Large        0      0      0         3     0.0s

Solving report
  Status            Optimal
  Primal bound      32
  Dual bound        32
  Gap               0% (tolerance: 0.01%)
  Solution status   feasible
                    32 (objective)
                    0 (bound viol.)
                    1.7763568394e-15 (int. viol.)
                    0 (row viol.)
  Timing            0.00 (total)
                    0.00 (presolve)
                    0.00 (postsolve)
  Nodes             1
  LP iterations     3 (total)
                    0 (strong br.)
                    0 (separation)
                    0 (heuristics)

The same model but solved with SCIP shows that solution hint was passed to the solver. The output for SCIP is below:
1/1 feasible solution given by solution candidate storage, new primal bound 2.580000e+02

presolving:
(round 1, fast)       0 del vars, 0 del conss, 0 add conss, 0 chg bounds, 1 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
(round 2, exhaustive) 0 del vars, 0 del conss, 0 add conss, 0 chg bounds, 1 chg sides, 0 chg coeffs, 3 upgd conss, 0 impls, 0 clqs
   Deactivated symmetry handling methods, since SCIP was built without symmetry detector (SYM=none).
   Deactivated symmetry handling methods, since SCIP was built without symmetry detector (SYM=none).
presolving (3 rounds: 3 fast, 2 medium, 2 exhaustive):
 0 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 1 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 2 variables (0 bin, 2 int, 0 impl, 0 cont) and 3 constraints
      3 constraints of type <varbound>
transformed objective value is always integral (scale: 2)
Presolving Time: 0.00
transformed 2/2 original solutions to the transformed problem space

 time | node  | left  |LP iter|LP it/n|mem/heur|mdpt |vars |cons |rows |cuts |sepa|confs|strbr|  dualbound   | primalbound  |  gap   | compl.
i 0.0s|     1 |     0 |     0 |     - |  oneopt|   0 |   2 |   3 |   3 |   0 |  0 |   0 |   0 |      --      | 4.800000e+01 |    Inf | unknown
* 0.0s|     1 |     0 |     2 |     - |    LP  |   0 |   2 |   3 |   3 |   0 |  0 |   0 |   0 | 3.200000e+01 | 3.200000e+01 |   0.00%| unknown
  0.0s|     1 |     0 |     2 |     - |   590k |   0 |   2 |   3 |   3 |   0 |  0 |   0 |   0 | 3.200000e+01 | 3.200000e+01 |   0.00%| unknown

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.01
Solving Nodes      : 1
Primal Bound       : +3.20000000000000e+01 (4 solutions)
Dual Bound         : +3.20000000000000e+01
Gap                : 0.00 %

What did you expect to see
The solution is passed to the HiGHS solver by mathopt interface. HiGHS indeed accepts the solution hint, checked using highspy. The mode using highspy:
from highspy import Highs, HighsSolution, HighsVarType

h = Highs()

x = h.addVariable(obj=8, name="x", type=HighsVarType.kInteger)
y = h.addVariable(obj=10, name="y", type=HighsVarType.kInteger)

h.addConstr(2 * x + 2 * y >= 7)
h.addConstr(3 * x + 4 * y >= 12)
h.addConstr(2 * x + y >= 6)

h.setMinimize()

sol = HighsSolution()
sol.col_value = [1, 25]
h.setSolution(sol)

h.solve()

And the output:
Running HiGHS 1.7.2 (git hash: 184e327): Copyright (c) 2024 HiGHS under MIT licence terms
Coefficient ranges:
  Matrix [1e+00, 4e+00]
  Cost   [8e+00, 1e+01]
  Bound  [0e+00, 0e+00]
  RHS    [6e+00, 1e+01]
Assessing feasibility of MIP using primal feasibility and integrality tolerance of       1e-06
Solution has               num          max          sum
Col     infeasibilities      0            0            0
Integer infeasibilities      0            0            0
Row     infeasibilities      0            0            0
Row     residuals            0            0            0
Presolving model
3 rows, 2 cols, 6 nonzeros  0s
3 rows, 2 cols, 6 nonzeros  0s

MIP start solution is feasible, objective value is 258
Objective function is integral with scale 0.5

Solving MIP model with:
   3 rows
   2 cols (0 binary, 2 integer, 0 implied int., 0 continuous)
   6 nonzeros

        Nodes      |    B&B Tree     |            Objective Bounds              |  Dynamic Constraints |       Work
     Proc. InQueue |  Leaves   Expl. | BestBound       BestSol              Gap |   Cuts   InLp Confl. | LpIters     Time

         0       0         0   0.00%   0               258              100.00%        0      0      0         0     0.0s
 T       0       0         0   0.00%   0               32               100.00%        0      0      0         3     0.0s

Solving report
  Status            Optimal
  Primal bound      32
  Dual bound        32
  Gap               0% (tolerance: 0.01%)
  Solution status   feasible
                    32 (objective)
                    0 (bound viol.)
                    1.7763568394e-15 (int. viol.)
                    0 (row viol.)
  Timing            0.01 (total)
                    0.00 (presolve)
                    0.00 (postsolve)
  Nodes             1
  LP iterations     3 (total)
                    0 (strong br.)
                    0 (separation)
                    0 (heuristics)

What did you see instead?
The solution hint was not passed HiGHS using mathopt interface.

Hint is indeed not supported for Highs. See:
https://github.com/google/or-tools/blob/stable/ortools/math_opt/solvers/gscip_solver.cc#L1068
where we process the hint for SCIP, there is no similar code in highs_solver.cc.
We do intend to eventually have better highs support, but our efforts right now are more focused on improving non-C++ support and gRPC. So there is no time line for this feature to be added, but if an internal project usings HiGHS needs we/they will add it.
Highs support is not as good as SCIP/Gurobi/CP-SAT. If hint is important for your problem, you may get a better result with a different solver. We have found SCIP and HiGHS generally have similar performance, and SCIP is also free. If you problem has only integer variables, CP-SAT also works out of the box (if you have continuous variables, it will still run but it discretizes the problem for you, which may or may not be acceptable) and is worth a shot, it uses a different strategy and performance can be better in many situations.

Thanks, @rma350, for the hints, we have been heavily using SCIP, but found that some problems are solved much faster by HiGHS, and it would be even more faster if it would have a hint to start.
Just an addition to my findings:
I also tried a workaround by exploting IncrementalSolver, where the problem is solved twice with the hope that the solution point of the first problem will be used in the second problem as a starting point. So, the first problem is solved with fixed variables, where for each variable lower_bound=upper_bound=solution_value. And the second problem has all variable bounds relaxed to the original bounds and solved. The example model is below:
import math

from ortools.math_opt.python import mathopt

model = mathopt.Model()
x = model.add_integer_variable(name="x")
y = model.add_integer_variable(name="y")

model.add_linear_constraint(2 * x + 2 * y >= 7)
model.add_linear_constraint(3 * x + 4 * y >= 12)
model.add_linear_constraint(2 * x + y >= 6)

params = mathopt.SolveParameters()
params.enable_output = True
with mathopt.IncrementalSolver(model, mathopt.SolverType.HIGHS) as solver:
    x.lower_bound = 1
    x.upper_bound = 1
    y.lower_bound = 25
    y.upper_bound = 25
    model.minimize_linear_objective(8 * x + 10 * y)
    solver.solve(params=params)

    x.lower_bound = -math.inf
    x.upper_bound = math.inf
    y.lower_bound = -math.inf
    y.upper_bound = math.inf

    model.minimize_linear_objective(8 * x + 10 * y)
    solver.solve(params=params)

When using HiGHS, the second problem is solved from the beginning without considering the solution point from the first problem. It makes me to guess that the model is regenarated even if IncrementalSolver is being used with HiGHS. For SCIP it works well and the solution from the first problem is passed to the second one.

Yes a good trick, I think that should have worked, but we do not support incrementalism with highs either!
https://github.com/google/or-tools/blob/stable/ortools/math_opt/solvers/highs_solver.cc#L1005
No promises, but I will try and make some time to add solution hint for highs, I don't think it will be too difficult. There will be some lag between me adding the feature and it working for pip-install users (you need to wait for the code to be exported to github, and then a release to be cut).

Thanks, @rma350, for the information.


Update README.md

Great idea. Thank you for your contribution! 🥇 Merged 🚀 🎉 Best wishes!

Thank you brother
On Fri, 9 Oct 2020, 9:13 pm Michal<EMAIL_ADDRESS>wrote:

Great idea. Thank you for your contribution! 🥇 Merged 🚀 🎉 Best wishes!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mbiesiad/COVID-19-World-Data/pull/34#issuecomment-706255555,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARH3BPQJZW2GNEBFMDSLLWLSJ4VQJANCNFSM4SJHYSWQ
.


Jukebox don't work

Spigot version, viaversion version and plugins list.
https://gyazo.com/d80f15bf49e0153991992ded2c5ea467
We have Bungeecord 1.9
This error happen when player uses a jukebox with 1.9 client on 1.8 server. When player put disk to the jukebox, it dont start the music playing and sometimes kick player. Still jukebox continue playing and players which have 1.8 can hear that music. Jukebox's work well with minecraft 1.8.
I dont have that error message, sry. I tried to get that error but it dont send anything to the console at this time.
Noteblocks works fine with 1.8 and 1.9

First, consider updating since you are not running the latest version.
It is true jukeboxes are broken, will look into this.

Confirmed. I'll look into this

Yep, i updated the plugin and this happened still.
https://gyazo.com/9c0dafa4db4be2c7d5f61a3e90afa345

Fixed #171

Thanks @Matsv !
Still trying to use @StamBoom... RIP


🚀 Feature: ESLint rule to encourage Component Design Guidelines

🔖 Feature description
Make use of ESLint rules to encourage the Component Design Guidelines, specifically forbidding HTML tags that instead should use components from either @backstage/core-components or MUI components.
🎤 Context
Now that the guidelines have been defined, agreed and put publicly in the docs, we should stride towards applying it to the whole project, we could either add the rule and fix the whole project in one go, or request every package & plugin author to add the rule and fix their own workspace.
✌ Possible Implementation
eslint-plugin-react has many rules we could use, but in this case I recommend the forbid-elements rule.
Basically we blacklist common HTML tags that should be replaced, like <div> for MUI's <Box>, <p> and <span> for <Typography> and  <Typography component="span">, <button> for <Button>...
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

Hi!
I'm not entirely sure that the guidelines are so strict, that linting it possible for some of these. One that comes to mind is div vs Box. The wording should perhaps be clarified, because it's not clear to me whether they mean "never use raw div", or rather "remember to always use theme.spacing instead of raw values, and Box is an easier way than div to achieve this if you want".
Maybe some things can be linted against. Not sure we'd legitimately need to use <button> for example, but there are a small number of those in the repo, mostly in tests.

It was indeed "never use raw div", the same for plain text, should always be wrapped in Typography, though not sure the proposed rule can check for that...

The button one was an example I saw when reading the rule docs I believe

Btw before finding that rule, I was about to make a custom ESLint rule, starting to learn how to explore the AST and define rules, hopefully this existing rule is enough...

Alright, to move this forward a bit, would you like to try to start small? Perhaps adding a lint rule to use Button instead of button, to see how it goes. And it would not be in the backstage-cli's rules that it ships to everybody - that's too forceful to push upon everybody. Instead it would be in our own repo's root lint config, most likely, if it's possible (it mustn't overwrite the backstage-cli rules that we ALSO want to retain support for :))

Looked around one to ensure text was wrapped at some level by Typography but couldn't find a rule like that, and making one I feel like it wouldn't be very performant...
Anyway, want me to create a PR with that rule to see how many errors pop out? or want me to fix them in one go as well?

Here it is: https://github.com/backstage/backstage/pull/15037

Hmm there's more linting errors than I thought, in the PR it stops on the app package immediately, but in local run it spews a lot of linting errors, was not expecting plugin:react/recommended to throw so many errors, seems we're far from React's good practices (like using children prop instead of putting the children nested inside the component...).
Anyway, going to remove that and keep only the button rule.

Hmm there's less matches than expected, in a yarn lint:all only got the button lint error in these packages:

packages/core-components: 3 warnings
plugins/techdocs: 2 warnings
plugins/catalog-import: 3 warnings

Which one would be a next candidate? paragraphs seem like a good one, I count around 20 instances with global search.

paragraphs sounds good! Looks like it's happening in #15251 🎉

All PRs were merged successfully 🎉 🎉


Update DMCC docs

Summary

Related issue :

@check-spelling-bot apply updates

@check-spelling-bot apply updates.

Thanks, I still need to add new content. I will confirm when the PR is ready for review.

I forced the check links and seems to be good now

Thanks, I still need to add new content. I will confirm when the PR is ready for review.

Thanks, I still need to add new content. I will confirm when the PR is ready for review.

Could you mark this as Draft then?

@glarocca latest changes added. Please let us know your thoughts.

@sebastian-luna-valero before we can merge, can you please add some content to the PR description?
It's what is used for the commit message when merging.


Bugfix: JS and CSS compilation

This fixes an issue where vendor prefixes in compiled css were removed and updates the minified JavaScript because of changes in the underlying compilation/minification algorithm.

Alright, I can see that the webkit stuff is now back, good! Will ask affected developers to test.

Confirmed that it fixes the problem for embedded browser.

The build fails due to an unrelated issue, see: #394.

Merging as the failing build is caused by Travis and not by code changes on our side.


Jetson gst produces lots of large logs

Lots of large files build up in /srv/maverick when gstreamer actively streaming:
-rw-r--r--  1 mav mav         0 Mar 25 14:10 gst_v4l2_enc_latency_13040.log
-rw-r--r--  1 mav mav         0 Mar 24 23:26 gst_v4l2_enc_latency_17618.log
-rw-r--r--  1 mav mav         0 Mar 25 09:12 gst_v4l2_enc_latency_24776.log
-rw-r--r--  1 mav mav         0 Mar 25 06:28 gst_v4l2_enc_latency_28486.log
-rw-r--r--  1 mav mav         0 Mar 25 13:17 gst_v4l2_enc_latency_3626.log
-rw-r--r--  1 mav mav   1044480 Mar 21 10:24 gst_v4l2_enc_latency_5505.log
-rw-r--r--  1 mav mav 479000674 Mar 24 22:07 gst_v4l2_enc_latency_5614.log
-rw-r--r--  1 mav mav   1216062 Mar 21 10:35 gst_v4l2_enc_latency_5649.log
-rw-r--r--  1 mav mav 126046208 Mar 22 04:14 gst_v4l2_enc_latency_5695.log
-rw-r--r--  1 mav mav         0 Mar 25 01:28 gst_v4l2_enc_latency_6902.log
-rw-r--r--  1 mav mav         0 Mar 25 13:46 gst_v4l2_enc_latency_8882.log

visiond log flooding with warnings:
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.187285877 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.187326139 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.221682413 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.221738040 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.256647718 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.256687927 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.290698201 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
Mar 31 13:08:05 maverick-nano python3[27665]: 0:00:02.290740077 27665   0x7f54035ca0 WARN          v4l2bufferpool gstv4l2bufferpool.c:1471:gst_v4l2_buffer_pool_dqbuf:<nvidia-h264-encode:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0

            #self.h264enc.set_property('MeasureEncoderLatency', 1)
Duh..


--format sdist --no-setup-py could be the default.

Pretty much all modern python installations will have a PIP supporting PEP517.  So wouldn't it make more sense in the next release to default to sdist for format with --no-setup-py as a default?

I'm expecting that when I flip that switch, a bunch of people will show up to complain. In particular, I think many downstream packaging systems (Linux distros, Spack, etc.) are used to downloading a tarball and running python setup.py, and haven't necessarily been adapted to use PEP 517. In part, this depends on the maturity of tools like build and installer, which are designed to be used in this kind of scenario (as opposed to pip, which is designed for end users, so does a bunch of extra stuff which packagers prefer to turn off).
Have you already used --no-setup-py on any packages on PyPI? Have you got any pushback for it?

I only use --no-setup-py.  One project only myself and my business partner are known users;  the other is natlink, which had no package till i made one with flit, so i think people are happy they can use PIP at all.  https://gitter.im/dictation-toolbox/natlink

maybe you could add a warning for a year.

Flit 3.4 will have a --setup-py option, and a message saying that the default is going to change.

Building sdists without setup.py is now the default behaviour.


add join across sources and support xlsx

Initially I tried doing a custom join analysis (code at the bottom) but I felt like it was duplicating a lot of code, and I didn't know how to call SQLAgent to do the auto join.
I also considered using the built-in JoinedTable source, but this again was semi-tedious vs letting the LLM automagically figuring out, not only the proper columns to join on, but also how to transform the column values so that it joins properly.
So I went the route where I support joins across sources.
This is the part where I experimented quite a bit, but I'm not sure what's best.
Reference https://duckdb.org/2024/01/26/multi-database-support-in-duckdb.html (I wonder if we can drop IntakeDremio usage and simply use all duckdb https://www.dremio.com/blog/using-duckdb-with-your-dremio-data-lakehouse/?)
Copy all the necessary tables' data over into a separate, temporary, in-memory duckdb source
This is the current implementation. The pros of this method is that it likely will work with IntakeDremio, but not entirely sure if it's efficient and whether all the table memory can fit in memory.
import duckdb
import pandas as pd

# Load data into pandas DataFrames
df_medals = pd.read_csv("olympic_medals.csv")
df_hosts = pd.read_csv("olympic_hosts.csv")

# Create two separate in-memory DuckDB connections
memory_1 = duckdb.connect(":memory:")
memory_2 = duckdb.connect(":memory:")

# Create tables in each connection
memory_1.from_df(df_medals).to_table("olympic_medals")
memory_2.from_df(df_hosts).to_table("olympic_hosts")

# Create a third in-memory DuckDB connection
memory_3 = duckdb.connect(":memory:")

# Transfer the olympic_medals table from memory_1 to memory_3
medals_table = memory_1.execute("SELECT * FROM olympic_medals").fetchdf()
memory_3.from_df(medals_table).to_table("olympic_medals")

# Transfer the olympic_hosts table from memory_2 to memory_3
hosts_table = memory_2.execute("SELECT * FROM olympic_hosts").fetchdf()
memory_3.from_df(hosts_table).to_table("olympic_hosts")

# Perform the join query in memory_3
query = """
SELECT *
FROM olympic_medals
JOIN olympic_hosts
ON olympic_medals.Year = olympic_hosts.Year
"""

# Execute the query and fetch the result into a DataFrame
result = memory_3.execute(query).fetchdf()

# Display the result
print(result)

Copy all the necessary tables' data over into a central, in-memory (literally, memory["central_source"]) duckdb source
Similar to above, but we persist memory_3 as memory["central_source"] and we simply keep adding more tables to it on upload / init. Then on the sidebar, potentially allow users to delete unused tables/sources.
import duckdb
import pandas as pd

# Load data into pandas DataFrames
df_medals = pd.read_csv("olympic_medals.csv")
df_hosts = pd.read_csv("olympic_hosts.csv")

# Create a single in-memory DuckDB connection
con = duckdb.connect(":memory:")

# Load DataFrames into the same connection as tables
con.from_df(df_medals).to_table("olympic_medals")
con.from_df(df_hosts).to_table("olympic_hosts")

# Perform the join query within the same connection
query = """
SELECT *
FROM olympic_medals AS om
JOIN olympic_hosts AS oh
ON om.slug_game = oh.game_slug
"""

# Execute the query and fetch the result into a DataFrame
result = con.execute(query).fetchdf()

# Display the result
print(result)

Persist sources onto disk and create views of it:
This depends on saving data to disk; not sure if that's desired, but you can simply "ATTACH_DATABASE"
import duckdb
import pandas as pd

# Load data into pandas DataFrames
df_medals = pd.read_csv("olympic_medals.csv")
df_hosts = pd.read_csv("olympic_hosts.csv")

# Create named in-memory DuckDB connections
memory_1 = duckdb.connect("memory_1")
memory_2 = duckdb.connect("memory_2")

# Create tables in each connection
memory_1.from_df(df_medals).to_table("olympic_medals")
memory_2.from_df(df_hosts).to_table("olympic_hosts")

# Create a third in-memory DuckDB connection
memory_3 = duckdb.connect("memory_3")

# Attach the first two connections as databases to memory_3 with unique names
memory_3.execute("ATTACH DATABASE 'memory_1' AS mem1")
memory_3.execute("ATTACH DATABASE 'memory_2' AS mem2")

# Perform the join query in memory_3, referencing the attached databases
query = """
SELECT *
FROM mem1.olympic_medals AS om
JOIN mem2.olympic_hosts AS oh
ON om.slug_game = oh.game_slug
"""

# Execute the query and fetch the result into a DataFrame
result = memory_3.execute(query).fetchdf()

# Display the result
print(result)

Figure showing data.csv joined on an uploaded data2.xlsx
import pandas as pd

df = pd.DataFrame({
    'column1': [1, 2, 3],
    'column2': ['A', 'B', 'C']
})

df2 = pd.DataFrame({
    'column3': [4, 5, 6],
    'column2': ['A', 'B', 'C']
})

df.to_csv("data.csv")

df2.to_excel("data2.xlsx")

import io
import asyncio

import lumen.ai as lmai
import panel as pn
import pandas as pd

from lumen.sources.duckdb import DuckDBSource

pn.extension(
    "tabulator", "codeeditor", "vega", inline=False, template="fast", notifications=True,
)

llm = lmai.llm.OpenAI(interceptor_path="test.db")

source = DuckDBSource(
    tables=["data.csv"],
    uri=":memory:",
)
lmai.memory["current_source"] = source

assistant = lmai.Assistant(
    llm=llm,
    agents=[
        lmai.agents.SourceAgent,
        lmai.agents.TableAgent,
        lmai.agents.TableListAgent,
        lmai.agents.SQLAgent,
        lmai.agents.PipelineAgent,
        lmai.agents.hvPlotAgent,
        lmai.agents.ChatAgent,
    ],
    suggestions=["Join hosts and medals"]
)
assistant.servable("Lumen.ai")
assistant.controls().servable(area="sidebar")

class Join(Analysis):
    """
    Provides high level data profiling.
    """

    async def __call__(self, pipeline):
        def add_table(event):
            if input_tabs.active == 0 and upload.value:
                if upload.filename.endswith("csv"):
                    df = pd.read_csv(io.BytesIO(upload.value), parse_dates=True)
                elif upload.filename.endswith((".parq", ".parquet")):
                    df = pd.read_parquet(io.BytesIO(upload.value))
                elif upload.filename.endswith(".xlsx"):
                    df = pd.read_excel(io.BytesIO(upload.value))
                duckdb_source._connection.from_df(df).to_table(name.value)
                duckdb_source.tables = [name.value]
                memory["current_source"] = duckdb_source
            name.value = ""
            upload.value = None
            upload.filename = ""
            src = memory["current_source"]
            tables[:] = [
                (t, pn.widgets.Tabulator(src.get(t), sizing_mode="stretch_width")) for t in src.get_tables()
            ]
            input_column.visible = False

        def add_name(event):
            if "/" in event.new:
                name.value = event.new.split("/")[-1].split(".")[0].replace("-", "_")
            elif not name.value and event.new:
                name.value = event.new.split(".")[0].replace("-", "_")
                name.visible = True

        def enable_add(event):
            add.visible = not bool(name.value)

        name = pn.widgets.TextInput(name="Name your table", visible=False)
        tables = memory["current_source"].get_tables()
        select = pn.widgets.Select(name="Select table", options=tables)
        upload = pn.widgets.FileInput(align="end", accept=".csv,.parquet,.parq")
        add = pn.widgets.Button(
            name="Add table",
            icon="table-plus",
            visible=False,
            button_type="success",
        )
        input_tabs = pn.Tabs(("Select", select), ("Upload", upload), sizing_mode="stretch_width")
        tables = pn.Tabs(sizing_mode="stretch_width")
        duckdb_source = DuckDBSource(uri=":memory:")
        input_column = pn.Column(
            input_tabs,
            name,
            add,
            sizing_mode="stretch_width",
        )
        menu = pn.Column(
            input_column,
            tables,
            sizing_mode="stretch_width",
        )
        upload.param.watch(add_name, "filename")
        upload.param.watch(enable_add, "value")
        add.on_click(add_table)

        assistant.interface.send(menu, respond=False, user="SourceAgent")
        while not add.clicks:
            await asyncio.sleep(0.05)

simply use all duckdb https://www.dremio.com/blog/using-duckdb-with-your-dremio-data-lakehouse/?)

We absolutely should.

Not sure how to serialize the uploaded data.

Okay, pushed a bunch of fixes and improvements here:

DuckDBSource.create_sql_expr_source now has an option to materialize temporary tables so the LLM can refer to tables by name
Refactored the SQLAgent to pull out a lot of the join logic and emphasize that it should only join when it really needs to.
Skip search for correct analysis when the user clicks one of the buttons
Allow assistant to select different source if table can't be found in current_source


fix: Ability to set minimum match confidence on top faq

:tada: This PR is included in version 2.5.9 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


RequirementMachine: Better tests for concrete type requirements with opaque archetypes

Also fix a weird latent bug. In lookupConcreteNestedType(), we would
push nullptr onto the concreteDecls vector if the opaque archetype
did not have a nested type with this name. However, this did not
turn out to be a problem, since in this code path we would only
have a single element in this vector, and the later call to
std::min_element() did not end up dereferencing the null pointer.
However this is very dodgy, so tweak the code to prevent this from
happening and add a test case (which already passed anyway).

@swift-ci Please smoke test


Bazel RBE Debug C/C++ failure due to assertion failure

https://source.cloud.google.com/results/invocations/7e2de56d-40ad-47e9-aa1d-fdeebc02a1aa/log
I0713 23:00:17.334909480      20 driver.cc:284]              Shutdown clients
I0713 23:00:17.334993122      20 driver.cc:303]              Finishing servers
I0713 23:00:17.335459687      20 driver.cc:319]              Receiving final status from servers
E0713 23:00:17.335501428      20 driver.cc:331]              Couldn't get final status from server 0
E0713 23:00:17.335531313      20 driver.cc:332]              assertion failed: false
I0713 23:00:17.484199367      17 json_run_localhost.cc:74]   driver: subprocess terminated with signal 6
I0713 23:00:17.484374421      17 json_run_localhost.cc:74]   worker: subprocess terminated with signal 6
E0713 23:00:20.859383347      17 json_run_localhost.cc:137]  assertion failed: driver_join_status == 0
Aborted (core dumped)
[37,245 / 37,253] 8238 / 8245 tests, 1 failed; Testing //test/cpp/qps:json_run_localhost_cpp_generic_async_streaming_qps_unconstrained_2waysharedcq_secure@poller=epollex; 15s remote ... (8 actions running)
INFO: Elapsed time: 273.838s, Critical Path: 97.01s
INFO: 19386 processes: 18286 remote cache hit, 1100 remote.
INFO: Build completed, 1 test FAILED, 37253 total actions

This is outdated, and we decided not to track this here anyway


check for forbidden in equinix_metal_device read

Create and Delete functions were already checking for 404s/403s, however it may occur a device is in failed state for external changes from the portal or any way out of terraform, returning a 403s in a refresh/plan/apply (read) action.
Added 403 check on read function and to remove resource from terraform state without errors. It will also check isNewResource to prevent the terraform import from failing silently.
Added a mock for packngo.DeviceService, with only implementation of the GET method.  Other methods can be implemented gradually in the future according to the tests needs.
Fix https://github.com/equinix/terraform-provider-equinix/issues/233

Codecov Report

Merging #235 (e0074b8) into master (86242e6) will decrease coverage by 0.46%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #235      +/-   ##
==========================================
- Coverage   59.94%   59.47%   -0.47%
==========================================
  Files          73       73
  Lines       12564    12565       +1
==========================================
- Hits         7531     7473      -58
- Misses       4739     4810      +71
+ Partials      294      282      -12

Impacted Files
Coverage Δ

equinix/resource_metal_device.go
63.34% <100.00%> (-2.94%)
:arrow_down:

equinix/data_source_metal_ip_block_ranges.go
40.86% <0.00%> (-41.74%)
:arrow_down:

equinix/data_source_metal_virtual_circuit.go
96.36% <0.00%> (-3.64%)
:arrow_down:

equinix/resource_metal_virtual_circuit.go
76.45% <0.00%> (-0.33%)
:arrow_down:

equinix/helpers_device.go
68.42% <0.00%> (+0.52%)
:arrow_up:

equinix/port_helpers.go
67.17% <0.00%> (+1.14%)
:arrow_up:

equinix/errors.go
87.96% <0.00%> (+2.77%)
:arrow_up:

Continue to review full report at Codecov.

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

Go tests are failing:
=== RUN   TestAccMetalDevice_readErrorHandling
=== RUN   TestAccMetalDevice_readErrorHandling/forbiddenAfterProvision
2022/07/29 12:28:46 [WARN] Device () not found or in failed status, removing from state
=== RUN   TestAccMetalDevice_readErrorHandling/notFoundAfterProvision
2022/07/29 12:28:46 [WARN] Device () not found or in failed status, removing from state
=== RUN   TestAccMetalDevice_readErrorHandling/forbiddenWaitForActiveDeviceProvision
=== RUN   TestAccMetalDevice_readErrorHandling/notFoundProvision
    resource_metal_device_acc_test.go:1088: resourceMetalDeviceRead() error = HTTP 404 , wantErr false
=== RUN   TestAccMetalDevice_readErrorHandling/errorProvision
--- FAIL: TestAccMetalDevice_readErrorHandling (0.00s)
    --- PASS: TestAccMetalDevice_readErrorHandling/forbiddenAfterProvision (0.00s)
    --- PASS: TestAccMetalDevice_readErrorHandling/notFoundAfterProvision (0.00s)
    --- PASS: TestAccMetalDevice_readErrorHandling/forbiddenWaitForActiveDeviceProvision (0.00s)
    --- FAIL: TestAccMetalDevice_readErrorHandling/notFoundProvision (0.00s)
    --- PASS: TestAccMetalDevice_readErrorHandling/errorProvision (0.00s)


Drop broken Android 32-bit framebuffer setting for a reliable one for depth buffer

Forward port of #54431.

Thanks!


Ignoring some C# warnings of OmniSharp

From @zsombornagy on December 7, 2015 16:20
Hi!
I'm trying to ignore the "Unnecessary using directive." warning in my C# code (for Unity3D).
I've created an omnisharp.json file with this content:
{
	"IgnoredCodeIssues": [
		"^Unnecessary using directive.$"
	]
}

Then I opened a C# file, and restarted OmniSharp (with the command palette within Code).
But it fails with this message:
System.FormatException: Unsupported JSON token 'StartArray' was found. Path 'IgnoredCodeIssues', line 2 position 24.

I'm using VS Code Version 0.10.3, on OS X 10.11.1.
Thanks!
Copied from original issue: Microsoft/vscode#1076

I don't believe that supported like that, but moving to OmniSharp for comment first.

This is currently not supported yet, it was mentioned/suggested before here https://github.com/OmniSharp/omnisharp-roslyn/issues/301 but the actual feature was never implemented.
I suggest to close on of the two issues as duplicate

Closing as duplicate of #301


Force code_object_v2 for amd gpu backend

Goal : Stick to code_object_v2 for LLVM AMDGPU backend at this moment.
I am taking the action item to enable code_object_v3 when it's ready and validated.

Does v2 work on recent LLVM?

code_object_v2 is still supported, although this is not the default.
See https://llvm.org/docs/AMDGPUUsage.html
A side note: we are sorting out issue w.r.t to code_object_v3. At this moment, code_object_v2 would be a safer choice.

Just to add some note about the impact: This fixes the cross-thread reductions, which were broken because the code v3 objects seem to loose the fixed group segment ("shared memory") property, and reading out of bounds returns 0.

yes, this is one of the motivations behind the fix. Thanks for the confirmation.


Blacklist regex for CLI does not seem to work

I've been trying to crawl a website and ignore paths like /news or whatever using -b, but nothing seems to work.
I looked at https://github.com/spider-rs/spider/pull/36 and from what I can see the feature regex is not enabled for the CLI part of this project.
Is this on purpose? I also can't seem to find any example or test that tests that the CLI can actually do this.
Hope I'm just blind and overlooking something.
Thanks for the tool! :D

Here's a command to reproduce it:
spider -v -s -r  -D 10 -d https://choosealicense.com -b "bsd" download -t choosealicense
That's close to what I'm actually trying to crawl/scrape/download. As you can see, it still pulls the bsd license and everything

Hi @Byter09 thank you for the issue! The regex feature can be installed with 1.36.5.
cargo install spider_cli --features regex.


"Inspect the Razor C# class generated for a view" obsolete for current versions

The section "Inspect the Razor C# class generated for a view" is obsolete in current versions, since the generated views are not emitted by default anymore. There is no comment about manually enabling the output of the artifacts (e.g. described in this blog post here).

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

ID: b87067b2-347c-072d-26c8-5a8c7c9c860b
Version Independent ID: a0b3b70a-3b39-1b5f-a4ce-c41bd2d6b044
Content: Razor syntax reference for ASP.NET Core
Content Source: aspnetcore/mvc/views/razor.md
Product: aspnet-core
Technology: aspnetcore-mvc
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

Thanks for reporting this. Any chance you could PR this? At the top right of the article, select the Edit pen icon:

Select the pen icon again. Save.

I actually did already, but somewhere I got lost digging for the exact version, that brought this change. Anyway, PR coming up now :)


Remove depreacted GSM_PPP, UART_MUX and GSM_MUX.

This PR removes the deprecated modules GSM_PPP, UART_MUX and GSM_MUX, aligns or removes previously dependent samples, tests, and modules, and documents the changes in the 3.7 release notes.

@bjarki-trackunit could you rebase and sort out the merge conflict


Morning session: Peer-to-peer code review

Review of peer's code

Hi @hamzaw9 ,
Your project is looking great!
Congratulations! 🎉

To Highlights
:heavy_check_mark: Descriptive commit messages
:heavy_check_mark: Professional** looking README file
:heavy_check_mark: Good overall design
:heavy_check_mark: All linters passing
:heavy_check_mark: Good use of GitHub flows 👍
Cheers and Happy coding!👏👏👏


Add Julianne as alias for Juliana

https://en.wikipedia.org/wiki/Julianne lists Juliana as a variation of Julianne so I've added Julianne as an alias to the existing Juliana name.

Thanks @mtodd
Merged #87


ansi-color-codec 0.3.11 was never attempted to build

Crate name
ansi-color-codec
Build failure link
N/A
Additional details
I updated ansi-color-codec  to 0.3.11 today, but it was never built on docs.rs.
It is neither in the queue nor is there a failed build logged for this version.
The docs build fine on my dev machine with rustdoc 1.63.0 (4b91a6ea7 2022-08-08).
Any idea what's going on?
0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $ git log -1
commit 58ad2c53055ca9a19ee2210299946b1d8f137c9e (HEAD -> main, tag: 0.3.11, github/main, github/HEAD)
Author: Richard Neumann<EMAIL_ADDRESS>Date:   Thu Nov 17 18:23:00 2022 +0100

    Add documentation and doctests
0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $ cargo clean
0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $ cargo doc
   Compiling proc-macro2 v1.0.47
   Compiling quote v1.0.21
   Compiling version_check v0.9.4
   Compiling syn v1.0.103
   Compiling unicode-ident v1.0.5
   Compiling libc v0.2.137
 Documenting unicode-ident v1.0.5
    Checking bitflags v1.3.2
    Checking cfg-if v1.0.0
    Checking os_str_bytes v6.4.0
 Documenting bitflags v1.3.2
   Compiling heck v0.4.0
    Checking once_cell v1.16.0
    Checking termcolor v1.1.3
 Documenting heck v0.4.0
 Documenting os_str_bytes v6.4.0
    Checking strsim v0.10.0
 Documenting cfg-if v1.0.0
 Documenting strsim v0.10.0
 Documenting once_cell v1.16.0
 Documenting termcolor v1.1.3
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
    Checking clap_lex v0.3.0
 Documenting clap_lex v0.3.0
 Documenting proc-macro2 v1.0.47
 Documenting libc v0.2.137
 Documenting quote v1.0.21
 Documenting proc-macro-error-attr v1.0.4
 Documenting syn v1.0.103
    Checking nix v0.25.0
    Checking atty v0.2.14
 Documenting atty v0.2.14
 Documenting nix v0.25.0
    Checking ctrlc v3.2.3
 Documenting ctrlc v3.2.3
 Documenting proc-macro-error v1.0.4
 Documenting clap_derive v4.0.21
   Compiling clap_derive v4.0.21
 Documenting clap v4.0.25
    Checking clap v4.0.25
 Documenting ansi-color-codec v0.3.11 (/home/rne/Projekte/ansi-color-codec)
    Finished dev [unoptimized + debuginfo] target(s) in 20.36s
0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $ cargo test
   Compiling bitflags v1.3.2
   Compiling cfg-if v1.0.0
   Compiling os_str_bytes v6.4.0
   Compiling termcolor v1.1.3
   Compiling once_cell v1.16.0
   Compiling strsim v0.10.0
   Compiling clap_lex v0.3.0
   Compiling libc v0.2.137
   Compiling nix v0.25.0
   Compiling atty v0.2.14
   Compiling clap v4.0.25
   Compiling ctrlc v3.2.3
   Compiling ansi-color-codec v0.3.11 (/home/rne/Projekte/ansi-color-codec)
    Finished test [unoptimized + debuginfo] target(s) in 10.12s
     Running unittests src/lib.rs (target/debug/deps/ansi_color_codec-39e2b5a9a3334ba1)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/main.rs (target/debug/deps/ansi_color_codec-a375e45a6c9fda92)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests ansi-color-codec

running 3 tests
test src/lib.rs - ColorCodec::ansi_color_decode (line 100) ... ok
test src/lib.rs - ColorCodec::ansi_color_encode (line 33) ... ok
test src/lib.rs - ColorCodec::interpret_as_ansi_colors (line 63) ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s

0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $ cargo --version
cargo 1.63.0 (fd9c4297c 2022-07-01)
0 ✓ rne@thinkpad ~/Projekte/ansi-color-codec $

Looks like it wasn't seen for some reason, production logs from the registry checks before/after the publish eventn:
2022-11-17T17:25:29.611096Z DEBUG docs_rs::utils::daemon: Checking new crates
2022-11-17T17:25:30.357202Z DEBUG docs_rs::utils::daemon: 0 crates added to queue
2022-11-17T17:26:30.358280Z DEBUG docs_rs::utils::daemon: Checking new crates
2022-11-17T17:26:31.324289Z DEBUG docs_rs::build_queue: ansi-color-codec-0.3.5 yanked
2022-11-17T17:26:31.329799Z DEBUG docs_rs::build_queue: ansi-color-codec-0.3.4 yanked
2022-11-17T17:26:31.363771Z DEBUG docs_rs::utils::daemon: 0 crates added to queue

Relevant commits in https://github.com/rust-lang/crates.io-index:
> git log --format='%ai %h %s' --since='2022-11-17 00:00' an/si/ansi-color-codec
2022-11-17 17:26:27 +0000 92c18bdf30a Yanking crate `ansi-color-codec#0.3.5`
2022-11-17 17:26:25 +0000 1533f8e863a Yanking crate `ansi-color-codec#0.3.4`
2022-11-17 17:26:00 +0000 da97cd0243b Updating crate `ansi-color-codec#0.3.11`

It's likely a bug in crates-index-diff from having the update and yanks in the same check (maybe related to the major update it just had), I'll open an upstream issue and have manually queued a build.

@Nemo157 thank you for digging into this!
when fixed, is it worth running our consistency-check command? Does it still work?

when fixed, is it worth running our consistency-check command? Does it still work?

Not sure, this should be very rare, I think it only happens when a crate is published and yanked multiple times within a minute to get picked up in the same index check. That said, it did already happen within two weeks of the crates-index-diff update 🙃

The latest version of crates-index-diff has received a major upgrade for correctness and performance, along with new baseline tests that validate no crates-index events are lost.

#1935 was merged & deployed, which should fix this reliably.
Since we need to find other releases we missed for this to be really solved, I'll leave this issue open until we ran (and fixed?) the consistency check.


Shipit object only exposes config for current environment

Normally you're only concerned with your current environment, but some tasks may want to interact with other environment configs.
For example, a database syncing task. Suppose you wanted to be able to sync a database between 2 remotes with something like:
shipit production db:push:development

You must find a way to do it in your task, because it will not be built-in in Shipit, it can be very dangerous to mix environment.

Sounds good, thanks.


New LiveCD ; includes latest CSI

This updates assets.sh with the most recent cray-site-init and a matching LiveCD.
This bumps cray-site-init from 1.12.2 to 1.13.2.

Smoke tested ✅


[SPARK-15541] Casting ConcurrentHashMap to ConcurrentMap (master branch)

What changes were proposed in this pull request?
Casting ConcurrentHashMap to ConcurrentMap allows to run code compiled with Java 8 on Java 7
How was this patch tested?
Compilation. Existing automatic tests

Test build #63118 has started for PR 14459 at commit 471999a.

Test build #63118 has finished for PR 14459 at commit 471999a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/63118/
Test PASSed.

Merged to master/2.0/1.6


NoneType has no attribute pop

Here's a simple example after authenticating that doesn't seem to work:
from caveclient import CAVEclient
client = CAVEclient(datastack_name="minnie65_public_v117")
client.materialize.get_tables()

This results in the following error (re-formatted by me for readability). This appears for most of the public datastacks I've tried. Not sure how to debug the server-side trace, but looks like this is not a local config issue?
HTTPError                                 Traceback (most recent call last)
Cell In[116], line 3
      1 from caveclient import CAVEclient
      2 client = CAVEclient(datastack_name="minnie65_public_v117")
----> 3 client.materialize.get_tables()

File ###python3.11/site-packages/caveclient/frameworkclient.py:449, in CAVEclientFull.materialize(self)
    444 """
    445 A client for the materialization service. See [client.materialize](../client_api/materialize.md)
    446 for more information.
    447 """
    448 if self._materialize is None:
--> 449     self._materialize = MaterializationClient(
    450         server_address=self.local_server,
    451         auth_client=self.auth,
    452         datastack_name=self._datastack_name,
    453         synapse_table=self.info.get_datastack_info().get("synapse_table", None),
    454         max_retries=self._max_retries,
    455         pool_maxsize=self._pool_maxsize,
    456         pool_block=self._pool_block,
    457         over_client=self,
    458         desired_resolution=self.desired_resolution,
    459     )
    460 return self._materialize

File ###python3.11/site-packages/caveclient/materializationengine.py:200, in MaterializationClient(server_address, datastack_name, auth_client, cg_client, synapse_table, api_version, version, verify, max_retries, pool_maxsize, pool_block, desired_resolution, over_client)
    188 endpoints, api_version = _api_endpoints(
    189     api_version,
    190     SERVER_KEY,
   (...)
    196     verify=verify,
    197 )
    199 MatClient = client_mapping[api_version]
--> 200 return MatClient(
    201     server_address,
    202     auth_header,
    203     api_version,
    204     endpoints,
    205     SERVER_KEY,
    206     datastack_name,
    207     cg_client=cg_client,
    208     synapse_table=synapse_table,
    209     version=version,
    210     verify=verify,
    211     max_retries=max_retries,
    212     pool_maxsize=pool_maxsize,
    213     pool_block=pool_block,
    214     over_client=over_client,
    215     desired_resolution=desired_resolution,
    216 )

File ###python3.11/site-packages/caveclient/materializationengine.py:1914, in MaterializationClientV3.__init__(self, *args, **kwargs)
   1912 tables = None
   1913 if self.fc is not None:
-> 1914     if metadata[0].result() is not None and metadata[1].result() is not None:
   1915         tables = TableManager(self.fc, metadata[0].result(), metadata[1].result())
   1916 self._tables = tables

File ~/.pyenv/versions/3.11.7/lib/python3.11/concurrent/futures/_base.py:449, in Future.result(self, timeout)
    447     raise CancelledError()
    448 elif self._state == FINISHED:
--> 449     return self.__get_result()
    451 self._condition.wait(timeout)
    453 if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]:

File ~/.pyenv/versions/3.11.7/lib/python3.11/concurrent/futures/_base.py:401, in Future.__get_result(self)
    399 if self._exception:
    400     try:
--> 401         raise self._exception
    402     finally:
    403         # Break a reference cycle with the exception in self._exception
    404         self = None

File ~/.pyenv/versions/3.11.7/lib/python3.11/concurrent/futures/thread.py:58, in _WorkItem.run(self)
     55     return
     57 try:
---> 58     result = self.fn(*self.args, **self.kwargs)
     59 except BaseException as exc:
     60     self.future.set_exception(exc)

File ###python3.11/site-packages/cachetools/__init__.py:737, in cached.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
    735 except KeyError:
    736     pass  # key not found
--> 737 v = func(*args, **kwargs)
    738 try:
    739     cache[k] = v

File ###python3.11/site-packages/caveclient/materializationengine.py:1957, in MaterializationClientV3.get_tables_metadata(self, datastack_name, version, log_warning)
   1954 url = self._endpoints["all_tables_metadata"].format_map(endpoint_mapping)
   1956 response = self.session.get(url)
-> 1957 all_metadata = handle_response(response, log_warning=log_warning)
   1958 for metadata_d in all_metadata:
   1959     vx = metadata_d.pop("voxel_resolution_x", None)

File ###python3.11/site-packages/caveclient/base.py:88, in handle_response(response, as_json, log_warning)
     86 def handle_response(response, as_json=True, log_warning=True):
     87     """Deal with potential errors in endpoint response and return json for default case"""
---> 88     _raise_for_status(response, log_warning=log_warning)
     89     _check_authorization_redirect(response)
     90     if as_json:

File ###python3.11/site-packages/caveclient/base.py:79, in _raise_for_status(r, log_warning)
     71     http_error_msg = "%s Server Error: %s for url: %s content:%s" % (
     72         r.status_code,
     73         reason,
     74         r.url,
     75         r.content,
     76     )
     78 if http_error_msg:
---> 79     raise requests.HTTPError(http_error_msg, response=r)
     80 if log_warning:
     81     warning = r.headers.get("Warning")

Followed by this server response / traceback:
HTTPError: 500 Server Error: 'NoneType' object has no attribute 'pop' for url: https://minnie.microns-daf.com/materialize/api/v3/datastack/minnie65_public_v117/version/117/tables/metadata
content:b'{"code": 500, "message": "\'NoneType\' object has no attribute \'pop\'", "traceback": [ ... ]}\n'

The traceback is this array:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
      rv = self.dispatch_request()
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request
      return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/usr/local/lib/python3.9/site-packages/flask_restx/api.py", line 403, in wrapper
      resp = resource(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/flask/views.py", line 84, in view
      return current_app.ensure_sync(self.dispatch_request)(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/flask_restx/resource.py", line 49, in dispatch_request
      resp = meth(*args, **kwargs)
  File "/app/./materializationengine/blueprints/reset_auth.py", line 12, in decorated_function
      return f(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/middle_auth_client/decorators.py", line 265, in decorated_function
      return f(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/middle_auth_client/decorators.py", line 396, in decorated_function
      return f(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/flask_limiter/extension.py", line 1186, in __inner
      R, flask.current_app.ensure_sync(cast(Callable[P, R], obj))(*a, **k)
  File "/app/./materializationengine/blueprints/client/datastack.py", line 80, in wrapper
      return f(*args, **kwargs)
  File "/app/./materializationengine/blueprints/client/api2.py", line 758, in get
      ann_table = ann_md.pop("annotation_table", None)
AttributeError: 'NoneType' object has no attribute 'pop'

As a workaround, there doesn't seem to be an issue on minnie65_public, which is what we suggest using these days and gives access to all the long term releases:
client = CAVEclient(datastack_name="minnie65_public")
client.materialize.version = 117
client.materialize.get_tables()

Perfect, thank you @ceesem!!


Bug in submit_sqes_and_wait_with_timeout

This test fails with assertion failed: cqe.is_timeout()
use std::io;
use std::time::Duration;

#[test]
fn test_timeout() -> io::Result<()> {
    let mut r = iou::IoUring::new(8)?;
    let num_submitted = r.submit_sqes_and_wait_with_timeout(1, Duration::from_millis(1))?;
    assert_eq!(num_submitted, 1);
    let cqe = r.peek_for_cqe().unwrap();
    assert!(cqe.is_timeout());
    Ok(())
}

If i'm not wrong, you forgot to set user_data to LIBURING_UDATA_TIMEOUT in submit_sqes_and_wait_with_timeout

You're completely right! This got messed up in the shuffle around timeouts.
Also, sorry for not reviewing/merging your other contributions yet. TL;DR: I no longer have the Linux laptop I had been using for developing iou & a repair shop is taking forever to fix the screen of my other Linux laptop I will be using in the future.

No worries :)


[DatePicker] Allow to change order of month and year in PickersCalendarHeader

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Summary 💡
Allow to change the order of year and month in PickersCalendarHeader component for non-Western countries.
IMO: I’d be happy to customize it like this:
<DesktopDatePicker
   renderCalendarHeaderTitle={(date) => format(date, 'yyyy/mm')}
/>

The relevant code is here:
https://github.com/mui-org/material-ui/blob/db8a5f536ffb4e0dc0dadffcdfd69eebff62de27/packages/mui-lab/src/CalendarPicker/PickersCalendarHeader.tsx#L177-L200

Examples 🌈
Actual:

Expected:

I'd like to change the actual to the expected.
Motivation 🔦
I am creating UI components for Japanese using MUI 5, but in Japan, it is not common that year follows month.
It has a merit to make this possible so that the DatePicker can be more useful in non-Western countries.

+1 for this issue.
I'm not sure, but I think using the monthAndYear format seems more appropriate here than using month and year formats separately and hard-coding their order.
<FadeTransitionGroup
  reduceAnimations={reduceAnimations}
  transKey={utils.format(month, 'monthAndYear')}
>
  <PickersCalendarHeaderLabelItem
    aria-live="polite"
    data-mui-test="calendar-month-and-year-text"
    ownerState={ownerState}
  >
    {utils.format(month, 'monthAndYear')}
  </PickersCalendarHeaderLabelItem>
</FadeTransitionGroup>

If PickersCalendarHeader uses monthAndYear format here, we can change the order of month and year by passing custom dateFormats prop to DatePickers.
<DatePicker
   dateFormats={{ monthAndYear: 'yyyy MM' }}
/>

Any workaround for now?

I realized this issue, and viewed the following source code and found the cause.
https://github.com/mui/material-ui/blob/04366056c2e078b5e5425be2ce9f2515dfaf7bcc/packages/mui-lab/src/CalendarPicker/PickersCalendarHeader.tsx#L185-L208
Perhaps it could be improved in the way @gky360 is describing. (and smart way)


Command.Run() doesn't forward ctrl-c to child process

This functionality is needed to cleanly exit Docker Compose for example.

@maxahlberg

It also affects terraform. If you kill terraform without forwarding the SIGTERM, then you will have a hanging lock that will need to be force unlocked.


Elassandra dies by a null pointer when broadcast_address is not defined

Elasticsearch version: <IP_ADDRESS>
The error occurs only with the elasticsearch plugin enabled:
2018-06-25 10:41:28,216 ERROR [main] ElassandraDaemon.java:588 main Exception
java.lang.NullPointerException: null
	at java.util.Objects.requireNonNull(Objects.java:203)
	at org.elasticsearch.common.network.NetworkAddress.format(NetworkAddress.java:93)
	at org.elasticsearch.common.network.NetworkAddress.format(NetworkAddress.java:69)
	at org.elassandra.discovery.CassandraDiscovery.buildNodeName(CassandraDiscovery.java:137)
	at org.apache.cassandra.service.ElassandraDaemon.nodeSettings(ElassandraDaemon.java:453)
	at org.apache.cassandra.service.ElassandraDaemon.getSettings(ElassandraDaemon.java:436)
	at org.apache.cassandra.service.ElassandraDaemon.activate(ElassandraDaemon.java:187)
	at org.apache.cassandra.service.ElassandraDaemon.main(ElassandraDaemon.java:551)

@vroyer warned me about the missing broadcast address configuration, but the cassandra behavior is to adopt the value defined in listen_address as the default broadcast_addres as stated in the cassandra.yml comments:
# Address to broadcast to other Cassandra nodes
# Leaving this blank will set it to the same value as listen_address
# broadcast_address: <IP_ADDRESS>

PS.: I tested with prior versions of Elassandra and Cassandra as well and the problem doesn't happens.

Fixed in <IP_ADDRESS>


Update TRANSLATING.md

Add Portuguese TL - Omar Costa Hamido
Changes

Implementation details

How to read this PR

Screenshots

@veenaiyuri  Please review this - add Omar to the Portuguese TL. Many thanks!

@0sophy1 just to confirm but is @omarcostahamido finally added?

@0sophy1 just to confirm but is @omarcostahamido finally added?

yes!


Change license to Apache-2.0

As this becomes more serious and stable now, I'd like to change the license of this project from PHP-3.01 to Apache-2.0.
The PHP license was only used because it was the default license for the skeleton extension, but I feel more comfortable with Apache-2.0.
As this concerns all contributors, I need your opinion on that, @ThaDafinser. If you're OK with the change, I'll create a PR for it.
The plan would be to have the license changed before the 0.6.0 release, which would be the first beta release now that everything is stable enough for serious testing.

I personally like more the MIT, because it's easy and let you do what you want, but Apache is also fine :+1:
If you want a good overview:
http://choosealicense.com/licenses/

MIT it is then. Have used it too and Apache-2.0 doesn't offer any advantages here. I'll create a PR.


update cylc version

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

No dependency changes needed:
> git diff 8.3.1 8.3.2 setup.cfg


Add a ConnectionListener

Given that we have happy eyeballs, and are considering features like client side load balancing, having visibility into connections seems warranted.
Also specifically for Android, dealing with different networks makes this important.

I think it’s possible 'cause we already plumbed through the Socket so we could close it without holding a lock.


UButton with :to is not rendered as  anymore.

Environment
Nuxt project info:                                                                                16.27.02

Operating System: Windows_NT
Node Version:     v18.18.0
Nuxt Version:     3.10.1
CLI Version:      3.10.0
Nitro Version:    2.8.1
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      -
Runtime Modules:  -
Build Modules:    -

Version
v2.13.0
Reproduction
Create a button like this:
<UButton :to="/home" />
It should output a link with type="button" but the type attribute is missing altogether from the outcome.
Description
Between 2.11 and 2.13 the type was added as a prop in Link.vue. This made it disappear from $attrs and thus is not bound anymore.
Is this intentional? The type attribute in a tag is actually the mime type of the linked document (see: https://www.w3schools.com/tags/att_a_type.asp). So, is using type="button" against the html spec?
If the type="button" is wanted back I have a fix already brewing...
Additional context
No response
Logs
No response

It was intentional: https://github.com/nuxt/ui/commit/b0df86437902696b594e5e7042601506a8bf4436. A <a> tag does not accept button as type.

Ah, should've blamed properly, first, sorry.
What is the preferred way to spot a button link? I have css that targets links that are not buttons.


Add ability to set multiple users as admins

I host an instance of justlog with a friend. We would both like to use justlog's commands and change channels on the go, so is it okay to turn config.admin into an Array of strings as config.admins intead?

Yea totally. I'll look at it on the weekend