[$500] mWeb-Conversation-User A in offline typing message, User B is shown "user A is typing"

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to https://staging.new.expensify.com/
As user A, tap profile- Preferences
Toggle on forced offline
Open 1:1 with user B
In other device, as user B, open 1:1 with user A
As user A, in offline type messages to user B and note user B conversation page

Expected Result:
User A in offline typing message, User B must not be shown "user A is typing" in conversation page.
Actual Result:
User A in offline typing message, User B is shown "user A is typing" in conversation page.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.73-0
Reproducible in staging?: Y
Reproducible in production?: No "Force offline" mode
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/a7906296-4aec-4b7e-92d8-10e81afce772
https://github.com/Expensify/App/assets/115492554/2140e236-919b-4574-8b37-9289bdc47122
https://github.com/Expensify/App/assets/115492554/60c3525e-8e82-43b5-8ca2-28fd36060d4f
Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation: @
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01650cee09674fc251
Upwork Job ID:<PHONE_NUMBER>379205632
Last Price Increase: 2023-09-27

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Proposal
Please re-state the problem that we are trying to solve in this issue.
The user is typing event is sent from a user client even if the client has force offline mode enabled.
What is the root cause of that problem?
Pusher sends events even if force offline mode is enabled.
What changes do you think we should make in order to solve the problem?
Modify the Pusher sendEvent method to perform an early return if shouldForceOffline is true.
function sendEvent(channelName, eventName, payload) {
    // Check to see if we are subscribed to this channel before sending the event. Sending client events over channels
    // we are not subscribed too will throw errors and cause reconnection attempts. Subscriptions are not instant and
    // can happen later than we expect.
    if (!isSubscribed(channelName)) {
        return;
    }

    if (shouldForceOffline) {
        Log.info('[Pusher] Ignoring a send event because shouldForceOffline = true');
        return;
    }

   // ... rest of the method
}

What alternative solutions did you explore? (Optional)
None.

I don't think this is an hourly, since I believe this will only ever happen on staging (I THINK we always hide the TestToolMenu in production...I could be wrong). I don't think this was caused by the recent deploy.  I think this has been happening ever since we introduced the Force Offline mode. @izarutskaya is this something that you just came across, or is this test something that happens at every deploy?
@neil-marcellini @roryabraham it looks like you are the two fellas who have the most background in the Force Offline mode. Care to weigh in here?

Correct, I agree this is not a deploy blocker, also I think @neil-marcellini knows about this problem from before, I believe I remember some slack thread about this specifically.

No, we do not  this test at every deploy. This was discovered during another test. Thank you

^ setting as external

Proposal
Please re-state the problem that we are trying to solve in this issue.
Conversation-User A in offline typing message, User B is shown "user A is typing".
What is the root cause of that problem?
When "User A" types a message, there is no code that checks either he had activated the Force Offline. After Force Offline activation, when "User A" types message, then on each character typing, an event "debouncedBroadcastUserIsTyping" triggers. After this event triggering, the "USER B" sees that "USER A" is typing.
What changes do you think we should make in order to solve the problem?
You just need to prevent the call of "debouncedBroadcastUserIsTyping", when he set Force Offline.
Just add the below code in ComposerWithSuggestions.js file.
Please see the attachments below, for knowing where to add the below code in ComposerWithSuggestions.js file.
let isForcedOffline = false;

Onyx.connect({
    key: ONYXKEYS.NETWORK,
    callback: (val) => {
        isForcedOffline = val && val.isOffline;
    },
});

On ComposerWithSuggestions.js#216, put the below code
if (newComment && !isForcedOffline) {
   debouncedBroadcastUserIsTyping(reportID);
}

Video Recording
https://drive.google.com/file/d/1G6wSTFZfK1qvSyK2CcB4L4DEIZ_e6WWK/view?usp=drivesdk

I'm happy to take this one over if that's ok with you @joelbettner.

I'm inclined towards @akinwale's proposal (solution 1), because forced offline is just a simulated feature in our development/staging environment. Its logic should stay closer to the lower level network side, and not be mixed into our business components. : )
🎀 👀 🎀 C+ reviewed

I agree. When I implemented this originally I didn't think about sending data with Pusher, since we hardly ever do that. I'm glad we're cleaning this up.

@ntdiary My PR is ready for review. Thanks.

@akinwale @ntdiary bump on BZ check list ^^

@akinwale @ntdiary bump on BZ check list ^^
Also can you both apply to the job please? https://www.upwork.com/jobs/~01650cee09674fc251

Applied. Thanks!
I believe it's the C+ that's supposed to complete the BZ check list. Weird that my name is in there. 😅

Payment summary:
Reporter: N/A
Contributor: @akinwale - $750 (paid via upwork)
Contributor +: @ntdiary - $750 (paid via upwork)

Sent you both an offer!

Sent you both an offer!

Accepted. Thanks!


Feat/posting time control

Should test is timestamp is valid
Also function for parsing timestamp to array using standart: y, m, d, h, i, s

the question is whether to use this format of date, or always turn the date to int a work with the int...

the question is whether to use this format of date, or always turn the date to int a work with the int...

the question is whether to use this format of date, or always turn the date to int a work with the int...

I need to test it. Body data are always stringified, but when body is parsed, number stirng are overtyped.

the question is whether to use this format of date, or always turn the date to int a work with the int...

I need to test it. Body data are always stringified, but when body is parsed, number stirng are overtyped.


test_array::test_broadcast_first isn't working

Describe the Bug
This wasn't being noticed prior to #309 which fixed the name of the test so it will be run.   Mismatch is between arg 0 with shape (5, 6, 4) and arg 1 with shape (6, 5).

To Reproduce
import glass
...

Expected Behaviour
No response
Actual Behaviour
No response
Version In Use
2024.2.dev47+g2611eeb.d20240918
Additional Context
- Python version:
- Operating system:

#312 😬

Closing as duplicate


Where is the Navbar code that you copied?

would be helpful to see the url;
it's not in the video description

Navbar Code


Revert "Upgrade DUB dependencies"

Reverts dlang-bots/dlang-bot#137
The logs don't look good:

As this was the only change in the last days, let's better revert this for now

dmd-nightly is still broken -> merging directly.


The new designer breaks with the error "The renderComponentIntoRoot component encountered an error while loading" when adding "Complete the message (In App)"

Describe the Bug with repro steps
In the logic app designer, tried to add "Complete the message (In App)" action in a switch case, then the UI breaks with error "The renderComponentIntoRoot component encountered an error while loading"
What type of Logic App Is this happening in?
Standard (Portal)
Are you using Preview Designer or GA Designer
Generally Available
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
No response
Screenshots or Videos

Browser
Edge, Chrome
Additional context
No response
AB#24293438

Will be fixed in next release


Bump version (v1.8.4-rc.1); Bump hammerhead (v16.2.3)

Purpose
Describe the problem you want to address or the feature you want to implement.
Approach
Describe how your changes address the issue or implement the desired functionality in as much detail as possible.
References
Provide a link to the existing issue(s), if any.
Pre-Merge TODO

[ ] Write tests for your proposed changes
[ ] Make sure that existing tests do not fail

@testcafe-build-bot retest


Add files via upload

It looks like your submission may have had a date issue. I believe the file references 4-14 rather than 4-13.
If you could fix the dates and resubmit, we would be very grateful. I’m going to close your PR for now.
Please let me know if you have any questions!
Thank you,
Alex


Question

How do I remove a package from chocolatey without uninstalling it.
For example, I am using the standard dropbox, I want to remove it but not uninstall it from chocolatey, and then change it to the beta.
Thanks

Hello @zero77 - I'm don't quite get what you're trying to achieve.. can you eplain in more detail?
additionaly - for such questions please use our gitter chatroom https://gitter.im/chocolatey/choco  - you'll get responses much quicker there!
I'm closing this issue for now, if you're still looking for help, please visit the gitter channel - there'll most likely be folks around 24/7 :-)


Attempt to push a NuGet package failed

I added my API key to the nugetPush closure, but the attempt fails. I half expected it to fail because of wrong credentials or something, but I'm not sure what to make of cs not found in parsed projects. cs is the name of the directory where I have the project checked out.
...
  Extracting parser to /Users/ndw/Projects/xmlresolver/cs/build/tmp/dotnet
Reflections took 1 ms to scan 1 urls, producing 9 keys and 9 values
Starting process 'command '/usr/local/share/dotnet/dotnet''. Working directory: /Users/ndw/Projects/xmlresolver/cs/build/tmp/dotnet Command: /usr/local/share/dotnet/dotnet run -f net5.0 -- /Users/ndw/Projects/xmlresolver/cs/XmlResolver/XmlResolver.sln {'Configuration':'Release','Version':'0.0.1','PackageVersion':'0.0.1'}
Successfully started process 'command '/usr/local/share/dotnet/dotnet''
Complete parsing project

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'cs'.
> Could not create task ':dotnetNugetPush'.
   > Could not create task of type 'DotnetNugetPushTask'.
      > cs not found in parsed projects

Clues once again most humbly solicited.

the plugin currently only support pushing one package per project
and by default it tries to get the main project from the gradle project name
to override you can put
dotnet {
    projectName = 'XmlResolver'
}

Ah. Okay. So I'm going to have to have two projects anyway, one for the data and one for the code. Not unreasonable since they might version independently. With projectName specified, I get:
> Task :dotnetNugetPush FAILED
Caching disabled for task ':dotnetNugetPush' because:
  Build cache is disabled
Task ':dotnetNugetPush' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Starting process 'command '/usr/local/share/dotnet/dotnet''. Working directory: /Users/ndw/Projects/xmlresolver/cs Command: /usr/local/share/dotnet/dotnet nuget push /Users/ndw/Projects/xmlresolver/cs/XmlResolver/XmlResolver/bin/Release/XmlResolver.0.0.1.nupkg --api-key MYAPIKEY
Successfully started process 'command '/usr/local/share/dotnet/dotnet''
error: Source parameter was not specified.

Not sure if that's a bug or user error.

you need to specify source to tell where to push (see README)
for what to set in source you might refer to https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-push

Thank you again.


[Feature] Kafka Synchronizing Table Support Debezium, Maxwell, OGG Format

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
Kafka Synchronizing Table Support Debezium, Maxwell, OGG Format
Solution
No response
Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

hi,i am willing to implements maxwell format because my company use maxwell as the base cdc ingestor。 so what can i do next before write and contribute code (i am a newcomer in open source projects)

Already supported.
see https://paimon.apache.org/docs/master/cdc-ingestion/kafka-cdc/#supported-formats


Air Quality showing "Unknown"

Right now, Air quality is showing "Unknown" in homekit. After an initial look, Winix is sending back different values for the air quality attribute S07.
Current understanding:
export enum AirQuality {
  Good = '01',
  Fair = '02',
  Poor = '03'
}

Now the raw response for the attribute is:
{ "S07": "1.0" }

Will do some testing to figure out the new air quality values and update the mappings

Mine showed "unknown" last evening but shows as "good" this morning after restarting the plug-in.

Hey, thanks for the input @DMBlakeley.
I did some further testing yesterday and it turns out Winix sometimes returns 1.0 instead of 01 for “Good” air quality. Restarting your plugin likely forced a fresh check with the Winix API, which then returned 01 correctly. I was able to force this switch from 1.0 -> 01 by power cycling the purifier or changing its air quality with compressed air—both individually reset the reading to 01. I’ll add 1.0 as a valid “Good” value so it doesn’t show up as “unknown” if Winix sends that again.

Great... right as I release and close this, I see 1.1 in the Winix api response when the air quality is still "Good". Something else is going on here.
I think they may be changing up their api values for the air quality - switching from static Good (01), Fair (02), Poor (03), to a range from 1.0 -> 3.0

I'll have to do more testing, since this looks like its rolling out to the devices slowly. Two of my devices are legacy 01 and 02. This one is now 1.1


Add reservation/refreservation in addional to quota support in ZFS driver

It would be great to add support of setting reservation and refreservation because now, as I can see, it's possible only to set a limit for container/volume size. Still, it's not possible to guaranty that space would be available in the pool.

Yeah, that should be fine. I don't think we'd let you set it to a different value, that'd get a bit complicated with migrations and whatnot, but we can put a config option so you can opt a pool or potentially single volume into using those instead of regular quotas, similar to how we have a flag to use refquota already.

To clarify, I believe it should work together with quotas, but not instead. If we set some limit for storage, we should guarantee that this amount of space is available. If I'm acting from an inside container, for instance, running the df command, I expect that I'm free to use all I see there.

Right, in this case both should be set together.

If you don't mind, I will work on that.

Certainly, assigned it to you!


ur mom

Overview

Notes

Acceptance Criteria

Resources

As always, feel free to pm  or  on Slack for support

lgtm


Any way to do outer joins (left outer or right outer or full outer)

Hi,
I read on the limitations of outer join... is there a workaround?
Thanks!
Juan

Can you be more specific? What do you want to do?

How about being able to execute any kind of outer join even though it's not yet part of the framework?
Since l am beginning to play with sqlpp11 I don't have any more specific question
Just a practical one: can you someone get away with outer (left, right, full)?
Thanks
Sent from my iPhone

On Feb 7, 2016, at 11:40 PM, Roland Bock<EMAIL_ADDRESS>wrote:
Can you be more specific? What do you want to do?
—
Reply to this email directly or view it on GitHub.

For example, you can do: tabA.left_outer_join(tabB).on(someCondition)

Same with right_outer_join and outer_join

Hi Roland,
Ok, my understanding then... I understood from the wiki that there was yet no support for outer_joins but now I see that there actually VERY MUCH is!
That's such a good news. This library you created is awesome. Are there any important aspects of SQL databases (say standard SQL) that are yet to be incorporated into sqlpp11? If so, are there workarounds for now?
May  I say that I have been coming back to C++ development just recently and that your library is something I dreamt would exist? What do you use for GUI development? Perhaps QT? What OS do you use for development?
Best regards!!
Juan

Hi Juan,
Regarding joins: Well, the final support depends on whether or not the database actually supports a feature. For example, SQLite3 does not support outer join.
As for other features: The library certainly does not cover everything you can do in SQL. You can add new clauses quite simply though (if you are into TMP a bit). Just look at existing clauses. Also, in the postgres connector has some development for specific clauses...
I am happy to read that you enjoy the library :-)
My development environment is vim on Linux, switching between several versions of clang and gcc.
Best,
Roland

Ok, I understand ... From your presentation I seem to remember that you had not included support for stored procedures. Is this still the case? If it is, are there work arounds?
Best regards!!
Juan

Yes, that is still the case. There is always the execute function to execute just a string. There is also the verbatim function to inject some otherwise unsupported stuff into your sql statement.

Do you have any plans or timeline estimate for adding this support?

There are no concrete plans (and therefore no estimates yet). You are welcome to try and come up with an extension for the library, of course :-)

ok, depending on the result of some potentially coming work and my available time, I may try this :-) Will need to start a project where using sqlpp11 enough so that i get to understand its structure and general approach for "uniting" C++ and SQL. Sounds fascinating but will depend on available time... :-)

Ok, looking forward to it. Let me know if you need help with it...
Closing this for now


Debugging Rust tests breaks in wrong thread

Which OS: Linux (Arch)
Which VSCode version:  1.30.2
Which extension version: 1.2.0
Which adapter type: classic
Which LLDB version: 7.0.1
What is the problem and how did you get there:
When setting a breakpoint in Rust tests and then starting the debugger, I'm dropped into assembly for what I believe is the "test runner" thread rather than the actual test code. It claims that the thread I want is still "running," but I'm not sure that it actually is. "Step over" causes the "real" thread to get paused at my breakpoint, and then I can inspect its callstack, variables, etc., but all in all, it's a bit weird since all stepping operations try to operate on the wrong thread.
Repository: https://github.com/jrobsonchase/vscode-debug-tests
launch.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug unit tests in library 'vscode-debug-tests'",
            "cargo": {
                "args": [
                    "test",
                    "--no-run",
                    "--lib",
                    "--package=vscode-debug-tests"
                ],
                "filter": {
                    "kind": "lib"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}

Initial breakpoint setup:

Breakpoint hit (have to collapse the "test runner" stack to see the "real" thread):

After step over (have to manually go into the "real" thread's stack):

Trying to step again:

I'm seeing similar behavior when running unit tests. I can debug just fine in a regular executable, but unit tests aren't working (no breakpoints, assembly on panic).

Having the same results. Is there a way to filter the thread in LLDB? The output shows the threads listed. I've tried manually switching the thread in the debug repl to no avail.
{"type":"response","request_seq":11,"success":true,"command":"threads","body":{"threads":[{"id":18741,"name":"1: tid=18741 \"mazes\""},{"id":18754,"name":"2: tid=18754 \"tests::it_works\""}]}}
{"type":"event","seq":0,"event":"thread","body":{"reason":"started","threadId":18741}} DEBUG 2019-02-11T04:17:13Z: codelldb::wire_protocol: <-- {"type":"event","seq":0,"event":"thread","body":{"reason":"started","threadId":18754}} DEBUG 2019-02-11T04:17:13Z: codelldb::wire_protocol: <-- {"type":"event","seq":0,"event":"output","body":{"category":"stderr","output":"Stop reason: signal SIGSTOP\n"}} DEBUG 2019-02-11T04:17:13Z: codelldb::wire_protocol: <-- {"type":"event","seq":0,"event":"stopped","body":{"allThreadsStopped":true,"reason":"signal","text":"signal SIGSTOP","threadId":18741}}
I've tried overriding this in the repl, but it doesn't seem to work:
{"command":"evaluate","arguments":{"expression":"thread select 2","frameId":1173,"context":"repl"},"type":"request","seq":127}
This seems to have just been working. I've tried rolling back to a "known good" rust nightly, but haven't been able to work around it.

Can you please retest on latest release?


Queenbee Refactor

Overview
This PR contains the changes made during April/May 2020 to refactor Queenbee. The following major changes were made:
Warning
I think it's best we do not mark this PR as Breaking Change. I know it does introduce breaking changes, however we are already at v1.0.0. I would rather say that the 1.0 version is unstable and prone to change until we deem is ready instead of regularly bumping major versions while we get Queenbee up and going in earnest.
Details
Separate Workflow into Operators, Recipes and Workflows
Two main issues led us to split the old Workflow object into three separate objects:

Confusion between Workflow template and Workflow object executed by Argo or Luigi #39
Re-usability of Workflows

For this reason we introduce the three following Queenbee Objects:

Operator: A list of functions (templated commands) for 1 cli tool (eg: radiance-operator would template command for radiance)
Recipe: A reusable DAG definition of Operator Functions or other Recipes (#42) (ie: a recipe can use another recipe inside of itself)
Workflow: A Recipe + Input Arguments run by an executor (ie: luigi or argo). The schema will not be used by Queenbee explicitely but serves as a common definitions or interface for the different execution engines to report progress of an executed Recipe.

Introduce Dependency Management
Despite all warnings we went ahead and built a package manager... This was a requirement for Recipes to be shareable and modular (ie: a recipe could refer to a certain operator without having to copy all the operator data).
To do so we drew heavy inspiration from the Helm project (#47 ). This means that Queenbee packaging and sharing remains open sourced and freely available for those who wish to create their own registries of Recipes and Operators.
Artifact Path Context (remove artifact_location)
Artifact Locations have been removed to make recipes more reusable. Hard coding the location to persist a file inside a DAG lead to re-usability issues when nesting Recipes inside each other. It was therefore preferable to establish the concept of artifact path context:

Function Path Context
When an artifact path is declared within an Operator Function, this path is only relevant or valid in the context of this function. In practice this means that a Function doesn't care where an artifact is persisted when it is executed because it knows that the executor (argo or luigi) will move copy the artifact to the path it expects it to be in the command.
name: ray-tracing
description: Run ray tracing using some input data!
inputs:
  parameters:
  - name: radiance-parameters
    description: a string of radiance parameters
    default: -b 5
  artifacts:
  - name: grid
    path: grid.pts
  - name: scene-file
    path: scene.oct
command: rtrace -I -h {{inputs.parameters.radiance-parameters}} scene.oct < grid.pts > grid.res
outputs:
  artifacts:
  - name: result-file
    path: grid.res

Recipe Path Context
When an artifact path is declared in a Recipe DAG it points to a folder or S3 bucket location where it expects the artifact to be pulled from (input) or pushed to (output). This path does not overwrite the one in the Operator Function context. Instead the executor (argo or luigi) will copy the artifact from the Recipe Context to the Function Context for inputs and vice versa for outputs
name: main
inputs:
  parameters:
  - name: sensor-grid-count
    description: The maximum number of grid points per parallel execution
    default: 100
  - name: radiance-parameters
    description: The radiance parameters for ray tracing
    default: -I -ab 2 -h

  artifacts:
  - name: model
    description: A Honeybee model with radiance properties
    required: true
  - name: input-grid
    description: A grid file
    required: true

tasks:
   ...

- name: daylight-factor-simulation
  template: honeybee-radiance/ray-tracing
  dependencies:
  - split-grid
  - create-octree
  loop:
    from:
      type: tasks
      name: split-grid
      variable: grid-list
    sub_folder:
    - item.name
  arguments:
    parameters:
    - name: radiance-parameters
      from:
        type: inputs
        variable: radiance-parameters
    artifacts:
    - name: grid
      from:
        type: tasks
        name: split-grid
        variable: output-grids-folder
      subpath: '{{item.name}}'
    - name: scene-file
      from:
        type: tasks
        name: create-octree
        variable: scene-file
  outputs:
    artifacts:
    # This file is persisted in a loop sub-folder so the name won't clash
    - name: result-file
      path: grid.res
 ...
outputs:
  artifacts:
  - name: data
    from:
      type: tasks
      name: post-process
      variable: post-process-folder
  parameters:
  - name: average
    from:
      type: tasks
      name: post-process
      variable: daylight-factor-average

Overhaul Documentation
The previous documentation page consisted of a Redoc template pointing to the old Workflow schema. As we have introduced new separate schemas as well as development practices for Operator and Recipe creation/management we needed to introduce some written tutorials and more in depth exploration pages for each schema. We therefore overhauled the Redoc page and went for a full Sphinx page that matches styling from other ladybug tools packages.

We have lift off!


Apply GitHub release link for Sitecore Codeless Schema Extensions Module 1.0

Description / Motivation

Update container deployment package artifact to refer release in container-deployment instead.
Previously it was used as fallback due to uncertainty of merging timeline. (reference)

How Has This Been Tested?

✔ Verified URL
Types of changes

[ ] 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 change)
[X] Documentation update (non-breaking change; modified files are limited to the /data directory or other markdown files)

Checklist:

[X] I have read the Contributing guide.
[X] My code/comments/docs fully adhere to the Code of Conduct.
[ ] My change is a code change.
[X] My change is a documentation change and there are NO other updates required.
[ ] My change has new or updated images which are stored in the /public/images folder that need to be migrated to Sitecore DAM

Tested - all good.
@DevRel team please publish to Main.


protobuf dependency not installed on Ubuntu 20.04 when using apt repo

Whats the issue
Nothing serious but it would be of course nice to have all dependencies installed to build software requiring ecal. When installing ecal following the doc from here https://continental.github.io/ecal/getting_started/setup.html it says for 5.8
sudo add-apt-repository ppa:ecal/ecal-5.8
sudo apt-get update
sudo apt-get install ecal

protobuf dependencies are not installed at least when using Ubuntu 20.04.
To Reproduce
$ docker run -it --net=host ros:foxy
# cat /etc/issue
Ubuntu 20.04.2 LTS \n \l

# apt update && apt install -y software-properties-common
# add-apt-repository ppa:ecal/ecal-5.8 && apt install -y ecal
# cd /tmp && git clone https://github.com/continental/ecal
# cd /tmp/ecal/samples/cpp/pingpong/ping
# mkdir build && cd build
# cmake ..
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:624 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  /usr/lib/x86_64-linux-gnu/cmake/eCAL/eCALConfig.cmake:67 (find_package)
  CMakeLists.txt:25 (find_package)

Expected behavior
...
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.6.1")
...
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/ecal/samples/cpp/pingpong/ping/build

Desktop

OS: Ubuntu
Version Ubuntu 20.04.2 LTS

Further context
Simple fix is of course apt install libprotobuf-dev.
If the ecal package should just be the library and no dev-stuff I would suggest to have a ecal-dev package which can be installed and then has the proper dependencies.
Best,
Antonio

Thanks, I will keep that in mind for the future.
At the moment, we only ship that "fat debian installer" through the PPA, which includes the runtime, all apps, samples and all dev files. The dependencies however are runtime dependencies only, as you may not alway want to install dev packages to run your eCAL based software.
In the future (maybe for 5.9) we want to improve the installer and split up the ecal package into proper smaller packages. Then we will also have an libecal-dev package that can depend on libprotobuf-dev.
Regards
Florian

Ah perfect, that sounds good!


IG Checklist Fixes + Extra Resource Support

This PR adds two main features:

Better support for the new requirements asked of HL7 IGs (see checklist image below)
Better support for including SearchParameter, OperationDefinition, CapabilityStatement, and Conformance resources in the exported IG (even though CIMPL can't produce them itself).

To test this, switch all branches to 5.x, and then to ig-checklist-fixes.  When done, your branches should look something like this:
shr-adl-bmm-export       [master]
shr-cli                  [ig-checklist-fixes]
shr-data-dict-export     [5.x]
shr-es6-export           [5.x]
shr-expand               [5.x]
shr-fhir-export          [ig-checklist-fixes]
shr-grammar              [5.x]
shr-json-export          [master]
shr-json-javadoc         [5.x]
shr-json-schema-export   [5.x]
shr-models               [5.x]
shr-test-helpers         [5.x]
shr-text-import          [5.x]

Then clone my us-drug-formularies fork and switch to ig-checklist-fixes branch.  Now run the CLI against it and then run it through the publisher (NOTE: This requires you to be on a network without a proxy):
$ node . -c ig-usdrugformulary-config.json /path/to/us-drug-formularies/

$ yarn ig:publish

Now open the IG (yarn ig:open) and validate that it passes the following checklist:

(Note, it is ok that the yellow box contains placeholder text).
Also check that the menu has an option for Search Parameters and the corresponding page links to two search parameters.
If you want to test the other resource types, you can download some from US Core R4 and put them in the us-drug-formularies searchParameters_usdrugformulary folder (don't worry about the misleading name):

OperationDefinition-docref.json
CapabilityStatement-us-core-server.json
CapabilityStatement-us-core-client.json

Then run the CLI and IG Publisher again.  The menu should have items for the new resources.

Please review only (do not merge) -- I forgot to mark it as DRAFT.  Companion PR at: https://github.com/standardhealth/shr-cli/pull/215

The code of this and the associated PR looks good! I do have a few questions though. Pictures of what I see attached.

I believe I can tick all the check boxes, but am unsure about a couple in the footer. Notably, 'Propose Changes', 'History Link', and 'Copyright Year' seem to be missing. That is, of course, unless I'm missing something.
I believe I followed the instructions you provided correctly. Anything I could be missing?

@kjmahalingam -- Thank you.  Are you sure you were running against my ig-checklist-fixes branch of the us-drug-formularies CIMPL project?  That's the only reason I can think those wouldn't show up.

Ah, you know what, @cmoesel , that might be the issue. I'm not sure I did that part. Let me try again.

This fixed a few issues but I still see some. Image of footer attached.

The 'Propose Changes' link works and the history link exists. However, when I click the history link, it gives a 404 at this site: http://hl7.org/fhir/us/Davinci-drug-formulary/history.html. Additionally, I still don't see a copyright year. Any thoughts?

I should have mentioned: we expect the history link to 404.  HL7 hasn't published the history page yet.
As for copyright year, I'll look into that.  Maybe I messed something up.

OK.  Found the issue w/ copyright year and pushed up a fix.

FYI - to support easier cherry-picking to 6.x, I've rebased the commits into two commits: a commit w/ all code changes, and a separate commit w/ version update.


bug in implementation

I believe this implementation is broken if you enter/aenter the class twice before aexit'ing (share instance with multiple classes).  The lock should be from enter/aenter through exit/aexit.  This would also mean that you can't use the sync lock in exit with aexit

If the lock was held from __enter__ through to __exit__, then the task being rate limited would have to execute sequentially, which is not the goal.
The rate limited task should be able to execute up to max_calls within period, but any more than that will block (while holding the lock). Once the lock is released, the other simultaneous tasks can attempt to enter until it blocks again.
Do you have an example that doesn't do what you expected?

think of this scenario:
from ratelimiter import RateLimiter
import asyncio

async def worker(limiter):
    async with limiter:
        print("Done")
        await asyncio.sleep(1000)

async def main():
    limiter = RateLimiter(1, 100)

    await asyncio.gather(*[worker(limiter) for i in range(100)])

if __name__ == '__main__':
    _loop = asyncio.get_event_loop()
    _loop.run_until_complete(main())

they all run immediately.

this is actually an interesting problem to solve efficiently and correctly.  I think you'll need a semaphore.

here's what I've come up with so far:
class RateLimiter:
    def __init__(self, max_rate: int, period_s: float or int):
        """
        Allows `max_rate` per `period_s`.  Note this implementation doesn't groom the queue (yet)
        so its memory usage will not decrease significantly

        :param max_rate: number of hits allowed per `period_s`
        :param period_s: period in seconds
        """

        assert isinstance(max_rate, int) and max_rate > 0
        assert period_s > 0

        self._max_rate = max_rate
        self._period_s = period_s
        self._lock = asyncio.Lock()

        # We'll initially allow `max_rate` to happen in parallel, and then release
        # the semaphores as new tasks can be started
        self._sema = asyncio.Semaphore(max_rate)

        # we'll push the task end-time to this queue during `__aexit__`
        self._pri_q = asyncio.PriorityQueue(max_rate)

    async def __aenter__(self):
        await self._sema.acquire()
        # by this point we can only have up to `max_rate` in parallel

    async def __aexit__(self, exc_type, exc_val, exc_tb):
        # register finish time before we lock
        now = time.time()

        # Lock so only one task can play with the q at a time, realisitically this will
        # only lock for a significant amount of time when the queue is full, at which point
        # we can only process one task at a time anyways
        async with self._lock:
            try:
                # Start by pushing the time this task finished to the queue
                await self._pri_q.put(now)

                if not self._pri_q.full():
                    # If it's not full, we can immediately return and allow another task to start
                    return

                # Otherwise it's full so we need to wait until we can expire a q item
                # so we get the lowest priority item (oldest entry) and wait until it's
                # expired from the current window
                window_s = now - self._pri_q.get_nowait()  # nowait since we know we have an item and are locked
                sleep_s = max(0, self._period_s - window_s)  # min clipped to zero

                await asyncio.sleep(sleep_s)

                # we can now allow a request to take its place
            finally:
                self._sema.release()

I haven't tested it yet so it may be totally wrong :) let me know what you think.

Thanks for the example and now an attempt to fix it. I'll have more time to look at it in July. I had a first attempt at fixing it using a semaphore. I also want to write tests to really nail down the expected behaviour, since they are lacking just now.

actually last version had a crucial bug, after a code review I updated it to the current impl on gist which is actually faster.

Can confirm this. Calling an API that accsept 100 calls per second. set ratelimit to 50.
import aiohttp
import asyncio
from ratelimiter import RateLimiter

class callUrls:

    async_loop = asyncio.get_event_loop()
    client = aiohttp.ClientSession(loop=async_loop)
    rate = RateLimiter(max_calls=50)

    @classmethod
    async def getJSON(cls, url):
        async with cls.rate:
            async with cls.client.get(url) as response:
                info = await response.json()
                try:
                    assert response.status == 200
                except AssertionError:
                    raise AssertionError(info)
                return info

    def open_client(cls):
        cls.client = aiohttp.ClientSession(loop=cls.async_loop)

getting Error:
    line 20:      raise AssertionError(info)
AssertionError: {'code': 403, 'type': 'Forbidden', 'detail': 'Account Over Queries Per Second Limit'}

I have a proof-of-concept of a ratelimiter v2 that fixes these problems, with pluggable rate limiting algorithms (e.g. leaky bucket).
It'll be a v2 because the API has breaking changes. Also, it'll optionally allow limiting concurrent calls. Sometimes we only care that __enter__ is rate limited, but sometimes we want to wait until __exit__ until the next concurrent call can start.
I'll try push this to a v2 branch soon.

Hi, I assume this is abandoned? Cheers


Moar information on unexpected response code of: 500

Moar information should be given instead of the cryptic message.

The workers had run out of disk real estate.

Not a whole lot we can do about these messages ourselves; we're just bubbling up error messages. This kind of issue isn't very actionable without logs and such tracing to the component that it ultimately came from (perhaps Garden in this case).
Regardless, things have changed quite a bit since this was opened (we use an entirely different Garden backend), so I doubt there's much change we can do.


Add initial code

This looks great to me.
It's been hard to find a good intersection between different APMs. resource: is one area where I had some concerns. Without it, Datadog APM is substantially less good.
Did you have any feelings about the data model or the way it's exposed?
Ideally, we can find a nice consensus that allows every APM to expose a reasonable amount of information in a consistent way, such that software that uses traces doesn't need to adapt for specific APM backends.
It's a great opportunity now to receive that feedback so we can adapt the interface if there were any New Relic specific details that don't fit quite right with the existing interface, or areas you felt could be better modelled according to your own internal APM design.

@ioquatix Thanks for taking a look! I really appreciate it.

This looks great to me.
It's been hard to find a good intersection between different APMs. resource: is one area where I had some concerns. Without it, Datadog APM is substantially less good.
Did you have any feelings about the data model or the way it's exposed?

I primarily tested with async http, and I found that I had access to all the information I expected to create spans with the same info the agent currently does. It's been a few weeks since I was really working on it due to the holidays (and then having to wait for a new repository to be made for me by new relic) so its not super fresh, but I can't think of anything that stood out as concerning re: the information that was available.  I found that I didn't end up using resource, since everything we expected to use was either the name or available in attributes/the yielded attributes.

Ideally, we can find a nice consensus that allows every APM to expose a reasonable amount of information in a consistent way, such that software that uses traces doesn't need to adapt for specific APM backends.
It's a great opportunity now to receive that feedback so we can adapt the interface if there were any New Relic specific details that don't fit quite right with the existing interface, or areas you felt could be better modelled according to your own internal APM design.
In this regard, I think we have some room to evolve the design during the 0.x phase of traces/metrics gems. Once we nail it (and I've tried to keep the scope as simple as possible), we can release a 1.x across the gems.
One area which I'm aware of is header injection, or custom metadata.

At this time, I think that the header injection part is the only thing that new relic is really that different about as far as I can tell. For the most part, the otel implementation is fairly similar to what I've done for new relic. Just had to do some adjustments to account for some different ways our some of our objects/attributes work (like adding the attributes to spans using a hash instead of directly).

Would it be strange to inject this into the trace context header and extract it at the remote end? IIUC, that's one of the purpose of that header.

In theory that makes sense and I can totally see why you've suggested it, but unfortunately that wouldn't work for our situation.
Since these are headers we insert into external calls, changing the way it works would cause a lot of issues with backwards compatibility with the external service since they could be running older ruby agent versions, or using a different language agent. Since all the other new relic language agents need to be able to parse the header info, getting it updating across all languages and changing the agent specs that all new relic agents have to comply with would be pretty involved and even after that, there still wouldn't be compatibility with any versions of the agents that are out there already.
I totally understand not wanting to build in something to accommodate that since its a pretty specific ask, so I think a fair alternative is recommending people who expect to be using features that require those headers (the main thing being the new relic synthetics product) to use the current in agent instrumentation instead, since it can handle all of it. Not everyone uses those features, so the majority of people could just use traces. We will be adding a check in the agents instrumentation installation so that it will not be installed if this is also installed, so there won't be any conflicts there.


Opt-out for emails on PR merge

Is your feature request related to a problem? Please describe.
I am getting spammed by emails now on every merge of updated changelog PR.
This will cause an issue in our entire organization.
The need is understandable, but I feel there should be an opt-out configuration
Describe the solution you'd like
An option to disable emails from github sent from the action
Describe alternatives you've considered
I really don't like the other changelog actions... yours is concise and easy to use... others are complex and over engineered.
Essentially I am not looking for an alternative... just to help you improve this tool 🥇
Additional context

I don't think there is any option for a GitHub Action to suppress GitHub E-mail Notifications (E-mails are not sent by the Action rather sent by GitHub on state changes to the repository). You probably need to adjust the watch settings or other notification options.


WIP: Proposed improvement/alternative to jupyter-sphinx

@choldgraf @akhmerov following discussion in #42 I've created a proposal here for how I would forsee the execution working.
To recap, the Sphinx build phases and Sphinx core events can be summarised as:
1. event.config-inited(app,config)
2. event.builder-inited(app)
3. event.env-get-outdated(app, env, added, changed, removed)
4. event.env-before-read-docs(app, env, docnames)

for docname in docnames:
    5.  event.env-purge-doc(app, env, docname)
    if doc changed and not removed:
        6. source-read(app, docname, source)
        7. run parser: text -> docutils.document
        8. apply transforms (by priority): docutils.document -> docutils.document
        9. event.doctree-read(app, doctree)

10. event.env-updated(app, env)
11. event.env-check-consistency(app, env)

for docname in docnames:
    12. apply post-transforms (by priority): docutils.document -> docutils.document
    13. event.doctree-resolved(app, doctree, docname)

14. call builder

15. event.build-finished(app, exception)

jupyter_sphinx.main contains the extension setup, and utilises this approach:
In (2) Setup a JupyterDB, that is stored within the doctrees build folder. This is imported from a separate package jupyter_db whose sole purpose is to maintain a database of all the kernels code cells, and their outputs. It doesn't know anything about sphinx, hence having it as a separate package. I have written this as an SQL database (with sqlalchemy to provide an OO layer on top), since I think that's best for fast look-up and ansynchronous access. But you could essentially write this in anyway you see fit, as long as it has the same interface (i.e. class methods)
During (3) any documents (and their related cells, kernels, outputs) that have been changed/removed are removed from JupyterDB.
During (7) directives save kernels and code cells to the JupyterDB and the JupyterDB return primary keys (pk) to those elements, which are saved on the docutils elements for later lookup.
During (10) the JupyterDB is parsed to an entry-point defined function: run_execution. This function's job is to act 'in-place' on JupyterDB to populate it with outputs.
Again it doesn't know anything about sphinx, so could be external to jupyter-sphinx.
To decide which kernels need re-running, it can check which kernels / cells no longer have outputs, or could even check the outputs 'last modified time'.
During (12) The primary keys are used to access the outputs, and insert them where necessary.

FYI this is what the internal structure of the SQL database is:

This is really cool! After I understand it better, I think it would be great if this could go to jupyter-sphinx, and fix a bunch of issues there!

@chrisjsewell a few questions:

In jupyter-sphinx the notebooks themselves are used to serve to the users, isn't that a natural way to store the inputs and outputs, as opposed to a database? At which step would it negatively influence performance?
Can you explain more about the JupyterViewNode: what is its purpose?

I'll take a look at this as well, it sounds like quite an interesting proposal!
At a first glance, my main concern is with maintainability and using an SQLite database. It may be the best technical solution to this, but we should think about it balanced against the likelihood that potential maintainers will have experience with sqlite. I can get a better feel for this after looking through the implementation code. To me the question is always "will contributing this project be accessible to somebody with only volunteer time, and a PhD's worth of Python experience in a scientific field"

So if you look at JupyterDB, there is a get_notebook() method that will return an nbformat notebook.
JupyterDB is written to be ‘backend agnostic’, so you should be able to switch out the SQL backend with anything you want.
The ‘natural’ reason to use an SQL backend, is because cells and kernels (and mimebundles) utilise integer primary keys to reference them, that are unique across all documents/notebooks (which are not necessarily one and the same). At the ‘post transform’ stage you need to be able to return a cells outputs by it pk (or a synonymous name string). Using a folder of notebooks as a backend, for example, you would have to work out how to cache file reads, so you don’t have to re-read a notebook every time you want to access a cell. You would then have to keep an internal database of pk’s to cells/kernels.

To me the question is always "will contributing this project be accessible to somebody with only volunteer time, and a PhD's worth of Python experience in a scientific field"

Well I think sqlalchemy makes it relatively easy to work with sql databases, an hides a lot of the complexity. I only learnt it in January. But have a look at the code and see what you think.

Can you explain more about the JupyterViewNode: what is its purpose?

The idea of this is that there is no inherent constraint that the outputs of a code cell must have one defined visualisation. Along the lines of the classic Model-View pattern for data visualisation, ideally the data and the views would be split. Granted that for simple use cases, the user may want to reduce the syntax, and only use the single jupyter-execute directive for both. But to have greater control of the output (e.g. controlling whether to render latex as math), this is a better approach. This also opens up possibilities like having an inline role views of the output, and achieving things like #46

Thanks for the explanation. I agree that storing all outputs, and referring to them from the JupyterView node is much better than what we have jupyter-sphinx right now—at the very least to better support multiple writers.
How would the user control rendering of a single output? By including a separate .. jupyter-view?
I would like to suggest sticking to the constraint that the cell outputs only occur after the cell. This choice was a result of a lengthy discussion when we were working on jupyter-sphinx, and the main motivation was the robustness. When working on documentation, it is usually easy to keep in your memory what happens within a single kernel, and manipulate its outputs explicitly. Allowing to include outputs elsewhere may lead to subtle errors because the effects of the changes become much more nonlocal. Similarly, I propose to make the inline role also execute a small cell, rather than refer to some code. I expect that the inline executable code would mainly yield text or latex output, and would be relatively short. This approach (inline code rather than inline references) is also used by Rmd.

Also to provide more background on juptyer-sphinx design: a principle I found really useful was to critically examine the amount of configurability we allow. For example, I see that you control that whether errors are tolerated is controlled on a per-kernel basis in your implementation, whereas the jupyter-sphinx only has a global setting or a per-cell setting. This is a result of considering usage scenarios outlined in https://github.com/jupyter/jupyter-sphinx/pull/73.

Also I'd like provide more background about the jupyter-sphinx design

Thanks 👍 , I will certainly take this into consideration. Actually the only reason I added the :allow-errors option, was because I wanted to check errors were being correctly renderer in my test case:  https://github.com/ExecutableBookProject/myst_parser/blob/jupyter/tests/jupyter_sphinx/sourcedirs/basic/contents.rst

How would the user control rendering of a single output? By including a separate .. jupyter-view?

Yeh that's the idea:
.. jupyter-exec::
    :timeout: 20
    :show-code:

    print("x")
    a = 1
    a

.. jupyter-view::

Although as I mentioned before, for simple use cases this may not be ideal; to have to put a .. jupyter-view:: after every code block. So maybe there is some basic options for rendering on the jupyter-execute, but then if you want to have finer output control, you use a jupyter-view. Something to think about...

So maybe there is some basic options for rendering on the jupyter-execute, but then if you want to have finer output control, you use a jupyter-view.

jupyter-sphinx now defines some basic options like :hide-output:. Wouldn't enabling a more fine-grained control over the representation be a worthy extension of the interface once there's a specific need for it?

jupyter-sphinx now defines some basic options like :hide-output:. Wouldn't enabling a more fine-grained control over the representation be a worthy extension of the interface once there's a specific need for it?

Well you still at least need to make sure that the code/process is structured in such a way that it can be extended like this. Also, to my mind there is already some potential needs for it; adding things like captions and labels to outputs, allowing for complimentary latex/PDF output, etc...

Ah, but I have nothing against the view node or the code structure. Rather I think the view directive may be omitted at first—that faces the users and complicates the interface. Instead, I imagine the view node would be inserted during the execution.

Also: what are output captions and labels? Is that similar to latex figure captions and labels? If that's the case, wouldn't it be better specified outside of the jupyter-specific directives?

Ah, but I have nothing against the view node or the code structure. Rather I think the view directive may be omitted at first—that faces the users and complicates the interface. Instead, I imagine the view node would be inserted during the execution.

Yeh no problem, I wouldn't be completely against that lol

Also: what are output captions and labels? Is that similar to latex figure captions and labels? If that's the case, wouldn't it be better specified outside of the jupyter-specific directives?

Well it would be like the figure directive: https://github.com/docutils-mirror/docutils/blob/e88c5fb08d5cdfa8b4ac1020dd6f7177778d5990/docutils/parsers/rst/directives/images.py#L101
You mean wrapping the jupyter-execute? That would make it very difficult to achieve round-trip conversion between the text representation and the notebook.

I think a round-trip conversion would be nearly impossible to achieve regardless of that, due to the notebook format limitations. Both v2 and v2.1 component listings in https://github.com/ExecutableBookProject/meta/issues/21 don't include round-tripping. See also discussions in #27. Come to think of this, even following this PR, a text representation with more than one kernel cannot round-trip to a notebook.

Well it should be round-trippable for a basic subset of the text format. Yes you won’t be able to do a 1:1 mapping for multiple kernels, but then generally if your just using them for separate sections you can just split those sections into multiple documents (would be nice in Sphinx if multiple source documents could end up as a single HTML page).
For single kernel pages particularly, it might be nice (and facilitate this round trip) if you could specify the kernel in the front matter. In RST it would look like this:
:kernel_name: name

In myst:
—-
kernel_name: name
—-

Well it should be round-trippable for a basic subset of the text format.

Sure, but why would figure captions and labels belong to this basic subset?
My concern here is that this way a directive for code execution also takes responsibility for something unrelated to execution, which is also provided by another directive.

My concern here is that this way a directive for code execution also takes responsibility for something unrelated to execution,  which is also provided by another directive.

Well surely this was my whole point with the jupyter-view directive: at present the jupyter-execute directive is not only responsible for code execution, it also takes responsibility for the output rendering.
This is not already provided by another directive; the figure directive only works if you have an image uri, which is not the way that jupyter-execute works.

@chrisjsewell great point. Since caption itself may include arbitrary rst content, it also seems hard to implement a wrapper that would create figures.
Continuing with the usage of jupyter-view: do you envision that it'd have a reference to the jupyter-execute that generates the view? Or would it only be correct to include the view immediately after the execute?
Also: how would this interact with thebelab? Since its users aren't the code devs, they will be confused if the input code is separated in the document from the result it produces (also thebelab only inserts the output right after the input). Should the code appear in the figure body after thebelab is activated? What should happen to the original code? Same questions apply to the case when there are multiple references to the execute call, or when the execute and view are separated in the document. Currently in jupyter-sphinx the code only moves when thebelab is activated if initially if it was rendered below the output, and that's not too far.
Further questions: do we expect that the users will need to tweak the rendering of the mime bundle on a case by case basis, or would a global configuration suffice?

What's the status of this PR? Is it superseded by the existence of jupyter-cache?

What's the status of this PR? Is it superseded by the existence of jupyter-cache?

Eventually it will be, but I'll leave it open for now since it has some different/additional code than is currently in jupyter-cache, that I may need at a later stage.

Now being implemented in jupyter-cache


scroll to top when pressing next and previous buttons

Scroll the view back to top of page when pressing previous and back buttons.
Fixes #127

@Proyoyo  i made changes on only one page.I will make changes on other pages and perform a new PR.


Can't have package-lock.json and yarn.lock

Heroku logs aren't complaining, but the build is still saying it has failed, which doesn't make sense to me.  Just figured I would delete this and then, worst case, we can install whatever is in here with Yarn.  Sophie's part looks to be fine with yarn instead of npm now, so this shouldn't be problematic regardless.
Description
Please include a summary of the change and a link to 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 delete options that are not relevant.

[X] 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

How Has This Been Tested?
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
No tests, just removing the package-lock.json
Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

Make sure to do Sophie's PR about email validation first as this will crash everything if it is down before her's.

no review needed.  refactored to ensure use with yarn.


fix: update package.json with repository info and README

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Retrieve network route source and pass it through hyperstart implementation

Right now, we don't provide the src IP for a specific route for two reasons:

types.Route from cni package does not provide a Src field that we can fill with the appropriate data.
The hyperstart package does not describe a Route with a Src field, meaning that we cannot give the information to the agent right now.

@sboeuf - Hyperstart Route field containers a Src field today.  Is there still a limitation here?

This has been fixed.


Kompose up for OpenShift

kompose --provider openshift up
This has similar behavior as kompose up for k8s. It assumes that you already have .kube/config setup (you are logged using oc login).
It converts docker-compose.yaml to DeploymentConfigs, Services and ImageStreams, those objects are then deployed to OpenShift cluster.
This PR also updates bunch of vendored libs.
Mainly  OpenShift 1.4.0-alpha.0 this is required to avoid collisions between Docker version that is required by OpenShift and version that Kompose requires for bundle support.
Upgrading OpenShift forced updates for a lots of other libs. Kubernetes is now in version v1.4.0-beta.3
#40
requires #199 - merged
Issues:
Can't update vendored libs :-(
godep save ./...
godep: Package (github.com/docker/docker/pkg/term/winconsole) not found
Solved in https://github.com/skippbox/kompose/pull/200/commits/2273436ed77e55b3632d340436e7792e6485576e - upgrading OpenShift to 1.4.0-apha.0 this version is using docker version that is compatible version that we require for bundle support.
is still not working (fails while creating deployment) :-(
All issues are solved, and it is ready for review

Can't update vendored libs :-(
godep save ./...
godep: Package (github.com/docker/docker/pkg/term/winconsole) not found

Does it (g/docker/docker) conflict revision with one I upgraded at #174  ?

It was in conflict even before that :-(
But it was OK, because we haven't been using parts of OpenShift that are calling this.
It his PR I'm using github.com/openshift/origin/pkg/client and github.com/openshift/origin/pkg/cmd/util/clientcmd and it looks like that they both have dependency on github.com/docker/docker/pkg/term/winconsole

:tada: ,  now it is ready for testing and review

Do you have tests in there for conversion to DeploymentConfigs and ImageStreams ? does not look like Travis run any.
Also if would be good to add a user-guide in /docs ....

Yes, test for DeploymentConfigs are there (every conversion to OpenShift generates DeploymentConfig). Same for ImageStreams, every OpenShift conversion generates ImageStream, tests was updated in https://github.com/skippbox/kompose/pull/160

I've added commit with updated user-guide.

seems to be working for me - one of my imagestreams was not working right, but I think that might be another issue.

ok - i'm having some trouble with image streams in the example I am trying to do. This is the file: https://github.com/dustymabe/kompose/blob/dusty-foo-bar/examples/mlbparks.yml
When I create with openshift it doesn't work complaining about imagepullbackoff for the dustymabe/mlbparks image. Here is what I used to get into openshift:
$ ../kompose --provider openshift -f mlbparks.yml up
We are going to create OpenShift DeploymentConfigs and Services for your Dockerized application.
If you need different kind of resources, use the 'kompose convert' and 'oc create -f' commands instead.

INFO[0000] Successfully created service: mlbparks
INFO[0000] Successfully created service: mongodb
INFO[0000] Successfully created deployment: mlbparks
INFO[0000] Successfully created ImageStream: mlbparks
INFO[0000] Successfully created deployment: mongodb
INFO[0000] Successfully created ImageStream: mongodb

Your application has been deployed to OpenShift. You can run 'oc get dc,svc,is' for details.

When I convert to "pretend" that I am kube by passing --rc then the image pulls fine and the application comes up. Here is that command:
$ ../kompose -f mlbparks.yml convert --stdout --rc | oc create -f -
service "mlbparks" created
service "mongodb" created
replicationcontroller "mlbparks" created
replicationcontroller "mongodb" created

The openshift environment I am targeting is:
OpenShift Master:
    v<IP_ADDRESS>-8-gc402626
Kubernetes Master:
    v1.2.0-36-g4a3f9c5

hmm :-(
I've just tried your mlbparks.yml and it worked fine for me.
Only difference is that I used OpenShift Origin 1.3.0.
It complained only for dustymabe/mlbparks image? centos/mongodb-26-centos7 pulled successfully?

I've just tried your mlbparks.yml and it worked fine for me.

Then I wouldn't worry about it. Most likely my setup.

It complained only for dustymabe/mlbparks image?

yes. It only complained for one of the images. The onther one was fine.

Can we get this rebased? :)

Ah, It conflicted with my other PR :-)
Rebased.

ping @surajssd @janetkuo @ngtuna @sebgoa - can we get this reviewed by a maintainer?

@dustymabe I think some of us don't have Openshift account for testing. But you guys made some tests already and user-guide was also added, it should be good to let it pass. We can always open issue later.

@ngtuna If you would like to play with OpenShift in future you can use minishift it is practically same as minikube but it starts vm with OpenShift ;-)

Thanks @kadel for the reference :+1:
On Tuesday, October 18, 2016, Tomas Kral<EMAIL_ADDRESS>wrote:

@ngtuna https://github.com/ngtuna If you would like to play with
OpenShift in future you can use minishift
https://github.com/jimmidyson/minishift it is practically same as
minikube but it starts vm with OpenShift ;-)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-incubator/kompose/pull/200#issuecomment-254547582,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB31xxMoSAu2_gZJum51UknzbAiRzxpkks5q1Of9gaJpZM4KTa-U
.

--
Regards,
Tu Nguyen
Sent from mobile

@ngtuna also you can try out for free in openshift online: https://www.openshift.com/devpreview/

@dustymabe @kadel so this worked for me when I tried it today with the docker-compose file in examples well.


hash/crc32: clean up logic around tables

The logic around the tables in crc32 is a nightmare. It all results from the rigid API in which [256]uint32 Tables are passed around, pretty much assuming that a 256x4 table is the best and only thing needed to calculate a CRC. In the meantime, we got the optimized slicing-by-8 which needs 8 of these tables and some hardware-assisted implementations which need different tables, or need no tables at all.
Here are a few problems and inconsistencies that should be addressed:

when using slicing-by-8, we also compute the "old style" table, even though it is always identical to the first of the 8 tables (so we compute and store it twice)
when using Castagnoli, we initialize the slicing-by-8 tables on the first MakeTable; when using IEEE, we initialize it on the first use (inside updateIEEE).
we don't use the faster slicing-by-8 for other polynomials
when SSE42 is available, castagnoliTable will be nil, and thus MakeTable will return nil; nil is accepted as a valid Castagnoli table so a typical user of the API won't notice, but this is not correct (this was introduced recently in #16107).

Ideally, the API should be changed so that Table is an interface or struct with unexported fields. I don't know if this can be done without compatibility implications.

Another one: the optimization sliceBy8Cutoff optimization can and should be done internally in updateSlicingBy8, not at every call site.


Code review from command line

After look at https://blog.janestreet.com/putting-the-i-back-in-ide-towards-a-github-explorer/

wonder if that cli is avaliable.
I'm part of GNOME foundation where we recently we migrated to gitlab
https://gitlab.gnome.org/GNOME/
We get an improvement from gitlab visual cool code review:
https://gitlab.gnome.org/GNOME/gnome-builder/merge_requests/49
but as me, many ones are terminal hackers, and review code from command line would be great
Is it possible to point out the code or help to release some open source part of it?

We've had a few people try to run this code outside our walls, and the conclusion has been that it's not worth the trouble.  You're better off learning about the system at a higher level and re-implementing the useful bits from scratch.
We actually meant to stop releasing the code (you can read the new README for the reasoning), and it was a mistake that we had this code available for a few days.  We've now un-released the code.
If you have any questions toward re-implementing iron, we're happy to discuss.

@albfan We have been considering working with Jane Street to build an open-source version of Iron that is suitable for a distributed Git/Hub|Lab workflow, but its still in the early planning phases. If GNOME is also interested, we should talk in the next few months to compare notes...
/cc @yminsky @samoht

@avsm count on me to push on it, will ask on IRC and see what people think. I'm even not sure about the API for git providers (for code review)
Are you under any org? Just to know if somebody ask

And we're not averse to releasing parts of Iron. One obvious tool that could be shared (and could benefit from some contributions!) is patdiff and patdiff4, which are the tools for visualizing simple diffs and diffs-through-a-rebase. And there might be some other core bits that would benefit from sharing, like the core data types for modeling what a reviewer knows (known as a "reviewer brain", in Iron parlance.)

@yminsky As many other "game changer", one thing that could help to spread out a new concept is to let people play with it (as users or hackint on it).
So if release some bits can help to standardize your workflow (so maybe the learning curve for developers inside janestreet gets lowered) I commit you to do it, just to see what happens.
Community can add perspective and valuable feedback.


Terms of use update popup

❓ Context

Impacted projects: live-desktop

Linked resource(s): LIVE-1916, https://github.com/LedgerHQ/ledger-live-desktop/pull/4927

We wish to notify users properly when the Terms of Use gets updated, directly through Ledger Live. This PR add a new modal in the main Default component that will open when the isAcceptedTerms returns false and the user isn't in the onboarding. Closing the modal accepts the terms.
✅ Checklist

[x] Test coverage: Did you write any tests to cover the changes introduced by this pull request?
[x] Atomic delivery: Is this pull request standalone? In order words, does it depend on nothing else?
[ ] Breaking changes: Does this pull request contain breaking changes of any kind? If so, please explain why.

📸 Demo

🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

@thomasrogerlux it seems there are new screenshots and the diffs seems to be correct. Can you run a generate-screenshots if you are sure about the diff ?

@thomasrogerlux it seems there are new screenshots and the diffs seems to be correct. Can you run a generate-screenshots if you are sure about the diff ?

Oops, this PR isn't supposed to update screenshots. I fixed it and will be removing the "screenshot" tag

@thomasrogerlux you can rebase or merge in the latest develop and it should pass the CI fully 🤞


TravisCI build fails with error

TravisCI build fails with error below.
See: https://travis-ci.org/ReactTraining/react-router/builds/197028565
IE 10.0.0 (Windows 8 0.0.0) ERROR
  Syntax error
  at /home/travis/build/ReactTraining/react-router/packages/react-router-dom/tests.webpack.js:47 <- webpack:///tests.webpack.js:1:0

This is because the key word const in tests.webpack.js does not get transpiled, because .bablerc file is in react-router(-dom)/modules dir. instead of react-router(-dom).
Moving .babelrc to the parent dir resolves the issue.

This obviously passes the tests without the error, but I thought that Node >= 4 supported const (the tests are being run with 7.4.0).

It's more they're not supported by the browsers tested on BrowserStack. The transform isn't being applied to the tests.webpack.js file, which is shipped up to the browser by karma. They should live at the top level anyways, where the rest of the config lives.

Nooooooooooo :'(
@timdorr Please double check w me before merging stuff like this. We moved the .babelrc into the modules dir to work with React Native's dumb packager which attempts to compile anything with a .babelrc. So when lerna links everything up, the React Native packager sees our .babelrc and tries to compile it.

Let's just use var in our tests.webpack.js and move the file back.

Sorry, I wasn't aware of that.

No worries. I'm trying to do a better job at communicating stuff like this, so it's really my fault for not catching this and saying something sooner.
In general, I think I'm going to start keeping all my .babelrc files in my modules directories. Part of the original intent behind my using the name "modules" was to indicate that the code in that directory needed to be compiled. Makes sense to keep the "compilation instructions" right alongside it too, IMO.


feat: Add from_email to postback struct

fixes https://github.com/joeirimpan/listmonk-messenger/issues/42


Ipopov/cell fixes pr

Hot fix for feed.

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


Remove space from backupschedule CRD name

Description
Remove extra space from the backupschedules yaml name
Related Issue
https://issues.redhat.com/browse/ACM-7669
Changes Made
Renamed the BackupSchedules CRD, replaced the space with -
Checklist

[x] I have tested the changes locally and they are functioning as expected.
[ ] I have updated the documentation (if necessary) to reflect the changes.
[ ] I have added/updated relevant unit tests (if applicable).
[ ] I have ensured that my code follows the project's coding standards.
[ ] I have checked for any potential security issues and addressed them.
[ ] I have added necessary comments to the code, especially in complex or unclear sections.
[x] I have rebased my branch on top of the latest main/master branch.

Additional Notes
Add any additional notes, context, or information that might be helpful for reviewers.
Reviewers
Tag the appropriate reviewers who should review this pull request. To add reviewers, please add the following line: /cc @dislbenn
Definition of Done

[ ] Code is reviewed.
[ ] Code is tested.
[ ] Documentation is updated.
[ ] All checks and tests pass.
[ ] Approved by at least one reviewer.
[ ] Merged into the main/master branch.

/lgtm


Fix width must be a positive Integer err msg when context is disabled

Hi,
First of all: Thanks for this great plugin.
Second: I got the following error message (sometimes), when the context is enabled, I opened the quickfix window and closed it thereafter.
Error detected while processing WinEnter Autocommands for "*":
E5108: Error executing lua ...ddons/nvim-treesitter-context/lua/treesitter-context.lua:182: 'width' key must be a positive Integer

The problem is fixed (for me) when applying the patch below. I also think, that in general it is a good idea to only update the context, when the window is enabled.

Sorry for my late response.
After updating everything, the error seems gone :). Sry for the trouble.


Create LICENSE

hai bro have u done anything for my problem
On Fri, Jun 5, 2020 at 11:24 AM Mohammed Ismail<EMAIL_ADDRESS>wrote:

Merged #62 https://github.com/ikismail/Angular-ShoppingCart/pull/62
into master.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ikismail/Angular-ShoppingCart/pull/62#event-3409787728,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANANKOREGDVLKHBNIDXGCALRVCCARANCNFSM4NTHYOEQ
.


Update rvalue type when needed

Should fix #1897

@jeanlaroche yes, it's real, This really is a fix for you :-)


Add wordlist operators

Add operator methods and Operator classes for manipulating wordlists.
Concat
wordlist1 + wordlist2 (Operator::Concat): enumerates over wordlist1, then enumerates over wordlist2.
Product
wordlist1 * wordlist2 (Operator::Product): enumerates over every combination of words from wordlist1 + words from wordlist2
Power
(wordslist1 * wordlist2) ** 3 (Operator::Power): only available on Operator::Product, simply repeats the wordlist product multiple times. Equivalent to wordlist1 * wordlist2 * wordlist2 * wordlist2.
Union
wordlist1 | wordlist2 (Operator::Union): enumerate over each unique word in both wordlists.
Intersect
wordlist1 & wordlist2 (Operator::Intersect): enumerate over each word that exists in both wordlists.

Will need to use the UniqueFilter for Union and Intersect.

Implemented in 61452f0831817f99f14cd1ed8a896cb2d7ebb39a, 5912e355ac515f3621f828013560ec091e2899c4, f6a20a60c9c56ffa840d1acbf174346c46f175af, feb91678f310c4f5469ec2855bcce7be4fcb49b8, 289e8a62843c487008cc5eeed6ae3f93c2e7ea75, and 643f9f003d4a967c7bebc3649084126cd85869fc.


rados: use omap v2 bindings

This PR is a follow-up to our previous discussion in https://github.com/ceph/go-ceph/pull/629#discussion_r800915702 .
All RADOS bindings that handle OMap keys now use their "more flexible" librados versions that consume byte strings with explicit lengths instead of expecting them to be null-terminated.
I have done a bit of refactoring too -- creating new C-allocated arrays to store the key sizes seemed like too much boilerplate. To that end I have added cutil.GoCSLenSlice that handles byte arrays and size arrays in one go.
Also, it seems that some of the *Step structs were unnecessary: these particular C functions in librados make copies of their args anyway, so it seems there is no need to keep them around for longer in the *Step structs...
I've tried to split this PR into multiple commits for easier review. Please see commit messages for more details about the individual changes.
Checklist

[x] Added tests for features and functional changes
[x] Public functions and types are documented
[x] Standard formatting is applied to Go code
[ ] Is this a new API? Is this new API marked PREVIEW?

NewBufferGroupStrings() now uses C.CBytes()
Added a TODO comment regarding PtrGuard to buffergroup.go
Renamed BufferGroup.CStrings to BufferGroup.Buffers

If you are ok with the changes please let me know if the commits need to be squashed.

If you are ok with the changes please let me know if the commits need to be squashed.

No, I'm fine with it as is. Only if there is a back and forth or fix-ups in the commits, I would prefer them to be squashed, but it seems to me, that your commits are not that.

@mergifyio rebase


How to use it without Composer?

i can't install composer in my server because its shared :/

Download source files
Set up PSR4-compatible autoloader (example)
Set "GraphQL\" namespace to point to "src/" folder of library source files
Profit!

In general, it's a standard PHP library, so nothing special.

thanks, after all i need to install composer, but now i'm having another issue, its the first on the list. can you please help me?

Is this still the obfuscated process required to use this as a regular library?
Shouldn't the auto-loader be part of the library?
Last time I checked libraries are supposed to set the namespace...
It would be nice if step 2 and 3 were included in the library.
How I want to implement GraphQL-PHP:
include_once 'path/to/library/grqphql.php';

$graphql = new GraphQL;

// literally no other lines of code required

^^^See how simple that is? That's how PHP is supposed to be.
It's not server-side JavaScript after all. It should not be obfuscated like server-side JavaScript.

No


Add scatter plot functionality

Adds the option to create a scatter plot.

In the last commit here, I've added images from my scatter implementation and updated the README. I changed the layout slightly, so that the images will be at 70% and centred. If this is not desirable, very happy to revert.

We've been informed that the data_labels property can be used for scatter plots, so a separate PR will be raised to just document that with an example, instead of this current PR.

We've been informed that the data_labels property can be used for scatter plots, so a separate PR will be raised to just document that with an example, instead of this current PR.

Thanks so much. That'd be wonderful.


New version: NNlib v0.7.27

Registering package: NNlib
Repository: https://github.com/FluxML/NNlib.jl
Created by: @DhairyaLGandhi
Version: v0.7.27
Commit: a5ff4b54cf162104b40f55c8b8a86710e7c2051a
Reviewed by: @DhairyaLGandhi
Reference: https://github.com/FluxML/NNlib.jl/commit/a5ff4b54cf162104b40f55c8b8a86710e7c2051a#commitcomment-54380602

ComponentArrays would need the ChainRules@1 help for Flux tests to pass


Add bot support

Hi!
I see you noticed my commit. I have a couple of things I'd like to verify with you before I formally send a PR (this one is a work-in-progress).
Cisco Spark Library Change
If possible, I would like to change the underlying Spark library to the official Cisco Spark one. To do that, I was planning on introducing a "SparkApi" class to abstract away the implementation (csco-spark vs ciscospark). Once the class was there, as a separate commit, I'd swap out the underlying implementation. The problem with switching to the official Cisco Spark API is that they don't have an API for /people/me (at least none that I could find in their documentation), which is critical for bot support. I'd have to implement that request myself (as I've currently done in this PR).
The other thing I don't like about doing this is that we'd be losing support for the HUBOT_SPARK_API_URI environment variable (which I've personally found handy).
csco-spark issues
If we stick with csco-spark, I'd have to send a PR to add support for customizing the getMessages API call to support mentionedPeople (since the API restricts bot access so they can only get messages where they are mentioned), and /people/me. I'd like to (ideally) avoid doing the requests in this library so that there's more consistent/better support for things like proxies.
What do you think? :)

Changes look great, I'm new to coffeescript so it's good to see the code cleaned up too.
Wrt to csco-spark v.s. ciscospark, this is one of the first issues #2 raised, I looked and couldn't see an important feature, the ability to list messages since a specific datestamp. Without that your bot will be eating memory and paging out messages in a room. It was also closed source, I asked at the time and the product team said they were planning to open it up once they refactored it.
That now seems to have happened https://github.com/ciscospark/spark-js-sdk/ so I'm happy to move over, but as you say it's missing some functions. Are you sure you can get messages since date? https://ciscospark.github.io/spark-js-sdk/api/#Messages
An extension class makes sense, maybe just add the extra params in there.
I can't see how you specify a private URL in the ciscospark module either. that seems odd. we should ask the spark devs.

@selesse apparently if you set the people ID to "me" it will fetch /people/me

Interesting! Looking into it right now, thanks :)

So swapping the implementation was pretty straightforward (https://github.com/Stack8/hubot-spark/compare/add-bot-support...official-ciscospark-api?expand=1) - I'm done! :)
I still have a few concerns though.

We'd be dropping support for the HUBOT_SPARK_API_URI environment variable. I dug around some more but still didn't find anything for replacing that.
When I was looking at the current implementation, I noticed we're not actually asking for messages since a particular timestamp. Every 10 seconds, we ask for the last 200 messages, and we locally filter the messages. It seems like it should be asking for only the messages it hasn't yet received. This PR preserves the existing behavior.
Longer-term, I believe Cisco has plans to release a WebSocket API for Spark. Instead of polling every 10 seconds, it would be much better to rely on sockets/events. I've used this library (https://github.com/marchfederico/ciscospark-websocket-events) and it seems like it would make a great addition/replacement to the current implementation.

What do you think? :)

Ahh yes, one more thing (sorry):
Passing in a list of room IDs to listen to is a bit problematic if you expect Hubot to be able to respond to DMs. You'd have to programmatically determine the room IDs of all the DMs that are being opened every few seconds? I'm not even sure. Swapping to the websocket-event library solves this problem. :)

support for the HUBOT_SPARK_API_URI environment variable.

Setting an environment variable called HYDRA_SERVICE_URL to the API URL you want to use should do it. You can also mess around with the object you get back after you require('ciscospark'). There's a config key there that has a property of hydraServiceUrl that sets the URL. When the object is created, it sets that property to the environment variable if it exists, or defaults to https://api.ciscospark.com/v1

It seems like it should be asking for only the messages it hasn't yet received.

The Spark API doesn't currently support an after parameter on the messages API.

Oh, whoops - I forgot that before and after weren't the same thing ;).
I've fixed the HUBOT_SPARK_API_URI environment variable here, thanks for your suggestion!

@selesse I've asked about a WebSocket API plenty of times. I could never find a parameter to filter the messages it hasn't yet received. There should be a rooms/messages/?afterMessage=1234 or timestamp filter at the very least.
Everyone else is using WebHooks since they're easier for non-developers but it means your bot has to run on a public IP, which gives me nightmares
Another implementation I did (Python), I just add the "read" messages to a list. Which is obviously horrible!

FWIW I think we should merge this in and resolve the paging seperately.

Agreed!
I'll make a separate PR for switching to ciscospark.

So ok to merge @selesse ?

Yep! :)

:+1:


DUPLO-25833 TF: Add an options to associate tenant(s) to an user

Overview
Implement tenant access to user
Summary of changes
Implemented new resource duplocloud_user_tenant_access
This PR does the following:

Added CURD operation to duplocloud_user_tenant_access
Updated documentation

Testing performed

[ ] Using unit tests
[ ] Manually, on my local system
[ ✓] Manually, on a remote test system

Describe any breaking changes

...

Task linked: DUPLO-25833 TF: Add an options to associate tenant(s) to an user


ntopng: DNS-Mode

OPNsense 22.1.7_1-amd64
Plugin os-ntopng-enterprise 5.3.220514
In the GUI under Services/ntopng Enterprise/settings, "DNS-Mode" is always set to "none". I can choose another value from the dropdown, but it is not saved - after pressing the "Save" button, on subsequent visits to the dialog it has always returned to "none".
Is this a bug or am I doing something wrong?
Note:
In System/Firmware/Plugins, the plugin is listed as "os-ntopng-enterprise (misconfigured)". Other plugins are listed as "... (installed)". Can this have to do something with it?

We do not maintain os-ntopng-enterprise and ntop isn’t a supporter of OPNsense so we don’t have any ground to talk about this.


Why the removal of UITableViewCellContent related classes?

Checklist

[x] Reviewed the README and documents.
[x] Searched existing issues for ensure not duplicated.

Hi, I appreciate your work but I was wondering: why did you remove UITableViewCellContent in the latest release (rc1)?
It was the only way to access the cell that actually is rendered by the tableview.
Now I can't, for example, add an accessory view to the cell  keeping the cell's background color the same, and I can't make use of the default cell selection behavior.

@robcas3
You can use arbitrary customized class of cell by overriding UITableViewAdapter implemented in here

Oh wow, I missed that PR, sorry!
Thank you, that's what I was looking for!

@robcas3
Sorry to make some breaking changes without prior notice.
I'll be happy if the new features will help you.
FYI, you can catch up the changes in the versions by checking the release notes.
https://github.com/ra1028/Carbon/releases

@ra1028
No worries, I was able to adapt to breaking changes in less than 10 mins.
So it is okay to me!


ctrl-space shortcut not working in QS 2.0

Dear developers,
I am submitting this to let you know about a thing that, to me, appear as a bug.
If I am missing the point, please head me to the right place where I can find more information.
Yesterday, I updated to QS 2.0 and realised the shortcut ctrl-space was not working.
I headed to the preferences, command section, and saw it was set to ctrl-1.
I tried to revert it to ctrl-space, but when hitting ctrl-space to set it as my choice the text-box kept displaying ctrl-1.
I had to adapt to trigger QS by hitting twice the ctrl key.
This morning I downgraded it to 1.6.1.
Many thanks in advance for your attention!
With best regards,
--
lS.

Are you sure you have the official build? I can’t reproduce this problem. See #2682
If it still won’t work, you can set the shortcut using version 1.6.1, then upgrade, or since what you want to use is Quicksilver’s default, you can run this in Terminal:
defaults delete com.blacktree.Quicksilver QSActivationHotKey

Dear Rob,
thank you for your reply and for pointing me to the issue #2682
I updated by clicking on "Install Update" when prompted by QS, so I guess I used the official build.
After receiving your reply I decided to give v 2.0 another go.
Result:
The "task viewer" floats on my computer monitor showing once in a while "Catalog updating" and there was no way to close it without quitting QS.
I also downloaded the DMG file from your website: same issues.
Downgraded again to 1.6.1
I'll keep eye on the issue #2682, when it will be solved I upgrade to QS 2.*.
Thank you again!

Dear @skurfer,
I have the same problem as described by @eisGeist. I upgraded QS from inside the app to the latest official release — v2.0.0 (4027). I used the default shortcut (ctrl + spacebar) and it got changed to ctrl + 1. In the settings, it’s impossible to enter the spacebar (any other key is working). I tried to use the terminal command you mention in your message (having first quit QS), but nothing changes. Default reverses to ctrl + 1.
I’m not sure to understand if it’s necessary for me to install again the old 1.6.1 version, set the shortcut, and upgrade again, as this would result in exactly the same situation that I had before (the correct shortcut in 1.6.1 and an upgrade to version 2).
Thanks a lot for your help,
Gabriel

My system is in French and Keyboard is Swiss-French (QWERTZ), don’t know if it can be relevant…

Interesting, French Canadian keyboard over here.

FWIW I haven't been able to reproduce.
My default is ^space, which has been working throughout 2.0 development and currently on the release.
I downgraded to 1.6.1 and then went through the in-app upgrade back to 2.0 and it continues to work.
I reset the shortcut to ^9 and it works. I set it back to ^space and it works.
¯\_(ツ)_/¯

Is it because we use cmd-space?

Is it because we use cmd-space?

Is it because we use cmd-space?

Is it because we use cmd-space?

I use cmd-space cloud that be an issue ?

setting to option+space (option+1 appears as value)
$ defaults read com.blacktree.Quicksilver QSActivationHotKey
{
    keyCode = 49;
    modifiers = 524576;
}

setting to option+1 (option+1 appears as value)
$ defaults read com.blacktree.Quicksilver QSActivationHotKey
{
    keyCode = 18;
    modifiers = 524576;
}

In both cases option+1 is the shortcut that actually works

Italian keyboard mapping, not producibile on ABC one

If I switch to ABC keyboard mapping on the same mac I'm able to set the shortcut to ctrl+space and it works properly, switching back to Italian breaks the shortcut, while in the preferences is still showed properly

Hi all, this is a known issue with Quicksilver v2.0, and we've already issued a fix.
A duplicate issue here: https://github.com/quicksilver/Quicksilver/issues/2692 has more information.
You can manually download an updated version of the app with the fix here: https://github.com/quicksilver/Quicksilver/suites/5837416196/artifacts/196109949
@skurfer  - I suggest we release QS 2.0.1 with this in there shortly.

I suggest we release QS 2.0.1 with this in there shortly.

I can work on a changelog -- it looks like the only merged commit in master is 3518a95df830e8d11cce9022618c8db835641034.
What about https://github.com/quicksilver/Quicksilver/issues/2681#issuecomment-1081333139 -- did I miss a PR somewhere that should be included?

See my recent email.  I've just created milestone 2.1.0 (which I think should include everything we should get merged asap.)
For #2681 - the 'fix' was created in PR #1497 9 years ago. I'll refactor and make a new PR. Agreed it should go in 2.1.0 (what I'm calling your 2.0.1)


support for other color schemes?

@dv343
In the CARTOColor library, we have several Colorbrewer schemes that can be accessed (https://github.com/CartoDB/CartoColor/blob/master/cartocolor.js#L1836-L1849).
In Builder, you would do something like,
polygon-fill: ramp([attribute],colorbrewer(Blues),quantiles);
Can we make these available in the renderer also?

Seems like colorbrewer has always been there, exported prefixed by cb_, see https://cartodb.github.io/renderer-prototype/example/mapbox.html#eyJhIjoibW5tYXBwbHV0byIsImIiOiIiLCJjIjoiZG1hbnphbmFyZXMiLCJkIjoiaHR0cHM6Ly97dXNlcn0uY2FydG8uY29tIiwiZSI6ImNvbG9yOiByYW1wKGxpbmVhcihsb2coJG51bWZsb29ycyksIDEsIDQpLCAoY2JfUHVycGxlcykpXG4iLCJmIjp7ImxuZyI6LTczLjkwNDM5MDkwNTU1NTQzLCJsYXQiOjQwLjc0OTExODc3NjQyMTR9LCJnIjoxMS43NDgzMTYzMjg5MTA2MjJ9
That comes from the cartocolor repo, so, to change current behavior, a change in that repo is what we should do, but that would be a breaking change for other packages :slightly_frowning_face:
cc: @rochoa

I'm moving this into future developments. Let's decide later if we want to enable colorbrewer in the cb namespace as an alternative to the ones already present in cartocolor.

Actually, we support ColorBrewer... I didn't realize until I was reading through David's guide.
For example, this is the syntax (MAP):
color: ramp($dn,cb_blues)
What I need to check is if we are reading them in from CARTOColors and since we don't include all of the CB schemes in there, I may need to add more.
For example, I tried a qualitative scheme from CB and it doesn't seem to be working:
color: ramp($dn, cb_dark2)

@VictorVelarde @rochoa ok, I looked in more detail, and yes, the CB schemes that VL supports are the ones that we have defined in cartocolor.js https://github.com/CartoDB/CartoColor/blob/master/cartocolor.js#L1836-L1849.
As discussed earlier, we made the decision to add these ones for Builder to compliment the schemes we had in CARTOColors and also chose ones that worked well on our basemaps.
I think it would be good to add in the additional ones for use with VL (but not necessarily for Builder).  I'm not sure what you guys think the best way to do that will be... but I think it will be important for VL especially since you can use CB color schemes by name (vs. Builder where we generated hex values).

A simple option coulb be just to add those schemes to a new CartoColors version (new v5?) and freeze the version currently used in Builder

@VictorVelarde ok that sounds good. there are also other things that we wanted to look into for VL and CARTOColor schemes. Particularly, since we do color interpolation in CIELab, the mixing of some of the category schemes when there isn't a one-to-one match, can get pretty muddy. We had some ideas for rearranging some of the category schemes to avoid this problem. Maybe this is something we can look into if we decide that we can use a different version of CC for VL!
more info here: https://github.com/CartoDB/carto-vl/issues/129
let me know what you think!

We can do what Victor proposes. Decide on what changes we want in CC, incorporate them, and add all CB palettes. We could use that new version to fix this.
OTOH, I would love to know how we plan to avoid name collisions because changing the name of a colour palette in CC is just a workaround. I was wondering if being able to use the namespace in the String API could be an option.
color: namedcolor.teal

What do you think?

Right now, there is just one level, where all the palettes are included, with no namespace, and CartoColors are included as they are here https://github.com/CartoDB/carto-vl/blob/63f4b91e6112517972ae763697603c3d5c4ef7f8/src/renderer/viz/expressions/color/palettes.js#L8
We can explore that idea of namespaces if you think it is interested. What different namespaces, apart from colorbrewer, should we end with?

cc @andy-esch