Fix for "Building for different targets - UMD"

This fixes #8
I took a lot of inspiration from this project here:
https://github.com/monterail/vue-multiselect
Just added babel as transpiler. Now before pushing to npm just do
npm run bulld

Running this babel compiles your files in src/ into lib/ make them cross compatible.
Tested it on my machine and this error here became history! #5

I also added the possibility to provide options for the MediumEditor.
Sorry, didn't notice that I used the 'master' branch for this commit ;)

I also removed the "if" query for the instances. This caused that I could pass options only for one instance but not for the other.

This is great. I will integrate it soon. Thank you very much!

Thank you, I adjusted your changes


Notify @dui when creating a new take home

It's important that I be notified / subscribed when a new take home is created.
Not sure how we're doing it on the open source version of the tool but on our implementation we need a way to define default subscribers to the issue :+1:

There's the assignee env variable which is used as a backup when there's no team members found which could be assigned it to, could just be that is also the person who's notified


Fix optional tag

Update Optional Tagging for tasks
Logic is now similar to how tagging is done for contacts. Updated all relevant files.

Codecov Report

Merging #102 (19b1a5c) into master (d82f153) will decrease coverage by 0.58%.
The diff coverage is 30.00%.

@@             Coverage Diff              @@
##             master     #102      +/-   ##
============================================
- Coverage     63.09%   62.50%   -0.59%
  Complexity      466      466
============================================
  Files            95       95
  Lines          1764     1779      +15
  Branches        184      189       +5
============================================
- Hits           1113     1112       -1
- Misses          591      604      +13
- Partials         60       63       +3

Impacted Files
Coverage Δ

...a/seedu/address/logic/commands/AddTaskCommand.java
0.00% <0.00%> (ø)

...edu/address/logic/parser/AddTaskCommandParser.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/model/tag/Tag.java
80.00% <ø> (ø)

.../java/seedu/address/model/util/SampleDataUtil.java
11.11% <0.00%> (-1.39%)
:arrow_down:

...in/java/seedu/address/storage/JsonAdaptedTask.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/ui/TaskCard.java
0.00% <0.00%> (ø)

...du/address/logic/parser/EditTaskCommandParser.java
83.33% <66.66%> (-8.98%)
:arrow_down:

...va/seedu/address/logic/commands/AssignCommand.java
70.27% <100.00%> (ø)

.../seedu/address/logic/commands/EditTaskCommand.java
86.88% <100.00%> (ø)

.../seedu/address/logic/commands/UnassignCommand.java
61.53% <100.00%> (ø)

... and 3 more

Continue to review full report at Codecov.

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


Example of generating text from gatortron model?

Hi,
I'm new to huggingface and gatortron. I wish to generate text from a medical description for example, but not sure how to do it with the gatortron models. I've tried to adapt other examples (e.g. https://huggingface.co/docs/transformers/tasks/language_modeling ) to the gatortron model, but have not had much luck.
How can I use gatortron* for generating text?
from transformers import AutoTokenizer, AutoModelForCausalLM

prompt = "Somatic hypermutation allows the immune system to"

tokenizer = AutoTokenizer.from_pretrained('UFNLP/gatortronS')

inputs = tokenizer(prompt, return_tensors="pt").input_ids

model = AutoModelForCausalLM.from_pretrained('UFNLP/gatortronS', is_decoder=True)

outputs = model.generate(input_ids=inputs, max_new_tokens=100, do_sample=True, top_k=50, top_p=0.95, temperature=0.9)

tokenizer.batch_decode(outputs, skip_special_tokens=True)

I only get dots...
['somatic hypermutation allows the immune system to ....................................................................................................']
I've also tried the pipeline example:
prompt = "Somatic hypermutation allows the immune system to"
from transformers import pipeline

generator = pipeline("text-generation", model='UFNLP/gatortronS')
generator(prompt)

But it does not work either.
If you want to use `MegatronBertForCausalLM` as a standalone, add `is_decoder=True.`
Xformers is not installed correctly. If you want to use memory_efficient_attention to accelerate training use the following command to install Xformers
pip install xformers.
/home/user1/.local/lib/python3.9/site-packages/transformers/generation/utils.py:1369: UserWarning: Using `max_length`'s default (20) to control the generation length. This behaviour is deprecated and will be removed from the config in v5 of Transformers -- we recommend using `max_new_tokens` to control the maximum length of the generation.
  warnings.warn(

[{'generated_text': 'Somatic hypermutation allows the immune system to to to to to to to to to to to to to'}]

Thank you for your help and great project.

Any update on this? Have you tried fine-tuning the model? @JustGitting

Hi @VuTrungNguyen,
No, I have not progressed this because I was just spinning my wheels and hoped someone could put me in the right direction.

Hi @JustGitting,
I also encountered similar issues while trying to execute GatorTron (@VuTrungNguyen). Have you managed to make it work? If so, could you please share your insights or any solutions you've found?
Thanks a lot.

Hi @alireza0r
Unfortunately no luck. I hope @bugface has time to help us, it would be greatly appreciated.

Please give us some time.  We will look at this issue and get back to you all.

Thank you @bugface! 🙏

Thank you @JustGitting
Thank you @bugface , I look forward to the result :)

http://mayhewsw.github.io/2019/01/16/can-bert-generate-text/
so gatortron is encoder only model which cannot use .generate() method.  Please refer to the link above for how to generate text.  In general, this series models are good at NLU tasks like NER, RE, MRC but not generative tasks.

Thank you @bugface for clarifying the model capabilities! Thanks for the link too.


Fix 2fa auth for dsm 7

Beginning with DSM 7 a new version of SYNO.API.Auth was introduced - version 7.
In case of 2fa auth device ID to skip OTP checking is responded as device_id (not did):
DSM 7 (api version 7)
DEBUG: Request url: http://<IP_ADDRESS>:5000/webapi/entry.cgi?account=******&passwd=********&enable_device_token=yes&device_name=******&format=sid&otp_code=012345&api=SYNO.API.Auth&version=7&method=login
DEBUG: Request status_code: 200
DEBUG: Request headers: {'Server': 'nginx', 'Date': 'Sat, 10 Apr 2021 20:22:17 GMT', 'Content-Type': 'application/json; charset="UTF-8"', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=20', 'Vary': 'Accept-Encoding', 'P3P': 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"', 'X-Content-Type-Options': 'nosniff, nosniff', 'X-XSS-Protection': '1; mode=block, 1; mode=block', 'Set-Cookie': 'did=q0YtE1dlwUWJWtX2UUMbf7l4pbdtvKWEGH3tJjpxfc2t4oUeAw2g5cKjAB-QfLGx6ncZGuteJZEHAKfiYax_Nw;expires=Mon, 10-May-2021 20:22:17 GMT;path=/;HttpOnly', 'Cache-Control': 'max-age=0, no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'Content-Encoding': 'gzip'}
DEBUG: Request Method: GET
DEBUG: Successful returned data
DEBUG: API: SYNO.API.Auth
DEBUG: RESPONSE: {'data': {'account': 'hass', 'device_id': 'q0YtE1dlwUWJWtX2UUMbf7l4pbdtvKWEGH3tJjpxfc2t4oUeAw2g5cKjAB-QfLGx6ncZGuteJZEHAKfiYax_Nw', 'ik_message': '', 'is_portal_port': False, 'sid': '4fTalf67x6P__2vQO76czw5me1oQbRsszAIlLzTY3bQlAO-RUXsxYquIpkSj5XZ2M0WAF8cbQ108PQQG3J0vl0', 'synotoken': '--------'}, 'success': True}
DEBUG: Authentication successful, token: 4fTalf67x6P__2vQO76czw5me1oQbRsszAIlLzTY3bQlAO-RUXsxYquIpkSj5XZ2M0WAF8cbQ108PQQG3J0vl0

Hi @hacf-fr , could some please have a look into this PR and possibly merge and release it, many thanks :slightly_smiling_face:

Hi @Quentame
Since DSM 7 has been released today, this PR (and a new release) becomes more important.
Could you please have a look into this PR or some of your colleagues @hacf-fr?
Regards,
Michael

cc @oncleben31 do you see a chance to support here? :slightly_smiling_face:

Well, the issue seems to persist in Home Assistant 2021.12.8 with my DSM 7.0.1-42218 Update 2

Issue is still present.


Can ConnectAPI be used to get dsym download url?

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject
Can ConnectAPI be used to get dsym download url?
Question Description
We had a script using Spaceship to transfer dlsym files from iTunes to Crashlytics. This broke a few months back when Apple changed their api. Am looking for alternative way of doing this and seems that ConnectAPI would be the way forward but I don't see a means of getting the dsym download url. Is this currently supported in some way? If not is it something that can be added?
Thanks
Mark

I don't think that's a functionality that's currently available on the API: https://developer.apple.com/documentation/appstoreconnectapi
Therefore it won't be included in Spaceship::ConnectAPI

Very frustrating - having to manually transfer dSYM files across to Firebase for every internal test build + final builds across multiple apps will be a pain. Was working great before Apple broke things! Will file a request to add this with Apple but won't hold out much help :-(
Unless anyone else has suggestion as how to do this (we don't want to turn bitcode off).

https://github.com/fastlane/fastlane/blob/f32b007ff45e648b37b6c9c2037ac481f36b7780/fastlane/lib/fastlane/actions/dsym_zip.rb is not doing the job? At least the action sounds like pretty much what you want to do, just not via Connect:API

I believe that just sends up the dSYM from your xcarchive file. If you use bitcode then you need to use the one provided by Apple in iTunes Connect after they've processed the binary since they re-build from bitcode and the one from building the binary before submitting is no longer valid.

@mwoollard Plese for context share your old script, even if the endpoints that was using are not there any more.

Will do - won't have access to it until tomorrow though. The odd thing is it missing api call occasionally works - seems like Apple have load balancer and some instances still have the old API...

Apologies for the delay but here is the script that no longer works. It was used to get a list of dSYM links, the output of this was used by a python script to do the actual transfer.
# FASTLANE_ITC_USERNAME     The iTunes account username
# FASTLANE_ITC_PASSWORD     The iTunes account password
# FASTLANE_ITC_TEAM_ID      The team ID (needed when account associated with multiple teams)
#
# Output is one build per line with format:
#
# <bundle-id>,<build-number>,<dsym download url>
#

require "spaceship"

username = ENV["FASTLANE_ITC_USERNAME"]
password = ENV["FASTLANE_ITC_PASSWORD"]

Spaceship::Tunes::login(username, password)
Spaceship::Tunes.select_team

Spaceship::Tunes::Application.all.collect do |app|
    if app.live_version != nil
        train=app.live_version.version
        app.all_builds_for_train(train: train).sort { |a,b| a.build_version <=> b.build_version }.collect do |build|
            build.reload
            if !build.processing?
                puts app.bundle_id + ',' + build.build_version + ',' + build.dsym_url
            end
        end
    end
    if app.edit_version != nil
        app.all_build_train_numbers
        app.edit_version.candidate_builds.sort { |a,b| a.build_version <=> b.build_version }.collect do |build|
            if !build.processing && build.details.dsym_url != nil && build.build_version.to_i > last_build
                puts app.bundle_id + ',' + build.build_version + ',' + build.details.dsym_url
            end
        end
    end
end

What's the error you are getting? dsym_url is definitely something you can get via Fastlane/Spaceship. I've just recently added even more retrievable information via this PR: https://github.com/fastlane/fastlane/pull/15094

Unexpected response and a dump of html. The odd thing is individual calls sometime work, sometimes fail but it never holds together to run the whole process. The above was working fine until the changes Apple's end earlier in the year. If there is now an alternative way to get the dsym_url that will be great - will check the PR.

I think the train part is no longer working reliably, but might be wrong.


thunderstore profile metadata: context deadline exceeded

I am just starting to try out your code here to manage a dedicated valheim (lgsm) server's mods.
I ran up against an error immediately:
[Fx] RUNNING
2024/05/29 13:07:31 unable to pull thunderstore api: context deadline exceeded (Client.Timeout or context cancellation while reading body)
2024/05/29 13:07:31 Error processing mods: context deadline exceeded (Client.Timeout or context cancellation while reading body)

This is happening in r2modman.GetPackagesMetadata where the Get is timing out, though you've set the Timeout on the http.Client.
If I use http.Get instead of the specific Client, this disables the Timeout, of course, but it does succeed. The json from that endpoint (for valheim) is pretty slow and huge, so perhaps a longer timeout? I tried changing it to 60*time.Second but that didn't seem to do it, so I am trying to figure out whats happening there.
Otherwise, so far this looks super useful and I'm happy to help out a bit.

I think this is the culprit. The timeout for the HTTP client used for that API is hard-coded to 10 seconds. I'll make this configurable.

https://github.com/mpawlowski/r2modman-headless/commit/115c445f131c4199f3de9f3532b2ea554402c6ac should let you increase the timeout when fetching metadata using the thunderstore-metadata-timeout flag.


Fix automated iOS build deploy

Opened issue to set complance code here:
https://keybase.atlassian.net/browse/DESKTOP-1748

cc @MarcoPolo


Error: cannot import name 'SupportsResponse' from 'homeassistant.core' - after upgrade to v.4.4.1 from v3.3.0

Hi,
today I proced with upgrade to to v.4.4.1 from v3.3.0 of Custom Component Meross LAN
HACS Version: 1.33.0
HA Version: 2023.6.3
I'm using Meross LAN to manage in HA this Meross devices: mss310, mss310x and mss425ex.
Before the upgrade, all works properly, but after the upgared the Custom Component is not load for this error:
2023-12-07 14:56:09.441 ERROR (MainThread) [homeassistant.setup] Setup failed for custom integration meross_lan: Unable to import component: cannot import name 'SupportsResponse' from 'homeassistant.core' (/usr/src/homeassistant/homeassistant/core.py)

Could you help me to fix that error?
Many thanks for your patience
Best regard
Giuseppe

Hi Krahabb,
many thanks for your support! Fixed with upgrade to HA 2023.9.2!
Best regards
Giuseppe


Subtasks handler in wait_for_completed

Pull Request summary:

Add subtasks handler to wait_for_completed.
Changed Existing API's methods using wait_for_completed, because wait_for_completed starts to returns TaskResult(bool, List[SubTaskData]) - bool is True if all subtasks are success, or returns False if at least one is failed
Change exception blocks into conditional statements - no more looking for first element in list, so IndexError will not be raised
Use custom exceptions instead of built-ins
Use pydantic data model intsead attrs lib

Checklist:

[X] Make sure to run pre-commit before commiting changes
[X] Make sure all checks have passed
[X] PR description is clear and comprehensive
[x] Mentioned the issue that this PR solves (if applicable)
[X] Make sure you test the changes

This issue was migrated from an old repository: https://github.com/CiscoDevNet/catalystwan/pull/190


PlotLayout has no field coloraxis

as the doc string of PlotDataMarker says
`coloraxis::String` - Sets a reference to a shared color axis. References to these shared color axes are "coloraxis", "coloraxis2", "coloraxis3", etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.

however, when i write a PlotLayout like
const preview_layout = PlotLayout(
    title = PlotLayoutTitle(text = "Densified Overlay preview", font = Font(24)),
    showlegend = true,
    grid = PlotLayoutGrid(rows = 1, columns = 2, pattern = "independent"),
    xaxis = [PlotLayoutAxis(xy = "x", index = i, title = "x") for i = 1:2],
    yaxis = [PlotLayoutAxis(xy = "y", index = i, title = "y") for i = 1:2],
    coloraxis = [PlotLayoutAxis(xy = "z", index = i, title = "z") for i = 1:2]
    )

the error message shows that
ERROR: type PlotLayout has no field coloraxis

Hi,
Thanks for reporting. Looks the problem here you are trying to assign an object of type Vector{PlotAxis} in coloraxis instead of string

I write the code as:
PlotData(
        x = sort(unique(df.x)),
        y = sort(unique(df.y)),
        z = [res[i, :] for i = 1:size(res, 1)],
        xaxis = "x$idx",
        yaxis = "y$idx",
        coloraxis = "z$idx",
        name = name,
        plot = StipplePlotly.Charts.PLOT_TYPE_HEATMAP,
    )

In StipplePlotly/src/Charts.jl, the docstring of the PlotData coloraxis keyword argument is

Settings for these shared color axes are set in the layout, under layout.coloraxis, layout.coloraxis2

however, i searched StipplePlotly/src/Layout.jl, and found no "coloraxis", this might be a not yet implemented feature in Layout.jl but referenced in Charts.jl

Hi @honghuzi thanks for posting the example, do you get the same result with PlotyBase?
https://github.com/GenieFramework/StippleDemos/blob/master/StipplePlotly/PlotlyBaseDemo.jl
Example of bar:
https://github.com/GenieFramework/ScoringEngineApp/blob/4895c6b20b8bb4f7c63397c96539107d835178f1/models/scoringengine/explain.jl#L18
https://github.com/GenieFramework/ScoringEngineApp/blob/4895c6b20b8bb4f7c63397c96539107d835178f1/models/ScoringEngine.jl#L166
If you are aware of PlotyBase please give it a shot. Otherwise, I'll try on my end


OCPBUGS-17157: pkg/controller: use a metadata watch for CRDs

Using a full LIST+WATCH is an optimization, with trade-offs. Holding the state of the world for CRDs in memory when we rarely, if ever, actually need to access them is a bad use of that trade-off, especially when the sum total size of CRDs on even the most basic cluster is O(20MiB).

/retest

/retest

Let me dig into e2e, this passes locally for me ... :|

/retest

@tmshort should be good to go now

/lgtm


fix: restore merge_node operation

Apparently "merge_node" is used in some cases so this should not be disallowed

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Methods table and overview update

This PR replaces the Methods Overview with a table, because they seem redundant and it doesn't make sense to maintain both.

Am I correct that it's just docs/source/tables/methods_table.md, docs/source/tables/algorithms_table.md, and docs/source/index.rst that have changed, and the rest of the changes are from branching off of your method cards branch?


Add cloud provider integration for OpenStack Cinder and Neutron

Looking at the CI fail, the is empty test doesn't exist :)
file_|-kubelet_|-/etc/kubernetes/kubelet_|-managed:
  comment: |-
    Unable to manage file: Jinja syntax error: no test named 'empty'; line 26

    ---
    [...]
        --node-ip={{ grains['ip4_interfaces']['eth0'][0] }} \
    {% if grains['lsb_distrib_id'] == "CAASP" -%}
        --pod-manifest-path=/etc/kubernetes/manifests \
        --pod-infra-container-image={{ pillar['pod_infra_container_image'] }} \
    {% endif -%}
    {% if salt['pillar.get']('cloud', 'provider') is not empty -%}    <======================
                   --cloud-provider={{ pillar['cloud']['provider'] }} \
      {% if salt['pillar.get']('cloud', 'provider') == 'openstack' -%}
                   --cloud-config=/etc/kubernetes/openstack-config \
      {% endif -%}
    {% endif -%}
    [...]
    ---
  pchanges: {}
  name: "/etc/kubernetes/kubelet"
  start_time: '09:39:17.063627'
  result: false
  duration: 637.958
  __run_num__: 45
  changes: {}
  __id__: kubelet

https://trello.com/c/j0kV6nl1/316-kubernetes-cloud-providers-integration

This looks good to me. @kiall - can you give it a runthrough on OpenStack and merge?

I've tested it with Openstack with Load Balancer and Cinder, it works fine!

@robdaemon: can you please look on this once again? I only rebased it and added comments to option. Everything was tested and works fine.

You get my :+1:


Update: 2023-08-25

Duotang update 2023-08-25:
Detailed changes:
Duotang.html

Updated to VirusSeq release Aug 24, about 1000 new sequences since last update.
REVIEW REQUESTED for the following modifications:
Updated the methodology section for the case count data sources, now hyperlinked to their respective data stores (Closes #255).
Updated the population values used for case count selection plots. Now uses population estimates from the lastest quartely release (April 1, 2023) (Closes #256)
Corrected the Y-axis scale for the molecular clock estimates (Thank you Art!) (Closes #257)
Added an average global and VOC substitution rate estimate line to the molecular clock estimate (Closes #258, #259)
Modified the selection on omicron and case count plots to show 'The Rest' lineage, which usually contains the reference lineage not previously shown.

Closed. Will be part of the next update


[Documentation / FAQ / Examples] Adding page number to a .pdf files

Hey there Jay and everybody else,
I am currently working on old documents that are mostly in .doc and also (annoyingly) in .wpd files.
I am converting these to .pdf. Actually, I do most of this manually via LibreOffice, as I have to typo-check
these old documents (from ~1998 to 2006 or so) and modify them a bit, e. g. improve on them before
"archiving" them permanently as .pdf file. Anyway.
I wrote some ad-hoc ruby helper code and, for instance, auto-generated a "booklet" of about 660 pages
that document one particular subcontractor / client. That's a bit hard to navigate though. As a small
helper, I wanted to automatically label these, from 1 to 660 (duh). I had hoped that qpdf could be used
for that.
Unfortunately, as it is quite late right now, I may have to check tomorrow, but I was thinking, what if
qpdf could have a FAQ that could showcase such small use cases? Really simple todo-lists, e. g.
"I would like to do x, can you show me how to do so". Like a FAQ. Examples could also suffice, but
most of the examples that seem to go with qpdf seem to be fairly small-ish. I'd ideally love to have
a ton of examples, ideally in a single .md file, that showcase question-answer types, with a bit of
explanation. Perhaps this already exists, and I can not find it, in which case it would be nice to
make a link from the main README more prominently so. Perhaps it could be considered to improve
the working-examples a bit, to showcase what qpdf can do, in particular when someone either does
not know qpdf, or quickly forgets (I forget too quickly ... need to write this all down... which I forget
to do so, too :P )

One place this could be added would be https://github.com/tldr-pages/tldr in case @jberkenbilt doesn't prefer to keep these in the repo (and thus take over the maintenance burden).

As for a quick how-to guide, its basically the same answer. See #1245


Display error if using MotherDuck without db name

Open to any feedback!
We ran into an issue where connecting to all databases within MotherDuck did not play nicely with Tableau's auto-generated SQL. Tables were not getting fully qualified with database_name.schema_name.table_name (only schema_name.table_name). If there is a more elegant solution than requiring a database name for MotherDuck, I would be happy to rework this!
Thanks as always!
-Alex

I don't think there is a way to get three-level naming: https://tableau.github.io/connector-plugin-sdk/docs/metadata-enumeration.html
One other possibility is to change the default catalog in the Initial SQL.


WIP: Begin implementation of #355

Hi,
this is wip on issue #355 and for now it should compile but it does not work and I need to do some cleanup.
For now, could you just tell me if:

the name of the class are ok
should I use a probability grid inside ImagePointsProcessor? If yes I do not know how to use it correctly so could you elaborate on this?
in ProbabilityGridPointsProcessor, how should I create the ProbabilityGrid?

I signed it!

the name of the class are ok

ImagePointsProcessor seems unnecessary. I think you should concentrate on ProbabilityGridPointsProcessor.

should I use a probability grid inside ImagePointsProcessor? If yes I do not know how to use it correctly so could you elaborate on this?

Yes, I think you want to use it. Have a look at #387. We just implemented that the ProbabilityGrid can be resized. So you would create it at an arbitrary size, have something like GrowAsNeeded in your points processor when you process points. Inside Flush you would ComputeCroppedProbabilityGrid so the white space is removed. This is the data you want to serialize. Now there are many useful ways of serializing it:

As a PNG. I suggest doing this first. Please share code with XRayPointsProcessor as much as possible. Also keep in mind that we'd like to draw the trajectory onto this PNG eventually, so you need to keep some understanding how your cropped pixels relate to the map frame.
As PGM/YAML for ROS. Once 1) is done, a followup PR can add a PointsProcessor to cartographer_ros, that writes out a YAML and a PGM for the ROS map server. This code would reuse the implementation of WriteOccupancyGridToPgmAndYaml to get to ROS like data.
As a proto. I am not sure if anybody cares about the proto format for now, so let's skip this.

in ProbabilityGridPointsProcessor, how should I create the ProbabilityGrid?

I hope that is answered through #387.

For now I do not handle the trajectory as:

I am not sure that the current implementation fit with what you have in mind
I need to find how to do it. For now I think that I should start by adding proto::Trajectory like it is done in XRayPointsProcessor.

In ProbabilityGridPointsProcessor::Flush()  do you think that the message of  LOG(FATAL)... should contain probability grid instead of image?

Damien, thanks for the contribution! I fixed some minor nits and ran clang-format and then merged this. If you disagree with any of my changes we can discuss and change them in a separate PR again.
I see two followups for this PR:

The point 2. I mentioned above so that the occupancy grids can be used with map_server for ROS nodes. This would be a PR for cartographer_ros.
Drawing the trajectory into the image. I think I wrote something about this already, but GitHub seems to have eaten it? I was musing that you'd need to take the Trajectories similar to how XRayPointsProcessor does it and that it would be cool to write out an SVG or TIF or something else that supports layers, so that the bottom layer would just be the map, the layer above the Trajectories and so on.

Are you interested in tackling any of these?

If you disagree with any of my changes we can discuss and change them in a separate PR again.

No problem with your changes.

The point 2. I mentioned above so that the occupancy grids can be used with map_server for ROS nodes. This would be a PR for cartographer_ros.

To be sure I understand what you have in mind, the purpose is to be able to use it in the pipeline description file, no?

Drawing the trajectory into the image. I think I wrote something about this already, but GitHub seems to have eaten it? I was musing that you'd need to take the Trajectories similar to how XRayPointsProcessor does it and that it would be cool to write out an SVG or TIF or something else that supports layers, so that the bottom layer would just be the map, the layer above the Trajectories and so on.

For writing a SVG or TIF, you mean by hand or using a library? I do not know TIF but for SVG it is doable (embed the map in png and add a trajectory layer).

Are you interested in tackling any of these?

Why not and I am more interested in point 2 but as I have less free time to work on these I cannot guarantee that it will be done soon.

For writing a SVG or TIF, you mean by hand or using a library?

A library. We are using Cairo already and it does support SVG (https://www.cairographics.org/manual/cairo-SVG-Surfaces.html), not sure if it does support TIF and also not sure if it does support individual layers in images. That will require some research.

A library. We are using Cairo already and it does support SVG (https://www.cairographics.org/manual/cairo-SVG-Surfaces.html), not sure if it does support TIF and also not sure if it does support individual layers in images. That will require some research.

It is only for rendering SVG, not writting.

It is only for rendering SVG, not writing.

No, it does: use cairo_svg_surface_create_for_stream and use it similar to cairo_surface_write_to_png_stream.


prune global progress

Currently the tool shows progress-type indicator for the crate it is currently considering.
It would be helpful to also see a global progress indicator, showing how many total combinations it has detected, and how many of them are completed.
i.e. give the user some sense of how long the entire process will take.

really like the idea so I quickly implemented it into master would be great if you could have a quick look at it and see if it works as expected

It is good for medium size repos, but on larger ones, the global progress scrolls off the screen.
Still, I think this is good enough for now, because even for large projects, the user will have global progress at the beginning when they are most unsure about whether to let it run or not.

I think the easiest "solution" would be to just print that progress indicator at the bottom

just publish 0.9.0 that moves the progress bar to the bottom.


Application passwords CLI commands

Related to #1719
This PR add the commands token-list, token-remove and token-create to manage the application passwords.
>> token-create -share bvqoPVphGpchsDd:r -label share-home -expiration 2021-05-29
+------------------+-------------------------------------+------------+--------------------------------+--------------------------------+--------------------------------+
| TOKEN            | SCOPE                               | LABEL      | EXPIRATION                     | CREATION TIME                  | LAST USED TIME                 |
+------------------+-------------------------------------+------------+--------------------------------+--------------------------------+--------------------------------+
| 074136IMU2yRGnY5 | share:"bvqoPVphGpchsDd" ROLE_VIEWER | share-home | 2021-05-29 02:00:00 +0200 CEST | 2021-05-28 18:28:55 +0200 CEST | 2021-05-28 18:28:55 +0200 CEST |
+------------------+-------------------------------------+------------+--------------------------------+--------------------------------+--------------------------------+

Multiple share and path options are possible:
>> token-create -path /home:r -path /home/M:r -share CgAeSOEDmGeBrpc:w -label new
+------------------+-------------------------------------------------------------------------------------------+-------+------------+--------------------------------+--------------------------------+
| TOKEN            | SCOPE                                                                                | LABEL | EXPIRATION | CREATION TIME                  | LAST USED TIME                 |
+------------------+-------------------------------------------------------------------------------------------+-------+------------+--------------------------------+--------------------------------+
| I9J0bU7geBK28351 | path:"/home" ROLE_VIEWER, path:"/home/M" ROLE_VIEWER, share:"CgAeSOEDmGeBrpc" ROLE_EDITOR | new   |            | 2021-05-28 19:24:12 +0200 CEST | 2021-05-28 19:24:12 +0200 CEST |
+------------------+-------------------------------------------------------------------------------------------+-------+------------+--------------------------------+--------------------------------+

>> token-list
+--------------------------------------------------------------+------------+-------------------------------------+--------------------------------+
| TOKEN                                                        | LABEL      | SCOPE                               | EXPIRATION                     |
+--------------------------------------------------------------+------------+-------------------------------------+--------------------------------+
| $2a$11$qidTRIgv7RQKqX3RAm/pXOdK7SSWm.LKYyK124Jmv1ROhbS5vXrGy | share-home | share:"bvqoPVphGpchsDd" ROLE_VIEWER | 2021-05-29 02:00:00 +0200 CEST |
+--------------------------------------------------------------+------------+-------------------------------------+--------------------------------+

(token-list also support some flags to filter the output list, like show only expired, show all, filter by label, as well as long and short print)
>> token-remove $2a$11$qidTRIgv7RQKqX3RAm/pXOdK7SSWm.LKYyK124Jmv1ROhbS5vXrGy
>>

@ishank011

Can you also add the usage of these generated passwords in the description? You'll have to start the appauth auth driver and update the registry rules like this https://github.com/cs3org/reva/blob/master/examples/storage-references/gateway.toml#L18 https://github.com/cs3org/reva/blob/master/examples/storage-references/storage-public.toml#L11-L15

Can you also add the usage of these generated passwords in the description? You'll have to start the appauth auth driver and update the registry rules like this https://github.com/cs3org/reva/blob/master/examples/storage-references/gateway.toml#L18 https://github.com/cs3org/reva/blob/master/examples/storage-references/storage-public.toml#L11-L15

Updated, let me know if it is ok

@gmgigi96 looks good. But I meant that you could use the created password and show that it can only be used to access the resources present in the scope. For example
>> login appauth
>> stat /path/in/scope // Should proceed
>> stat /path/not/allowed // Should return permission denied

Also, can you add a new toml file to examples/storage-references with appauth auth? I'll merge it then

@gmgigi96 looks good. But I meant that you could use the created password and show that it can only be used to access the resources present in the scope. For example
>> login appauth
>> stat /path/in/scope // Should proceed
>> stat /path/not/allowed // Should return permission denied

Also, can you add a new toml file to examples/storage-references with appauth auth? I'll merge it then

Thanks @ishank011, I will make the changes this afternoon


python -m menumaker  Throwing error

Have an issue when trying to complile(?) the folder from both a txt and a yml file. It is most likely user error but i cannot figure out anything to make it work.
Screenshots Below:
https://i.imgur.com/4s1gcD1.png
https://i.imgur.com/WsLDJmQ.png
Thanks :D

Hi, do you mind posting the contents of demo.yml? This error is a problem with the code, but I can't be sure what's causing it until I know the circumstances of the error. Thanks :)


Custom serving for non-MXNet or ONNX models?

Hi,
My model is neither an MXNet nor ONNX model. I'd like to load the model artifacts, and write custom code to do some preprocessing and to invoke the loaded model. Is there a way to do this with MXNet Model Server?
Also, if I've written my own serving code, how does error handling work? For example: the input payload is bad so my preprocessing fails. How can I respond with a 400 status code and return the right error message in the response payload?
Thanks!

We are in the process of writing a document to bring your own DL framework
to MMS. We will publish this sometime next week. For now, to unblock
yourself, you could follow the custom service code(
https://github.com/awslabs/mxnet-model-server/blob/master/docs/custom_service.md).
This walks over how you could write your own handler/entry point to MMS.
For error handling part,

Error that your code handles needs to be bubbled up to the client. For
this you could add a custom error response string and pass it to MMS, it
takes care of forwarding this error response to the clients.
Errors that aren't handled by your code. If your code throws an
exception, or if the code doesn't return a proper list of responses , MMS
catches these errors and throws back a 503 error to the clients with a
response string saying "prediction failed".

You could refer to "predict" method in
https://github.com/awslabs/mxnet-model-server/blob/master/mms/service.py
for more info on how errors are handled.
Does this help?
On Fri, Feb 22, 2019, 9:33 PM andremoeller<EMAIL_ADDRESS>wrote:

Hi,
My model is neither an MXNet nor ONNX model. I'd like to load the model
artifacts, and write custom code to do some preprocessing and to invoke the
loaded model. Is there a way to do this with MXNet Model Server?
Also, if I've written my own serving code, how does error handling work?
For example: the input payload is bad so my preprocessing fails. How can I
respond with a 400 status code and return the right error message in the
response payload?
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/awslabs/mxnet-model-server/issues/757, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AiiLNMh5gp2KxvHlNWvwRg6RYo7rvnbCks5vQNK0gaJpZM4bNwfq
.

We are in the process of defining interface for returning a specific error code per request in the batch from the custom-service-code. I will tag this as enhancement for that reason.

OK, thanks, that is helpful. To clarify:
Right now, if I write my own service, I can specify the error response body, but the status code is always 503. MMS is working on a way for me to write my own service, tell MMS I want to respond with a 400 or a 415 or some other status code (along with my custom response body), so I can tell the client to modify their request rather than telling them that the server erred.
Is that right?
And as-is: if I were writing my own service, how would I specify my own error response body? I reread the custom service doc and it doesn't mention this -- could this be added to the custom service doc? Or is it documented elsewhere?
Thanks.

If there is an invalid request, the custom service code can send back
"invalid request" as a response, this will cause a custom error message
sent to the client. But, this will be a 200 http code. But, if you want a
non-200 code, simply throw an exception.  MMS will return a 503, with a
standard error message.
On Sat, Feb 23, 2019, 2:00 PM andremoeller<EMAIL_ADDRESS>wrote:

OK, thanks, that is helpful. To clarify:
Right now, if I write my own service, I can specify the error response
body, but the status code is always 503. MMS is working on a way for me to
write my own service, tell MMS I want to respond with a 400 or a 415 or
some other status code (along with my custom response body), so I can tell
the client to modify their request rather than telling them that the server
erred.
Is that right?
And as-is: if I were writing my own service, how would I specify my own
error response body? I reread the custom service doc and it doesn't mention
this -- could this be added to the custom service doc? Or is it documented
elsewhere?
Thanks.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/awslabs/mxnet-model-server/issues/757#issuecomment-466701507,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AiiLNFJzgU1TaBkAmQUpaGYYvzmqRBucks5vQbnxgaJpZM4bNwfq
.

In our current design, you can report your status code back to client in your service code via:
context.report_status(400, "Invalid input data")
This API is already available service code. Unfortunately, this implementation has not completed yet in our frontend. You still seeing 200 from client side in MMS 1.0
Will update this issue when we implemented this.


Job succesfully finishes in case if SaltMinion was busy with another job

it's notorious that SaltStack is not designed for concurrent task execution, and if one job was started at the time when another one is already running, the first one will be failed. I suggest that Jenkins SaltMinion plugin should treat this situation correctly.
Started by an SCM change
[EnvInject] - Loading node environment variables.
Building remotely on deployer (deploy) in workspace /var/lib/jenkins/workspace/DEPLOY_tarantool_id
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url gitlab@gitlab.pio.tv.ro:common/tarantool-schema.git # timeout=10
Fetching upstream changes from gitlab@gitlab.pio.tv.ro:common/tarantool-schema.git
 > git --version # timeout=10
 > git -c core.askpass=true fetch --tags --progress gitlab@gitlab.pio.tv.ro:common/tarantool-schema.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 2e39f343a7c32987bc890fd1ec2fcfdd9b37d2af (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 2e39f343a7c32987bc890fd1ec2fcfdd9b37d2af
 > git rev-list d0761fe60ff6e7bbf905da8fc017764bf4ccf611 # timeout=10
Sending JSON: [{"client":"local","tgt":"p-3-testmap.pio.tv.ro","expr_form":"glob","fun":"state.sls","arg":["mailpaas.tarantool.id"]}]
Running jid:<PHONE_NUMBER>3608909933
Waiting for 1 minions
2 minions are done
Response on state.sls mailpaas.tarantool.id for p-3-testmap.pio.tv.ro:
[{
  "outputter": "highstate",
  "data": {"p-3-testmap.pio.tv.ro": ["The function \"state.sls\" is running as PID 5055 and was started at 2016, May 25 14:36:08.806390 with jid<PHONE_NUMBER>3608806390"]}
}]
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Triggering a new build of ROOT_DEPLOY
Finished: SUCCESS

Just added this test case, and it appears that this was likely properly detected as of 1.7.0. Are you able to replicate on 1.7.1?

@mchugh19 this error is fixed too. Thanks, good job!


Franz preventing windows from going to sleep/stand-by

Describe the bug
I noticed my PC has problems going into stand-by mode when Franz is running. Typically I would troubleshoot this by running powercfg /requests in an admin command prompt, which showed me the following output:
powercfg /requests
DISPLAY:
None.

SYSTEM:
None.

AWAYMODE:
None.

EXECUTION:
[PROCESS] \Device\HarddiskVolume4\Users\Alex\AppData\Local\Programs\franz\Franz.exe
WebRTC has active PeerConnections

PERFBOOST:
None.

ACTIVELOCKSCREEN:
None.

So it seems Franz's WebRTC connections are preventing windows from sleeping?
Possibly same cause as #554?
To Reproduce
Steps to reproduce the behavior:

Have Franz running
Run powercfg /requests in an admin command prompt
Franz.exe will be listed as having WebRTC connections

Expected behavior
Franz should not have anything active which can prevent windows from sleeping
Desktop (please complete the following information):

OS: Windows 10 1803 x64
Chrome v71
Franz v5.0.0-beta.22

Any luck with fixing this one vyruz? I have the same thing going on... I'm not sure if it is Franz causing my system not to sleep, but I get the same result from 'powercfg -requests' and my system won't sleep unless I click sleep or use the hard button set for sleep. My screen times-out as it should but the system doesn't send itself to sleep.
Not sure if this part of the problem is related, but, if I hit a key or the touchpad just as the screen goes black it will come back... leave it any longer and ~99% of the time I can't get the screen to come back on and it will sit awake until I hard restart. Do you get that too, vyruz?


Allow customizing day cell value

Q
A

Bug fix?
no

New feature?
yes

BC breaks?
no

License
MIT

Changed option name to content
Changed click handler to use .parents() to find .day
Added generic test for content
Added test for clicking inside nested content

Anything else need done here?

Yeah, I would like to see the same feature for the others views (month, year, decade, ...) lookup for beforeShowMonth for month and callback inside _fill_yearsView() for others.
Ty

OK, I can do that for consistency and all that goodness. I'll fix the var name too.
Do you have a better suggestion for how to handle deeply nested clicks? I can duplicate the same thing I did for day -- target.parents(".day, .month, .year"), but that just seems non-optimal.

Do it for the fame ;)
target.closest() should be better performance wise I think, since it will stop at the first parent match.
It should be enough for now, we might break the click function in the 2.x, since binding events directly to the actual td will be easier to manage than catching any click anywhere on the picker (which by the way is a broken way of doing things because it does trigger the show event at any clicks).

Being able to customize content within each day would be really awesome. I am trying to display counts of something in each day but haven't been able to figure out how.

@Azaret Can you review the pull request again? Thanks!

@programcsharp I would like to get this PR finished and have it shipped with 1.7.0! :rocket: Do you need to do any work here? Please rebase the branch against the current mast and can you check the failing travis build? Thanks!
@Azaret Time for a last review? Thanks!

OK, lemme see what I can do here.

Fixed the dupe variable name issue @Azaret mentioned. Should be ready to go now.
I don't have time to add the month/year/decade/century implementations.

Thanks @programcsharp! I will look into this to see what I can do to have this feature shipped with 1.7.0

I guess we can push it in RC2 @acrobat

@Azaret Yes I will merge this today and tag a new RC release. But we need to try to implement this feature for all beforeXxx methods, I hope to find some time for this!

Thanks @programcsharp! The missing parts for beforeShowMonth (yeay, decade, etc) will be done in #2120


Adding TAF PROD team users to github listed in DBDAART-4917

What is this and why are we doing it?
In preparation for TAF PROD, we're making a modification to the CODEOWNERS file to add the TAF PROD users.

Link to the Jira ticket for this change: https://jiraent.cms.gov/browse/DBDAART-4917

What are the security implications from this change?
There is always a security concern when modifying the CODEOWNERS file but we've recently changed the process to have 2 reviewers on a PR and the users added are part of the TAF project and given to us as stated in DBDAART-4917. There is one user who does not yet have a github account and will need to go through the project to get the job code and be added and approved with an additional PR from the TAF PROD team.
How did I test this?
Verified the usernames from 4917
Should there be new or updated documentation for this change? (Be specific.)
No.
PR Checklist

[x] The JIRA ticket number and a short description is in the subject line
[x] My code follows any applicable style guides
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation

@FICU-tensileai
Could you confirm that Heidi is supposed to be missing from this PR?
I went to Xiao Barry's page: https://github.com/xiaobarry, and BRSC-Mathematica is listed. Should xiaobarry and fumanjie have their EUA-Company name combo specified?

Well, I didn't even realize that it parsed it like that! The users show up but it appears they will need to be in the proper group(s) via job codes, etc. Will put this on-hold until then.

Ok, I've send the instructions over to those who still need to get into the CMS github groups. We'll need to wait before we can correct this file.

The decision is to put the 2 codeowners that have accounts to LIVE now and they will add the others on the TAF PROD team when ready.


Question: Incorrect span operation name

(Disclaimer: I am fairly new to Node.js and express so please pardon me if I am missing something silly here).
I am going through the book "Practical Node.js" and tried to inject the express middleware in this example.
I am using a Jaeger client and injected the middleware like this.
The app has two operations: "/" and "/users". However, when I look at the spans in Jaeger, the span operation name is set to "/" for both cases. Jaeger screenshot
The issue is that while the http.url is correctly set to "/users", the span operation name is set to "/". On debugging the code, I found that the span is set correctly when the request is first intercepted but reset to "/" in the "finishSpan" function here.
From what I can understand, this seems related to how the author has setup the users route.
So the question is whether the route setup is some sort of anti-pattern or is there a way to "hint" the middleware to not fix the operation name?

I ran into this as well - and I'm not sure that it really is a bug, but a reflection of the way
It is desirable to make the operation the route and not the full path, since the full path might have IDs that are variable in it. But it would be nice to get the entire route path... but the req.route object does not have that stack of routes available.
Maybe you would have to monkeypatch the Express app route() function to keep a stack of the routes applied to a request and then unwind that to build a full route path in finishSpan()?


[feat] chatAdministrators call

https://core.telegram.org/bots/api#getchatadministrators

Thanks! :raised_hands:


Dot Keys environment missing param

Fixes the following error i was getting
bundler: failed to load command: rackup (/Users/nakhbari/.rbenv/versions/2.3.3/bin/rackup)
ArgumentError: wrong number of arguments (given 1, expected 2)
  /Users/nakhbari/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/dotenv-2.4.0/lib/dotenv/environment.rb:7:in `initialize'
  /Users/nakhbari/Documents/fastlane/ci/app/services/dot_keys_variable_service.rb:34:in `new'
  /Users/nakhbari/Documents/fastlane/ci/app/services/dot_keys_variable_service.rb:34:in `reload_dot_env!'

Yes, this is needed for the new bundler, I merged this back with https://github.com/fastlane/ci/pull/740 and was reverted back with https://github.com/fastlane/ci/pull/757
Looks like we're gonna have to do runtime checking to be compatible with both version of dot env or bundler 👍

@KrauseFx Not sure i understand. Is this sufficient to merge or is there another case we're missing?

The change was introduced with version 2.3.0 or 2.4.0 (hard to tell from the GitHub UI) see https://github.com/bkeepers/dotenv/commit/7f82f73420bb46a06bb3a3e2052c3b3a1f34a0f5
@nakhbari I'll update your PR to make this work for everyone 👍

Alright, PR is updated, and also added comments to the dot env repo https://github.com/bkeepers/dotenv/pull/345

@KrauseFx are you sure true is the proper value there? Your PR that originally utilized that parameter had it set to false -> https://github.com/fastlane/ci/pull/740/files#diff-9ddf922c96bbb9ee3aeaeb8f2db5e1c6R33 .

I'm not sure, it seems like either value is fine

Merging this now


Fix broken build

Oh my sorry about that. These happen since we don't rebase PRs before merging so it can be that a "green" PR is actually red after another PR is merged. Given this happens infrequently, I think it's ok and not worth adding some additional friction.
I also pushed a fix for a remaining instance of .copy


Document Dashboard profile manager

Update dashboard to include profile manager.
Related issue:

https://github.com/threefoldtech/info_grid/issues/217

Nice work @zaelgohary
@AhmedHanafy725 I am merging the PR as the section Generate account has been added.


Create an API for Haptic Driver Devices

Discussed in https://github.com/zephyrproject-rtos/zephyr/discussions/64942

Originally posted by rriveramcrus November  7, 2023
Introduction
Add a kernel device driver API for interacting with haptic driver devices.
Draft PR: https://github.com/zephyrproject-rtos/zephyr/pull/66629
Problem description
Haptic devices are integrated circuits that drive a linear resonant actuator (LRA) when an event occurs to provide the end user haptic feedback. A haptic event can be triggered via GPIO or through a control port. The haptic event sources can be simple PWM inputs, PCM inputs such as I2S/TDM, an integrated buzzer, tables of waveforms from ROM, or synthesized waveform tables in RAM.
There is currently no purpose-built API in Zephyr for interacting with haptic driver device or facilitating haptic events.
Status Quo
Zephyr OS
No known subsystem catering to haptic driver devices. The input subsystem is focused on mice, keyboards, and other HIDs.
The question of how to accomodate haptic LRA drivers has come up in the past (#22486). An embedded controller runinng Zephyr has various haptic feedback applications.
Linux Kernel
Haptic driver devices have been living in the Input Force Feedback subsystem as miscellaneous devices. This subsystem was not originally meant for haptic driver devices, but rather joysticks, mice, keyboards, etc.
It would not be ideal to continue this development architecture in Zephyr and serves as an opportunity to put together something better for haptic driver devices.
Proposed change

Functionally these devices are similar to audio codecs and the proposed haptic_driver_api takes inspiration from the audio_codec_api. The haptic waveform events are to be triggered through a playback state machine with three states and a corresponding handler for each state.

To begin haptic event playback the start_event handler is to be called. The device driver must begin playback of the haptic event that is presently configured. Once complete, the stop_event handler is called to stop playback of the haptic event. Haptic events in a system do have priority and the proposed API offers a preempt_event handler for preempting playback of an event. When starting or preempting an event, an event identifier is passed to the handler. This is useful for configuring the device to playback from the appropriate source,
Configuration of the device at runtime is facilitated through the set_property handler. Drivers that wish to cache multiple settings from the set_property handler and apply the settings atomically can make use of the apply_property handler.
Driver Examples
The code snippets below serve as examples of how a client of the API would interface.
<snip>

/* Zephyr device boot time data, read only */
struct cs40l26_haptics_config {
    struct i2c_dt_spec i2c;
    struct gpio_dt_spec gpio1;
    struct gpio_dt_spec gpio2;
    struct gpio_dt_spec gpio3;
};

/* Zephyr runtime data, R/W */
struct cs40l26_haptics_data {
    uint32_t wf_index;
    uint8_t gpio_index;
    haptics_source_t configured_for;
};

<snip>

static const struct haptics_driver_api cs40l50_driver_api = {
    .start_output = &cs40l26_start_output,
    .stop_output = &cs40l26_stop_output,
    .preempt_output = &cs40l26_preempt_output,
    .configure = &cs40l26_configure,
    .set_property = &cs40l26_set_property,
    .apply_property = &cs40l26_apply_property,
}

<snip>

<snip>

static int cs40l26_configure(const struct device *dev, struct haptics_config *haptics_cfg) {
     const struct cs40l26_haptics_config *cfg = dev->config;
    const struct cs40l26_haptics_data *data = dev->data;
    int ret;

    switch (haptics_cfg->source) {
    case HAPTICS_SOURCE_ROM_BANK:
        data->wf_index = CS40L26_CMD_INDEX_ROM_WAVE | haptics_cfg->source_config->rom_index;
        break;
    case HAPTICS_SOURCE_GPIO_BANK:
        data->gpio_index = haptics_cfg->source_config->gpio_index;
        break;
    case HAPTICS_SOURCE_I2S:
        /* too lazy to figure what to do here */
        ret = cs40l26_configure(dev, haptics_cfg->source_config->i2s);
        if (ret < 0) {
            return ret;
        }
    default:
        return -ENOTSUP;
    }

    data->configured_for = haptics_cfg->source;

    return 0;
}

static int cs40l26_start_output(const struct device *dev) {
    const struct cs40l26_haptics_config *cfg = dev->config;
    const struct cs40l26_haptics_data *data = dev->data;

    switch (data->configured_for) {
    case HAPTICS_SOURCE_ROM_BANK:
        return i2c_reg_write(&cfg->i2c, CS40L26_DSP_VIRTUAL1_MBOX_1, data->wf_index);
    case HAPTICS_SOURCE_GPIO_BANK:
        return cs40l26_set_gpios(dev);
    case HAPTICS_SOURCE_I2S:
        return cs40l26_i2s_en(dev);
    default:
        return -EINVAL;
    }

    return 0;
}

<snip>
```</div>

CC: @fabiobaltieri

Hi Marcus, thanks for the proposal. I've been peeking at some datasheet and I'm trying to understand if there's even enough commonalities between haptic controllers of different vendors to justify a subsystem or if maybe this should live as misc device driver that supports multiple p/n from the same vendor that are designed around a common model.
Do you have any insight on that? I'm thinking it may help to add some details and higlight how the API would cover various devices, maybe comparing the CS40L26 (or another device from CL) to a DRV2605L (it seems to be a popular part number in the QMK world, just got myself one to play with :-)).
At first sight from me I think it may make sense, there's certainly overlap on the start/stop output APIs, but the interesting part is how the whole configuration and property (is there a difference?) may pan out. Could you expand on those?

Hey @fabiobaltieri,
Thanks for taking a look! I added a comparison table in the Problem Description section. The playback controls and input sources are very similar across the board but as you mentioned the controls set through properties can really differ.
The intention with the configure would be to atomically configure the haptic driver for a desired input source. If it is a I2S input source the would mean configure clocks and a data interface. If it is ROM input source there's little to do besides make sure the command is valid.
The intention of the properties was more so for facilitating LRA calibration, configuring the integrated boost converter, setting protections, etc. I think some basic properties can be enumerated in the haptics API but it may be wise to allow it to be extended beyond that with vendor specific properties in a separate library.
An unknown for me is how to handle waveform synthesis. Should I just expose the various controls of the hardware synthesizer as properties or should the API try define and take in standardize waveform instructions, parse them, and issue them in the configuration handler? I think it's more of a question of what is more Zephyr-like.

Right but the configuration part of those devices I reckon is

very different between vendors
very similar withing the same vendor or at least product category
probably mostly set at init time and left as is

So I'm thinking that it may not be much sense to try and enumerate a ton of properties where they are implemented in groups, but rather just implement the basic common stuff (start/stop effect, not sure what else) and then have the configuration either handled in the driver init or with a per-driver extension that can be shared between a group of drivers.
The playback part I'd imagine being the more intersting part, not sure what to do about it but for i2s I'd imagine it's just use the i2s subsystem, for RAM wavefrom maybe just a simple write_samples API?

@rriveramcrus do the subsystem api with the common stuff and a sample driver using driver specific APIs for configuration, there's few of those in code base, for example https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/drivers/sensor/ccs811.h.

hi rriveram, great suggestion & overview
suggest to also add upstream events to the haptic_driver_api that can be used for driver IC's offering protection features like over temp, current monitoring and various diagnostics events / alerts.
these could be tied to real irq inputs or soft irq's based on some condition. also neat for zephyr shell when working with tuning and bring-up

Actually if we could push to the following week, June 11th, that would work better.


Support for cli project

nv is not defined in cli project

Did you find a solution? I'm experiencing the same issue.

not yet


Open Source All The Things™

After @cyphactor expressed interest in fixing things in Captured I figured it was finally time to release all the source under MIT license. Something I've been meaning to do for years, but just procrastinated.
I plan on keeping it available for sale in the Mac App Store, but happy for people to clone-n-build it for themselves it they'd prefer.

TODO:

[ ] Add LICENSE
[ ] Make Public
[ ] Contributor Guide
[ ] Document Build Process


Funnel values are too small for visualization

The last values on my funnel are too small and it makes the representation impossible to read.
Is there any adjustments I can make so that those values can be legible?
Thanks!

Hello @acanto95
You can customize values in css. In Your case main values have a class called .text-main and percentages have .text-second. To change the color You need to use fill atribute because it is svg element, size You can adjust with font-size.
Here You can have jsfiddle example of how this can be done:
https://jsfiddle.net/dariuszlacheta/zhb7kcnp/2/

Hi @acanto95 ,
We've just published a fix for this issue -<EMAIL_ADDRESS>Please use the minimalSize property to set the minimum width of the step [in pixels].
Sample
new KeenDataviz({
          container: '.chart-demo-funnel',
          type: 'funnel',
          funnel: {
            minimalSize: 200,
          },
          results
        })

Thank you @adamkasprowicz
It worked fined, I just had to upgrade to the latest version and add "minimalSize" .


Prepare 4.0.0 release

Coverage remained the same at 99.602% when pulling 1764159dd348a1fb93bbef465148edea2eeabfdd on release-400 into 9dc513f2d8fc400e1579faab61ec1525c23dcdd8 on master.


Add external binaries version to docker info

Signed-off-by: Kenfe-Mickael Laventure<EMAIL_ADDRESS>--
This should prevent us to having to request that information on new issues.

@MHBauer
It's mostly for users that are not using docker official packages. Or to spot easy to figure out "error" like them having replaced one of the binaries for testing and forgotten about it.
It's also nice to have it all in one place. It's just information.

I think this should be solved by having --version flag for all binaries.

@LK4D4 not all users have access to their daemon host
Also, I think having users only run 1 command to get this information is preferable than asking them to run --version on 3 of them.

from a "support" perspective, I think it'd be great to have it all in docker info, but just my 0.02c  (haven't looked at the implementation)

I do agree with @thaJeztah and @mlaventure, having all in docker info makes sence (for remote and also because it's one and only command then 👼)

Needs a rebase

LGTM

LGTM

This is missing docker-proxy

@jhowardmsft I'll make a PR to make those new fields unix only
@runcom it looks like docker-proxy doesn't have a --version or equivalent yet


supportActionBar and setDisplayHomeAsUpEnabled(true)

When I use collapsingtoolbarlayout-subtitle 0.8.0 and update to Android O and with
supportActionBar?.setDisplayHomeAsUpEnabled(true)
it doesn't looks nice

or

you can follow https://github.com/hannesa2/collapsingtoolbarlayout-subtitle/tree/Android3_setDisplayHomeAsUpEnabled_true

Should be fixed with version 26.1.0 as stated on attached issue. Although I haven't tested that navigation icon. Please try version 26.1.0 and let me know it still hasn't been fixed.

works like a charm. Thank you !


Code cleanup

I have done most of the needed cleanup, but I left out a few, intentionally.
A few issues I left out include:

Deprecation warnings - these could be resolved separately.
Warnings involving Ecto queries - these could also be resolved separately; I didn't want to touch the queries
Missing schemas, especially Home.Post schema which is referrenced in most places but it doesn't exist - there is another Post schema on a different namespace, so, I wan't sure if that was the one being referrenced.
Some undefined function and module referrences that I just didn't want to remove - maybe I will do it in another PR.

NOTE: Having tests would have really helped catch any regressions, but I took my time and ran the application to ensure everything was working as before (not guaranteed though :smile:).

I have done most of the needed cleanup, but I left out a few, intentionally.
A few issues I left out include:

Deprecation warnings - these could be resolved separately.
Warnings involving Ecto queries - these could also be resolved separately; I didn't want to touch the queries
Missing schemas, especially Home.Post schema which is referrenced in most places but it doesn't exist - there is another Post schema on a different namespace, so, I wan't sure if that was the one being referrenced.
Some undefined function and module referrences that I just didn't want to remove - maybe I will do it in another PR.

NOTE: Having tests would have really helped catch any regressions, but I took my time and ran the application to ensure everything was working as before (not guaranteed though 😄).

Thanks man, It was great work


[6.x] Improve container

This PR improves the isShared() and getConcrete() methods of the container class.

The current isShared() method:
public function isShared($abstract)
{
  return isset($this->instances[$abstract]) ||
         (isset($this->bindings[$abstract]['shared']) &&
         $this->bindings[$abstract]['shared'] === true);
}

We don't need to go one level deeper to check the existence of the shared value because that value always exist as long as the corresponding $abstract key exists. The shared parameter is set a default value as false.
Changing to this would be better:
public function isShared($abstract)
{
  return isset($this->instances[$abstract]) ||
         (isset($this->bindings[$abstract]) &&
         $this->bindings[$abstract]['shared'] === true);
}

Just like what we did with the current getConcrete() method.
...
if (isset($this->bindings[$abstract])) {
  return $this->bindings[$abstract]['concrete'];
}
...

The current getConcrete() method:
protected function getConcrete($abstract)
{
  if (! is_null($concrete = $this->getContextualConcrete($abstract))) {
    return $concrete;
  }
  if (isset($this->bindings[$abstract])) {
    return $this->bindings[$abstract]['concrete'];
  }
  return $abstract;
}

It would be cleaner when utilizing the Null coalescing operator
protected function getConcrete($abstract)
{
  if (! is_null($concrete = $this->getContextualConcrete($abstract))) {
    return $concrete;
  }

  return $this->bindings[$abstract]['concrete'] ?? $abstract
}

Thanks for your pull request to Laravel!
Unfortunately, I'm going to delay merging this code for now. To preserve our ability to adequately maintain the framework, we need to be very careful regarding the amount of code we include.
If possible, please consider releasing your code as a package so that the community can still take advantage of your contributions!
If you feel absolutely certain that this code corrects a bug in the framework, please "@" mention me in a follow-up comment with further explanation so that GitHub will send me a notification of your response.


[Question] label jason file format error

:question: Question

I am trying to run the code on the Task010_Colon data. The preprocessing script in Task001_Decathlon/ does not include the code for generating the .jason file for each training segmentation file. I generated those .jason files based on the description in "Label Format" section. When I ran "python preprocess.py Task010_Colon" it gave the following error message.
File "/opt/code/nndet/nndet/utils/check.py", line 62, in wrapper
return func(*args, **kwargs)
File "preprocess.py", line 388, in main
check_data_and_label_splitted(
File "/opt/code/nndet/nndet/utils/check.py", line 179, in check_data_and_label_splitted
raise ValueError(f"Expected {mask_info_path} to be a raw splitted "
ValueError: Expected /opt/data/Task010_Colon/raw_splitted/labelsTr/colon_001.json to be a raw splitted mask info path but it does not exist.
It seems that some other data is expected in the .jason file, which is not described in the "Label Format" section. Do you have any suggestions on how to address this issue? Or could you recommend a script for generating the jason file for each training segmentation?
Thanks,
Hongzhi Wang

Dear @hongzhiwang3 ,
the script will only prepare the dataset.json and the data. The labels (inlcuding the jsons) can be downloaded from the link written in the readme.
Best,
Michael


Add XML doc generation

Adds a line to the fsc response file that will trigger the compiler to generate XML documentation when GenerateDocumentationFile is set to true.
As a workaround, the line can be added directly to an fsproj file to generate documentation. Including it in the standard F# targets makes more sense, though.

thx @neoeinstein


No function named "ReasongingTypeAccCalculator".

First of all, thanks for your amazing work.
I'm trying to analyze your code.
Unfortunately, I found the missing function "ReasoningTypeAccCalculator.".
Specifically in
EgoTaskQA/main_end2end.py
line 29, from baselines.utils.utils import ReasongingTypeAccCalculator
I'll look forward to your response.
Thank you.

I found that on the official repository of EgoTaskQA.
I hope this can be helpful to others.
class ReasongingTypeAccCalculator():
def __init__(self, reasoning_types):
        '''
        params: reasoning_types: list of strings
        '''
        self.reasoning_types = reasoning_types
        self.true_count_dct = {}
        self.all_count_dct = {}
        self.acc_dct = {}
        for reasoning_type in self.reasoning_types:
            self.true_count_dct[reasoning_type] = 0
            self.all_count_dct[reasoning_type] = 0
            self.acc_dct[reasoning_type] = 0

def update(self, reasoning_type_lst, pred, label):
        '''
        params: reasoning_type_lst: list of list of strings
        '''
        res = (pred == label)
for i, q_reasoning_types in enumerate(reasoning_type_lst):
            for reasoning_type in q_reasoning_types:
                if res[i]:
                    self.true_count_dct[reasoning_type] += 1
                self.all_count_dct[reasoning_type] += 1

    def reset(self):
        for reasoning_type in self.reasoning_types:
            self.true_count_dct[reasoning_type] = 0
            self.all_count_dct[reasoning_type] = 0
            self.acc_dct[reasoning_type] = 0

    def get_acc(self):
        for reasoning_type in self.reasoning_types:
            if self.all_count_dct[reasoning_type] == 0:
                self.acc_dct[reasoning_type] = 0
            else:
                self.acc_dct[reasoning_type] = self.true_count_dct[reasoning_type] / self.all_count_dct[reasoning_type]
        return self.acc_dct


Caused by: Operator >= cannot be used with a wildcard version specifier

using uv pip install -r "requirements_versions.txt"  once gets to torchsde==0.2.5 in the dependencies,
it pulls in the metadata from the wheel which looks like this:

Metadata-Version: 2.1
Name: torchsde
Version: 0.2.5
Summary: SDE solvers and stochastic adjoint sensitivity analysis in PyTorch.
Home-page: https://github.com/google-research/torchsde
Author: Xuechen Li
Author-email<EMAIL_ADDRESS>License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: ~=3.6
Requires-Dist: boltons (>=20.2.1)
Requires-Dist: torch (>=1.6.0)
Requires-Dist: trampoline (>=0.1.2)
Requires-Dist: numpy (==1.19.*) ; python_version < "3.7"
Requires-Dist: scipy (==1.5.*) ; python_version < "3.7"
Requires-Dist: numpy (>=1.19.*) ; python_version >= "3.7"
Requires-Dist: scipy (>=1.5) ; python_version >= "3.7"

UNKNOWN

i receive the following error:
34.42 Command: uv pip install -r "requirements_versions.txt"
34.42 Error code: 2
34.42 stderr: error: Failed to download: torchsde==0.2.5
34.42   Caused by: Couldn't parse metadata of torchsde-0.2.5-py3-none-any.whl from https://files.pythonhosted.org/packages/73/8d/efd3e7b31ea854d0bd6886aa3cf44914adce113a6d460850af41ac1dd4dd/torchsde-0.2.5-py3-none-any.whl.metadata
34.42   Caused by: Operator >= cannot be used with a wildcard version specifier
34.42 numpy (>=1.19.*) ; python_version >= "3.7"

current uv platform:

docker with Python 3.10.12 in a uv env

current uv version (uv --version):

latest uv version in pip

Just linking to the related issue for tracking purposes https://github.com/astral-sh/uv/issues/1477

thanks @zanieb

It hasn't been released. We haven't released a new version since the fix was merged.

oh! okay, my mistake , saw the build from yesterday and inferred it was included..


Specifying command-line argument with ARG_ fails for values containing "="

Hi there,
Took a look at docker-flow-monitor recently and ran into the following problem:
If a value contains an "=" the command-line argument is truncated.
Example:
ARG_LOG_FORMAT="logger:stdout?json=true"
results in:
-log.format="logger:stdout?json
Clearly, the issue originates in prometheus/util.go:getArgFromEnv(): Environment variables in the form NAME=VALUE are split at "=" and only the first two parts are considered.
Thanks in advance for a fix!

It's fixed in the release 17.10.04-19. Can you please try it out and let me know if it works as expected?

Works perfectly! Thanks for the quick fix, this is much appreciated.


\orcidlink not worked !

Description
\usepackage{orcidlink}
\orcidlink{xxxx-xxx-xxx}
not worked !!!
(Optional:) Please add any files, screenshots, or other information here.
No response
(Required) What is this issue most closely related to? Select one.
Other
Internal issue ID
9fd6d89e-c78d-4a27-a2b8-d5c5c11f019e
Browser
Chrome/<IP_ADDRESS>
Device Type
MacBookPro

duplicate of #1158


problem with MZFormSheetController

My app use libs MZFormSheetController(https://github.com/m1entus/MZFormSheetController)
when notification appear after MZFormSheetController opened
MZFormSheetController will hide after HDNotificationView has show
and when HDNotificationView hide MZFormSheetController will show again

Both two libraries are using key window as superview ==> You should make some configs. Thanks for your feedback


Add Styled OpenInNewIcon Component

This PR adds a styled OpenInNewIcon component. It is used in different cases when a clickable button directs users to a new window.

Thanks @terrymyc!


How to debug source on OS X? my problem is output path

Node Version: 8.9.4
Platform: OS X 10.11.4
Compiler:

Apple LLVM version 7.0.0 (clang-700.0.72)
Target: x86_64-apple-darwin15.4.0
Thread model: posix

xcode 7.0.1

I have read this issue #316 .
My problem is that after I generated the project with the command node-gyp configure - -f xcode.
I clicked run and the resulting executable was not in the directory build / Release.
here is the real path.

Using the command node-gyp configure - -f xcode, what should I do to get the correct output path build / Release / xx.node?
thanks a lot.

If you just want to debug with lldb, use node-gyp rebuild --debug.  The add-on ends up in build/Debug.

However, I want to use xcode debug add-on, the problem is that the compiler path is not correct, how do I do? thx @bnoordhuis

I think the answer is "you don't", except for teaching your JS code to load it from a different location.  Xcode projects have their own conventions.

@bnoordhuis ,thanks for answer.I remember the build path before is normalbuild/Release | build/Debug,after upgrading node from 6.x to 8.x there is that problem.( WTF build path)

When I changed the node back to v6.9.4, the build path was expected.☹

So, is this a node-gyp bug?🤕

No.

after node-gyp configure -- -f xcode, I open Xcode and edit the Scheme to set the executable to node (by default in the /usr/local/bin/node directory) and the argument to point to the .js file I want to load (I use an absolute path).
Then in the Build Settings, Build Locations, Per-configuration Build Products Path: replace $(BUILD_DIR) with build. This will put the generated .node file in the directory where node will search.
I'm using Xcode 9.2, macOS High Sierra 10.13.3, node v9.5.0 and node-gyp v3.6.2

@lathoub  thanks for answer, this works.


Adding requirements which are not explicitly imported using import statement

What is the best way to add requirements such requirements to the file automatically with pipreqs?
Example:
beatifulsoup4 can use lxml as an html parser, but it's not imported by my scripts and as such pipreqs won't include it in requirements.txt
from bs4 import BeautifulSoup
soup = BeautifulSoup(start_page.text, "lxml")

another example is sqlalchemy using pyodbc to connect to SQL Server. Pyodbc is required for the script to run but it's not explicitly imported and pipreqs misses it.
import sqlalchemy
engine = sqlalchemy.create_engine(
    "mssql+pyodbc://INSTANCE/DB?trusted_connection=yes&driver=ODBC+Driver+17+for+SQL+Server"
)

What should I do in this case, as I'm running pipreqs automatically as part of deployment and it removes pyodbc and lxml from requirements.txt...

Also have this issue.

I am currently working on a solution to the issue you raised. However, I have encountered a problem with my implementation. The solution I am trying to implement only works if the function is directly called, or if the nonexistence of the package  raises a ModuleNotFoundError. I am still exploring different solutions to this problem, but unfortunately, I do not see any other valid solution to keep track of the packages that are being called.

I'm just adding another example where openpyxl is not detected as a requirement:
df = pd.read_excel(file, dtype=str, engine='openpyxl')


Is the project abandoned?

What problem are you facing?
The repo has yet to be updated in the last two years.
How could Crossplane help solve your problem?
I wish I could use it, but I want to be sure the project is fully supported.

@hasheddan, could you please take a look?

Hey @pierluigilenoci, I would recommend you to use upjet. You can use it to generate the GitHub provider from Terraform.
By generating, you will have more coverage of resources in GitHub

@Feggah what about GitHub Provider from Coop Norge?
https://github.com/coopnorge/provider-github

I don't know it. Feel free to check how it's maintained opening an issue there

@Feggah, should this project be migrated to upjet? What is the intent of upset in relationship to having Provider repositories?

Discussion about the future of this provider can be found in https://github.com/crossplane/crossplane/discussions/5435 - feel free to add any commentary/opinions there 🙇♂


New 0.18 release

Looks good to me, but before doing so, please update gir/gir-files submodules and regen then backport theses commits to 0.18.

Looks good to me, but before doing so, please update gir/gir-files submodules and regen then backport theses commits to 0.18.

This was done already


Adding generic Wait (polling) function

Coverage decreased (-0.7%) to 82.488% when pulling 91b71a2ab5c8e5efba568fbeaa3432d878df267c on wait into c5db886da0a995f0166c594552d596c7d0144b86 on master.


customSelect doesn't support multiple column names

My  table looks like following:
class Contacts extends Table {
  TextColumn get phone => text().nullable()();
  TextColumn get name => text().nullable()();
  BlobColumn get avatar => blob().nullable()();
  BoolColumn get isGroup => boolean().withDefault(Constant(false))();
  TextColumn get uuid => text()();
  @override
  Set<Column> get primaryKey => {uuid};
}

While running of thecustomSelect:
customSelect(
      "SELECT phone , isgroup "
      "FROM contacts c "
      "WHERE c.uuid in ('$param')",
    )

I got the following error:
Moor: Sent SELECT phone , isGroup FROM contacts c WHERE c.uuid in ('7613dfce-898f-4e22-9bec-8b4176c29995','69c2b05c-86a3-44b4-9187-fd49192ce07a')
E/SQLiteLog( 6887): (1) no such column: isGroup

My purpose I don't want to load all fields

Moor converts the column name from Dart into camel_case, so your Dart getter isGroup would be called is_group in sql. So if you use
customSelect(
      "SELECT phone , is_group "
      "FROM contacts c "
      "WHERE c.uuid in ('$param')",
    )

everything should work.
I know this can be annoying, but it would be a massive breaking change to change that behavior now. By the way, you can express the same query using "compiled custom queries", so something like:
@UseMoor(
  tables: [...],
  queries: {
    'phoneAndGroup': 'SELECT phone, is_group FROM contacts c WHERE c.uuid IN :uuids',
  },
)

will generate a Future<List<PhoneAndGroupResult>>(List<String> uuids) method that you can use. Moor can then catch sql errors at compile time (it would warn about a isGroup column not existing and suggest replacing it with is_group).
Let me know if that didn't fix your problem or you have any other questions :)


http: fix metadata bug with local replies

Commit Message: http: fix metadata bug with local replies
Additional Description: When Filter1 returns StopIteration from decodeHeaders ContinueAll from decodeMetadata, and Filter2 does sendLocalReply from decodeHeaders, it triggers an ASSERT in decodeMetadata, because metadata continues to be decoded after sendLocalReply from headers. This PR fixes that bug.
Risk Level: low
Testing: integration testing
Docs Changes: none
Release Notes: none

/retest

/assign @alyssawilk for Metadata review

/assign @alyssawilk

Sure; does default-on sound reasonable?

oops needs main merge.  adding in @nezdolik for !google OK on this

Looks good to me, thanks! (modulo minor nit)


Make the journal an immutable log by storing completions separately

Implementing new SDKs could become easier for the journal would be an immutable log of journal entries and completions that are stored separately. This would allow us to remove the need for completable and non-completable journal entries. It could also help with implementing deterministic futures since we record in which order the journal entries are completed.
One problem that might arise is that with this change, there will be two components that append to the journal: the runtime which appends completions and the SDK appending journal entries. Right now, only the SDK is allowed to append journal entries which makes it quite simple to keep the runtime and SDK view on the journal in sync.
In order to solve this problem, the SDK would probably need to be able to re-order the tail of its journal in case there were completions that were appended before the last journal entries.
A minor disadvantage is that the runtime will lose the cheap capability to check whether a journal entry was completed or not.
More details on how an immutable log can simplify the SDK implementation are needed (Stephan, Giselle).

This task is not really actionable right now, will close this.


Update for latest cursive

The version of cursive currently specified in Cargo.lock had a few bugs, now solved on the latest master, so I ran cargo update.
TextView has also been updated, it doesn't handle scrolling anymore; this is added with .scrollable() (brought by traits::Scrollable).
As a result, scrolling like crazy with the mouse should be faster, and not cause as much visible artifacts.

Sweet! Merged,


macOS Fixes / Larger Build Matrix

feat: Expand build matrix to include newer Bazel Versions:

Include all Bazel releases from 0.9.0 - 0.13.0
Skip OSX Failures on Bazel < 0.12.0 (see https://github.com/bazelbuild/bazel/issues/4794)

fix: Incorporate OSX fix from bazelbuild/bazel tools/cpp/osx_cc_wrapper.sh@f98a7a2f

Also includes /usr/bin to the clang search path to access the linker in Bazel 0.12+
Caveat: The macOS build is less hermetic, and relies on system binutils and libraries.

fix: removal of cc_inc_library
fix: Fixes #11 by removing libunwind for now

This will fail for OSX builds with Bazel <= 0.12.0, I am not sure that statically linking gtest is the correct approach here to because this issue has a greater scope in other projects.
Internal ref: ML-1330

3764b99 replaces the -B/usr/bin argument to clang and specifying a search path of tools/cpp/tool_wrappers/mac which has a symlink to /usr/bin/ld to reduce the unintended consequences of including the larger scoped path.


Test docker documentation and container

Using the documentation in installing docker wiki try

install DockerDesktop (Mac/PC/Linux, Colima (Mac), or apt-get (linux)
install VS code
clone this repo and find docker/DockerFile
watch the 10 min screen cast on the following

build a docker image from DockerFile in the VS code terminal
run a container of this image in the VS code terminal
test accessing Jupyter server running in the container from a browser on the host

use cogent3 to do something meaningful - Open a remote window in VS code to attach to the running docker container

Open or create a notebook (*.ipynb) in VS code

use cogent3 to do something meaningful

try doing it

Give it a go without my assistance, and take notes about anything (no matter how trivial) that caused any road blocks.  I'll schedule time with y'all next week to zoom/screenshare with you as needed

OS: Pop!_OS 22.04 LTS x86_64
Kernel: 6.4.6-76060406-generic
Shell: bash 5.1.16

Worked well!! I found the video was clear, well-paced, and easy to follow.
The main issue on my linux machine was that all docker commands required root privileges. Specifics below with timestamps.
Also not too sure if this is obvious, but should (example) data be moved into the container at all?
3:00
My vscode was slightly different when selecting the git widget:

So I changed branches using the footer menu instead (clicking on "main"):

4:45
docker build --tag cogent3workshop -f ./docker gave:

ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied

Fixed with sudo docker build --tag cogent3workshop -f ./docker
5:35
Same as above, ran sudo docker run -it --rm -p 8888:8888 -v ${PWD}:/workspace cogent3workshop
8:00
Open remote -> Attach to running container -> "Current user does not have permission to run 'docker' ". Fixes in linux post-install but didn't attempt.

chip: Apple M2 Max
OS: MacOS Ventura (a)
———

I clicked on "Docker Desktop for Mac with Apple silicon"  not "Get Docker". Possibly you could note that there is a difference between silicon and intel macs and users need to choose the appropriate one

When opening docker, I needed to accept the terms and conditions first, and pick which settings I wanted to use (normal or advanced settings ), then either sign in or continue without signing in, and then let docker know what I plan to use docker for. (all pretty trivial but might be worth noting that you dont need to sign in)

There was no docker icon on top right as described. If you click on "docker desktop" on the top left, then "About" it will give you information on the version. Also if you click on the settings icon on the top right and then "software updates" it will let you know if you require any updates

WAtching screen cast:
not clear if you mean your computers terminal or terminal in docker. Also when I ran docker info I had no containers running, it wasn't clear if i should have had three since you had three in the screen cast
i dont have the setup for typing "code" in the terminal and VSC opening.. and you dont have that as a requirement for the VSC set up, maybe let people know they can just open folder in VSC if they dont have that set up
selecting the branch is on the bottom left of the source control widget for Mac
Also its not obvious how to run the below with my current admin rights on my mac. I might have run out of su privledges.
❯ docker build --tag cogent3workshop -f ./docker/DockerFile

ERROR: "docker buildx build" requires exactly 1 argument.
See 'docker buildx build --help'.

Usage:  docker buildx build [OPTIONS] PATH | URL | -

Start a build

su didnt work for me, this is where I gave up...
su docker build --tag cogent3workshop -f .\docker
Password:
su: Sorry

OS: Windows 10 Home: Version 10.0.19045 Build 19045

The installation instructions refer to setting up docker with the Hyper-V backend. Hyper-V, being a Windows 10 Pro feature, meant that I was unable to proceed with that step.
I noted there was a WSL 2 backend (which was alluded to in step 4), so I continued with the remainder of the instructions. Seemed to work despite my computer using WSL 1.
Docker did not automatically start after installation.

OS: Windows 10 Home: Version 10.0.19045 Build 19045

Installing Docker
The installation instructions refer to setting up docker with the Hyper-V backend. Hyper-V, being a Windows 10 Pro feature, meant that I was unable to proceed with that step.
I noted there was a WSL 2 backend (which was alluded to in step 4), so I continued with the remainder of the instructions. Seemed to work despite my computer using WSL 1.
Docker did not automatically start after installation.
Building the Docker Image
It took just under 3 minutes to build the image on my system rather than the suggested 90 seconds.
Running the docker container

To start a Docker container using the image you just built, run the following command in a linux terminal (eg: from the terminal in VS Code)

Didn't set up vscode to use WSL in the installation instructions, so of course the command doesn't work. The second command does instead with the appropriate path.
Also, though case-insensitive, the clone path is capitalised "Cogent3Workshop" rather than all lowercase.
As an aside, switch to using jupyter lab rather than jupyter notebook?
Docker in VSCode
There appears to be no workspace directory. VSCode extensions need to be installed again. Getting a "Error: EROFS: read-only file system, open '/root/.vscode-server/extensionsCache/930828eb-0a56-44d8-8379-28e4d237b3b3'".
Tried to restart the docker container, and now it can't start with error "docker: Error response from daemon: mkdir /var/lib/docker/overlay2/c8f375542f2d26bee361485eee2a1a43a9e974a06d5a9ff1eb2047623720aa48-init: read-only file system.".
At about the same time, my C drive ran out of space so that might be something to do with it (on my laptop I have a small SSD which mainly contains the OS which docker default installed to rather than my bigger drive). Going to see if I can reinstall it all later onto the other drive and see how I go.

Also not too sure if this is obvious, but should (example) data be moved into the container at all?

The current directory in the host OS is mounted to the /workspace directory in the container when the container is run.  So if you have data in your current directory inside the container that will be available from /workspace and any changes to those files in the container will change the files on the host OS.

Open remote -> Attach to running container -> "Current user does not have permission to run 'docker' ". Fixes in linux post-install but didn't attempt.

These issues of requiring elevated priviledge to build images and run containers should be addressed by adding the user to the docker group:
sudo usermod -aG docker <username>

I am going to rework the linux instructions as DockerDesktop has recently been released for linux.  It will still need sudo to install but will create the docker group and add the current user to it.

I noted there was a WSL 2 backend (which was alluded to in step 4), so I continued with the remainder of the instructions. Seemed to work despite my computer using WSL 1.

I upgraded my system from WSL1 to WSL2 in 2021 when they added GPU support.  It was a pretty simple upgrade, and it resulted in some performance increase.  My old VMs stayed WSL1 until I upgraded then to WSL2.
From memory this is roughly the process I used
https://dev.to/adityakanekar/upgrading-from-wsl1-to-wsl2-1fl9

I suggest adding a "We assume WSL 2", it's possible someone will turn up with older WSL in which case Robert can help them out!

At about the same time, my C drive ran out of space so that might be something to do with it (on my laptop I have a small SSD which mainly contains the OS which docker default installed to rather than my bigger drive). Going to see if I can reinstall it all later onto the other drive and see how I go.

@rmcar17
It's a little involved on windows to move the location that Docker Desktop will store images.  On other platforms you should just be able to go to settings / Resources / Disk image location in docker desktop
With windows it's more complicated as the virtualization is being managed by Windows system for linux
You should be able to ask WSL what images (called distributions in windows) are loaded in powershell with
wsl --list --running

It will give you something like this
PS C:\Users\Richard> wsl --list --running
Windows Subsystem for Linux Distributions:
ubuntu-20.04 (Default)
docker-desktop
docker-desktop-data

Shut down docker desktop and confirm it's distros are not running in WSL with the above
Then you need to export the distro to a tarball on your bigger drive (assuming D: here)
wsl --export docker-desktop-data D:\docker-desktop-data.tar

Then you need to unregister the distro from wsl
wsl --unregister docker-desktop-data

Then you reimport it
wsl --import docker-desktop-data D:\my_new_location D:\docker-desktop-data.tar --version 2

Then restart Docker Desktop and you should be good to go.

I upgraded my system from WSL1 to WSL2 in 2021 when they added GPU support. It was a pretty simple upgrade, and it resulted in some performance increase. My old VMs stayed WSL1 until I upgraded then to WSL2.

I've wanted to upgrade to WSL2 for quite a long time. Though for whatever reason the internet doesn't work on WSL2 on my machine so after much troubleshooting whenever I've tried I've been forced to downgrade back to WSL1.
Interestingly however, despite having WSL2 not WSL1 and not having Hyper-V enabled, I was still able to set up docker and create the environment (I suspect other issues were to do with my C drive running out of space). I'll try again this afternoon.

@rmcar17 It's a little involved on windows to move the location that Docker Desktop will store images. On other platforms you should just be able to go to settings / Resources / Disk image location in docker desktop
With windows it's more complicated as the virtualization is being managed by Windows system for linux

I saw that option as well before I uninstalled docker, and it seemed to attempt to move things across (before I accidentally killed and corrupted it).
I followed a similar process to get my Ubuntu distro across to my other drive. In any case I'll give things a try and let you know the results after lunch.

Interestingly however, despite having WSL2 not WSL1 and not having Hyper-V enabled, I was still able to set up docker and create the environment (I suspect other issues were to do with my C drive running out of space). I'll try again this afternoon.

Before you blow away DockerDesktop wnd while you are still on WSL1 can you get a screenshot for me of settings / Resources / Disk image
This is mine.  I have wsl2 and it requires me to use WSL2 configuration which is a pain

But with WSL1 they may still allow you to move image location

@khiron
Okay, looked into it again. So docker is running on wsl 2 on my machine, whereas my Ubuntu is on wsl 1 which makes quite a bit more sense as to why things work.

Are you sure you are unable to move the docker disk image location? I was able to just by clicking on browse and making a new folder somewhere.

Went through the remainder of the installation instructions. Took 600.1 seconds on my laptop to build the docker image.
When I started vscode and attached to the running docker container, vscode automatically started in the /root directory, instead of the /workspace directory (mustn't have found it yesterday), so had to navigate to get where needed.
Once there (other than having to install the vscode extensions) everything worked.
I do think it would be useful to have alternative installation instructions for without docker (though having a consistent environment is definitely a strong benefit, the setup required for the average user is quite complex). I'm not sure if more is going to go into the Dockerfile, but is the main purpose just to set up the python environment? If so, it may be useful to provide a conda environment.yml file for an alternative installation. From there, assuming they have conda installed, setup should just be one command. Not sure if vscode setup is necessary as well, most things could just be done from jupyter lab for the workshop (I imagine).

I have a build pending a pull request that simplifies it right down to

run VS Code
open a folder containing a .devcontainer subdirectory
???
It just works, seamlessly.  No command line malarkey required, developing in an isolated declarative container, with VS code extensions prebaked.

I'm working on updated docs and a video over the weekend.  It's something that if docker desktop (or docker daemon) is already installed, it will take about 10 mins to get working.

I do think it would be useful to have alternative installation instructions for without docker

For developers I agree.  But docker isn't really a core dev thing, even tho I personally do use containers all the time.
But for a workshop it means if they have docker desktop installed we don't have to worry about heterogeneous hardware with issues showing up.


Develop

Can you rebase these commits to squash them into one commits only? It's easier to review with only one commit. Thanks!

I agree. Thanks !

@im6h you want to do a quick security check?


Implement std::error::Error for Error

Hey, is it possible to implement std::error::Error for the Error type? I have some parts where I want to simplify my errors into a Box<dyn Error + 'static>.
Since Debug and Display are already implemented and this library always uses std, the empty trait implementation impl std::error::Error for Error {} should be completely sufficient and would not break anything?

Sounds reasonable to me to add!