Libiconv dependency handling

I recently added this library in to a project that requires CGO (due to cross compilation needs), and because of that I  compiled iconv as a static library (alternatively, I believe providing an install of the dynamic linked iconv library for the target machine would have also worked - however, I chose to compile and include iconv statically), as github.com/qiniu/iconv, required by this library, has the C "iconv" library as a dependency.
I think some mention of this requirement on the "target" system may be useful in the README; Would instructions for linking iconv statically and/or dynamically using CGO, and/or instructions on how to provide the proper iconv DLL on the target machine, also be something that would be useful to have in the README for this project? I am acutely aware that compile options and procedure for go code is hard to come by, so wanted to get your opinion on if adding something about how to do this in the README would be useful (in your opinion); If so, I can put together a PR with what I have found regarding installing iconv on the target system, and bundling it using CGO (I've been working on cross compiling and including iconv for an app I'm working on, so would be more than happy to share my notes for the README, if you think it'll be of use for others).
Also, thank you for providing this great escpos library; It helped me quite a bit recently with a few label formats I needed to print via escpos on a newer golang project.

Hey Justin,
you are absolutely right, it should be documented, but:
The dependency is only there because I copied it over from the seer-robotics version. When I got time to take a closer look the library seemed to be already in use by other people, so at this point I didn't want do create breaking changes. If I remember correctly it's only important for the GBK encoding, which I personally don't need so if it wasn't already being used by others I would simply had removed it.
Meaning: I'd rather get rid of the CGO dependency so it can be compiled without CGO. That said my (brief) tests of other ways to encode the texts yielded incorrect results and I didn't have time to resolve this.
If it's not that much of work for you I'd gladly accept a PR improving the documentation as I don't know when i'll get to exchanging the iconv dependency for a native go variant.

I decided to try removing the dependency to iconv instead; https://github.com/hennedo/escpos/pull/12 is the change for that.
Has been working for me well; Please let me know what you think, when you get a chance :)

This issue should be closed when https://github.com/hennedo/escpos/pull/14 is merged.


Importing pyatmos raises ModuleNotFoundError: No module named 'numba'

Seems like you just forgot to put it in the requirements file?
(or maybe it's just my machine)
Probably a easy fix.

Yes, I did forget to add numba. I have fixed the problem on Github, but it has not yet been published on PyPI.

Ok, cool. Thanks for the info!


Bot Greetings

Current UX-API interactions
The current bot greetings are untenable for Alpha Pilot. The scheme functionally is tech-mapped as follows

Member selects bot (default appearance is avatar, but could discuss last used)

MVP limited to either talking to biographer-bot or talking to avatar

scrapbook and other libraries are not bots, they are just data collections (for now, or always if graced solely into Member Avatar, which is where I propose in other issues)

Server API parses server event and returns greeting in payload

complicating elements include:

Member Avatar (as hosted on MyLife and represented as a personalized instance of AgentFactory) must discern between dynamic and static request by default as well as decision-making about its own needs [human writes: 'aww, you can do better than that...!' and guess what, it's always LLM-time!]
Session-Sensitivity: gates on server load must be in place, not every hello can be a dynamic call to OpenAI; need value vs impact case study

FE parses greeting and displays to member

Suggested Functionality and UX

Welcome message can be updated to any of the following.

•	"Welcome back, Lakshmi! How can I assist you today?” or “Welcome Lakshmi Need assistance with anything specific today?" Or "Hi Lakshmi! It's great to see you again. What can I help you with today?"
•	"Good day, Lakshmi! Let's make today productive. How can I assist?"
•	"Hey Lakshmi! I'm here to help you achieve your goals. What would you like to start with?"
•	"Hello Lakshmi! Based on your recent activity, you might be interested in [suggested task]. Need help with that?"
•	"Welcome back, Lakshmi! How about we continue where you left off?"

On top of the welcome message, design can be slightly modified to give options to the user right after login.


🎛 Migrate away from Bootstrap modals to Stimulus / a11y dialog with DialogController enhancements

Is your proposal related to a problem?
We currently have two modal (dialog) implementations in Wagtail, ideally we should have just one and build on that with tested code and common designs.
Describe the solution you'd like
We would likely want to build on the existing DialogController and introduce a way to more easily create 'dynamic' dialogs. Either with a central template or some other mechanism, we may even want to leverage the CloneController to clone an element and inject the content from a fetch request.
Another approach may be to include the SwapController in the base Async dialog template. Updating the URL to pull in a HTML snippet from the server instead of the current JSON with a HTML payload included. This snippet response could include all the content within the dialog, we can then only show the dialog when the content has responded (or have a loading state).
As for updating other fields when the dialog closes / selects, we can build on the SyncController for that behaviour.
This pulls together a few of our existing controllers, like building blocks towards the full modal workflow solution.
We must have a way to have more than one dialog present, even if not visual, this is a current limitation of the existing modal approach. We usually clear the modal if there's one open.
Describe alternatives you've considered

There's some clarity needed from the core team as to our plans for the ModalWorkflow and how we plan to migrate away from jQuery here and either to Stimulus, ad-hoc TypeScript or Telepath. Maybe the approach for replacing Bootstrap dynamic dialogs will simply leverage the underlying a11y library. The risk here is that we have double implementations for common behaviour such as event dispatching.

Additional context

A lot of work was started in https://github.com/wagtail/wagtail/pull/9246 but it was mostly a design change and not an underlying JS change.

Working on this

This is likely a core team level item, some tasks may be split out for wider contributors.

This will be blocked until there's a clear direction agreed with the core team.

SwapController now has the ability to load the HTML from a JSON response, so that should make it easier to adapt the existing ModalWorkflow API.


De-any: Refactor example to eliminate usage of 'any'

Replace 'any' type in the constructor parameters with more specific types to improve code readability.
Think, it's beneficial to discourage the use of 'any' in documentation.
Don't use any
Open in Playground

@microsoft-github-policy-service agree


Consider exposing list of Model classes publicly

I'm in a situation it would be great if I could access all the modelclasses associated with a given database. I see that this property exists on BaseDatabaseDefinition but I don't think theres any easy way to us to access it. Thanks!

you can create a file  in the same package as com.raizlabs.android.dbflow.config;

public class DatabaseExtensions {

  public static List<Class<? extends Model>> getModelClasses(BaseDatabaseDefinition bd) {
     return bd.getModelClasses();
  }

}


Pick time-range for a specific date

Hi,
Could I use this to have the user pick a date and then a time-range for that date?
For example 08:15 - 10:00 @ 24/06/2016.
So, pick start-time and end-time from a 24-hour clock, and then one date.
Can it be done?

I never saw a plugin with just time range. You can achieve that using 2 flatpickr inputs, 1 for datetime, and 1 for time only.
Or 3 flatpickr inputs, 1 for date, 2 for time range.
Do you know a plugin which have time range?

You can achieve that using 2 flatpickr inputs, 1 for datetime, and 1 for time only.
Or 3 flatpickr inputs, 1 for date, 2 for time range.

Yeah, that's the way to go. Use the inline option to reduce the required number of clicks to open the calendar/time pickers.
I can't think of a user friendly way to incorporate time ranges.
Feel free to reopen if you have any more questions.


Public share are not deleted when user is deleted

Steps to reproduce

from ocis repo start phoenix bin/ocis server . For details about the setup, check the section run tests > with Ocis backend https://owncloud.github.io/clients/web/testing/
Import ldap users and as user1 create a public link
delete user1 (from LDAP)
Even after deleting user1 share info is not deleted from publicshares.json file.
Similar behavior is noticed for normal share https://github.com/owncloud/ocis-reva/issues/262

duplicate of https://github.com/owncloud/ocis/issues/1226

duplicate of https://github.com/owncloud/ocis/issues/1226


Where are benchmarks?

Hi,
I've checked your projects.
You compared with Taichi in your paper, but the code in this project contains only initialization.
Do you have any sources written in Taichi?
If you have any sources, could you share with us?
Best regards,

This opensource code is a refactorization of the original one with better exposition but fewer (messy) benchmark setups. Due to personal issues, I haven't had the time completing it. But we will surely provide the benchmarks along with the improved MGSS scheme (MGDS) sometime soon.
So far, I haven't implemented the single GPU version GMPM using Taichi, but I'll definitely do so, probably after going through the Taichi course and my graduation this year.

Thank you for your response.
I hope you to share some codes.
Actually, I am also a  Ph.D student and start to study MPM.
In GitHub, there are some implementation of MPM, but few of them are maintained.
Your work is very informative not only to improve performance but also to understand MPM because your code is easy to read.
I'm really appreciate you for sharing codes.
Thank you!


Add yAxisType command to repl

Here's one possible approach – let me know what you think.

I can add this for the x axis too, but it's making the plot disappear right now so I'll have to dig into it

Hey, this is great, thanks! A few thoughts:

Can you change the axisType type signature to use AxisType.Type instead of String? I think it should work as a drop-in replacement
It might be useful to expose the acceptable parameters (linear, logarithmic, datetime, category) through the help command
Are you happy with the values provided by highcharts? We could consider alternate naming strategies (log10, logE, log2, for example) and perform the necessary conversion ourselves.
We can check that it's one of the correct input options, I think if it's mistyped now it silently ignores the axis type.
you're setting the axis name/type by mapping over the y-axis option. The default values for this are:

xAxis: Option[Array[Axis]] = None,
yAxis: Option[Array[Axis]] = Some(Array(Axis()))

(this is because we use other default settings than highcharts.js does, but do not do so for the x-axis). I suspect this is why the x-axis is disappearing. Ideally, we would copy the Some(Array(Axis)) as you do here, and if it is currently None, set either its name/type
For the method names - I'm not complete sure what I would like them to be called - what do you think?

leave as is - yAxis(String) refers to axis name, yAxisType(AxisType.Type) referes to axis type
offer yAxisName(String), yAxisTitle(AxisType.Type) as separate methods
yAxis(name: String, type: AxisType.Type) - perhaps supplying default values to make yAxis(name) possible?
yAxis(name: String)

or some combination of these ideas.
I threw a lot of stuff up here - I should be able to help code it out tomorrow evening if you'd like my assistance!

(working on this)

– axisType type signature changed
– Valid parameters exposed via help
– I'd lean towards just adding log (log10) for now, matching the highcharts (and matplotlib) default.  We can add the others (and a log10 alias) as needed.
– I added a message that prints if an invalid axisType is entered
– Haven't gotten a chance to look at the xAxis stuff yet
– Not sure about the method names.  I'd lean toward this implementation because of its straightforwardness, but would be happy with the others you've suggested

Ah, the problem was that one of my x values was 0 – which you can't take the log of.  Works now.

Looks good to me! Thanks for submitting this PR Tom :)


investigate supporting the atom-ide-ui plugin(s)

Some new plugins have been released that support IDE level UI features (atom-ide-ui). We should investigate supporting them for this plugin. Some features include diagnostics, outline view, jump to definition, find usages ,...

(/cc @cdavidjean)

:(  I just moved them into dockable panels :)
It looks worth investigating.  The less code we have in the plugin, the less to maintain.  But it might increase breakages?

Yeah, not clear, but worth investigating. There would be less UI code for this package to maintain, and perhaps more familiarity if people do end up using atom-ide-ui for one or more other languages.

I'll install it and play with it doing typescript tomorrow and get back to you.

I'd like to see this plugin work with the atom-ide-* features because it allows for a consistent ux for a user across languages. If you don't mind, I could start a PR for implementing the integrations.


Error downloading DBs on Heroku

Hi
I am deploying my application and trying to download the databases, but I receive the following error
~ $ heroku run bash
~ $ mix ua_inspector.download.databases
UAInspector Database Download
Download path: /app/.mix/ua_inspector
This command will overwrite any existing files!
Really download? [Yn] Y
** (File.CopyError) could not copy from /tmp/build_c58698da94639263d9c49d03de9af79d/deps/ua_inspector/lib/mix/ua_inspector/../files/README.md to /app/.mix/ua_inspector/README.md: no such file or directory
    (elixir) lib/file.ex:447: File.copy!/3
    lib/mix/ua_inspector/download.ex:53: Mix.UAInspector.Download.document_database_path/0
    lib/mix/ua_inspector/download/databases.ex:37: Mix.UAInspector.Download.Databases.run_confirmed/1
    (mix) lib/mix/cli.ex:58: Mix.CLI.run_task/2
    (elixir) lib/code.ex:363: Code.require_file/2

Hm... as it fails on the copy the permissions for the app directory should be ok. The download path should have been successfully created, right?
Could it be that the file it tries to copy has not been deployed?

I'm not sure
When using the UIInspector in production however, it returns unknown for all field, which also happened in dev when the database hadn't been loaded

Yeah, if copying the file from your temp dir fails it won't download anything. Probably worth it to look if it is on the path mentioned in the stacktrace or maybe hasn't been copied.
Or you could just take a database downloaded from where it works and put it to the configured folder. And then skip the task altogether. Could become interesting once I finally get around to have some auto-download/-update/-reload logic in, but in the meantime it might be a solution.

I patched together a potential fix for you in the branch inline-download-readme. The file it tries to copy is now inlined during compilation and then only written. That should prevent any problems with releases where the file might not be included.
Could you give it a shot and find out if that solves your problem?

Just merged above mentioned branch into master. If you still get any issues downloading please add a comment here or open a new issue.


MJML watch not working

When running mjml --watch index.mjml -o index.html or mjml -v, I'm getting the command line error No input files found.
I find this odd since I can run mjml -r index.mjml -o index.html just fine.

MJML version:
Version 4.0.5

Hi @ktrantm , thanks for reporting this. There is already an issue about this : #1171, so i'll close this one.
This will definitely be fixed in the next release 👍


[fix] listening correct fpm service

Description
PHP7 / Ubuntu 16.04 & PHP-FPM Pool Listen User/Group #169  merge request caused small bug related with listening correct php fpm service (which is configured to /var/run/php/php7.0-fpm.sock) so web server was not working properly (nginx in my case was not working with php 7 fpm)

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
GitHub Users Who Are Not Authorized To Contribute
The following GitHub users do not appear to have signed a CLA:

@mskurski

Please sign the CLA here.

@mskurski Any reason for closing this out?

@tas50 actually I will reopen this pull request tomorrow morning, because the only reason I closed it was that I missed one commit, and I realised it immediately I've opened this pull request, so sorry for that.

@tas50 Hi, I've opened new pull request #176, about this we can forget ;)

Hi. Your friendly Curry bot here. Just letting you know that all commit authors have become authorized to contribute. I have added the "Signed CLA" label to this issue so it can easily be found in the future.


Stop extra kick in webots_keyboardwalk and add in a kick timeout

Alternative to #842.

Adds Stand module to webots_keyboardwalk.role inline with other motion roles
Makes kick priority lower than get up priority
Uses shared pointer to check kick command exists
Adds a timeout so that the kick isn't executed too long after a kick command (since we probably are no longer necessarily in a good position to kick)
Fill in module readme
Add document directives

Fix build issue and its good to go.


Async Instructor Error

pydantic_core._pydantic_core.ValidationError: 1 validation error for Message
content
  Input should be a valid dictionary or instance of BaseIOSchema [type=model_type, input_value=<coroutine object AsyncIn...reate at 0x7fb26162a200>, input_type=coroutine]
    For further information visit https://errors.pydantic.dev/2.9/v/model_type
sys:1: RuntimeWarning: coroutine 'AsyncInstructor.create' was never awaited

This is the error I'm encountering while executing the Web-Search-Agent example. I'm being able to run the searxng_search.py file seperately and successffuly fetch the data by creating a local instance of searxng. But when I'm running the main file it isn't. i didn't change much of your code, you're core functionalities are same, just changed the client and model of the agent

@Sravan-k-DEV Can you attach the relevant code snippet please? On first sight, it sounds to me like you should use the Async client of whatever  provider you are using... This is in the docs of Instructor itself, see: https://python.useinstructor.com/blog/2023/11/13/learn-async/?h=async
But beside openai.OpenAI -> openai.AsyncOpenAI there is also for example groq.Groq -> groq.AsyncGroq
If you provider doesn't have an async version, it might be best to fall back to the regular client and change any run_async() to run()

Hi @KennyVaneetvelde, first of fall thanks for you're assistance.
The code is exactly the same. I haven't changed much except the agent.
agent = BaseAgent(
    config=BaseAgentConfig(
        client=instructor.from_openai(openai.AsyncAzureOpenAI(
            api_key=os.getenv("AZURE_OPENAI_API_KEY"),
            api_version=os.getenv("OPENAI_API_VERSION"),
            azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
        )),
        model="gpt-4o",
        memory=memory,
    )
)

As I took the subscription of Azure, currently I'm using that

Besides i even tried with the gemini. but I'm not able to load the client.
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
model = genai.GenerativeModel(model_name='models/gemini-pro')
client = instructor.from_gemini(model)

agent = BaseAgent(
    config=BaseAgentConfig(
        client=client,
        # model="gemini-pro",
        memory=memory,
    )
)

This is how i definied the gemini, I have commented the model because I'm getting this error
  File "/home/sravankumar/My_projects/Exploring_Atomic_Agents/.venv/lib/python3.12/site-packages/instructor/process_response.py", line 470, in handle_gemini_tools
    assert (
AssertionError: Gemini `model` must be set while patching the client, not passed as a parameter to the create method

After seeing this error I tried to uncomment it, but still the error doesn't go.
Thanks for you're time.

Hi @Sravan-k-DEV
Just met same Gemini issue and found a workaround to fix it.
/atomic_agents/agents/base_agent.py
Comment out line 149, 151, 152.
        response = self.client.chat.completions.create(
            messages=messages,
            # model=self.model,
            response_model=response_model,
            # temperature=self.temperature,
            # max_tokens=self.max_tokens,
        )

@Typepluto Thank you for this
Since I don't use gemini, it's a bit hard to test for me, but I have labeled this in case anyone wants to pick it up and make a PR.
I suppose what it will come down to is adding some checks on which provider is being used and based on that, (don't) pass in properties of course gemini might have other ways to change the model, temperature, or max tokens, so we'll need to keep that into account.
For reference to whoever picks this up, proper usage can be found in https://github.com/instructor-ai/instructor

@Typepluto @KennyVaneetvelde Thank you for your time,
after constant debugging and searching, even i found a way to achieve this,
Google
from google import generativeai as genai
from googleapiclient._auth import HAS_GOOGLE_AUTH

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
model = genai.GenerativeModel(model_name='models/gemini-pro')
client = instructor.from_gemini(HAS_GOOGLE_AUTH(api_key=api_key))
# client = Instructor(client=gemini, mode=instructor.Mode.JSON) # Use this if above is not working

agent = BaseAgent(
    config=BaseAgentConfig(
        client=client,
        model=model,
        memory=memory,
    )
)

AzureOpenAI
Here just remove the Async
agent = BaseAgent(
    config=BaseAgentConfig(
        client=instructor.from_openai(openai.AzureOpenAI(
            api_key=os.getenv("AZURE_OPENAI_API_KEY"),
            api_version=os.getenv("OPENAI_API_VERSION"),
            azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
        )),
        model="gpt-4o",
        memory=memory,
    )
)

@Sravan-k-DEV @Typepluto
Google has since released an OpenAI-compatible API for Gemini: https://ai.google.dev/gemini-api/docs/openai
An example, demonstrating it working with the latest Gemini 2.0 has been added to https://github.com/BrainBlend-AI/atomic-agents/blob/main/atomic-examples/quickstart/quickstart/4_basic_chatbot_different_providers.py
But here is a small standalone example to demo it working:
import instructor
import os

from dotenv import load_dotenv
from openai import OpenAI

from atomic_agents.agents.base_agent import (
    BaseAgent,
    BaseAgentConfig,
    BaseAgentInputSchema,
)

load_dotenv()

api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
    raise ValueError("GEMINI_API_KEY not found in environment variables.")

client = instructor.from_openai(
    OpenAI(api_key=api_key, base_url="https://generativelanguage.googleapis.com/v1beta/openai/"),
    mode=instructor.Mode.JSON,
)
model = "gemini-2.0-flash-exp"

# Agent setup with specified configuration
agent = BaseAgent(config=BaseAgentConfig(client=client, model=model, max_tokens=2048))

# Example conversation turn
user_input = "Hello, what can you do?"
input_schema = BaseAgentInputSchema(chat_message=user_input)
response = agent.run(input_schema)

print(f"Agent says: {response.chat_message}")

In light of this and since no code changes to the core framework code were necessary, I'll close this for now.


if set isInitiallyExpanded: true , then user need to click 2 times to toggle back to shrink mode

What did you expect to happen?
ToggleListItem(
  isInitiallyExpanded: true,

First it will expanded by default, and  when user click on item it should shrink/collapse
What did actually happen?
If I set
ToggleListItem(
  isInitiallyExpanded: true,

It's expanding children,  but when user press for the first time nothing happens[not collapsing] ,  but second time only it shrink from expanded mode to collapsed mode. After that it working as expected as usual but only for the first time this issue happens
if I set   isInitiallyExpanded: false it working normally
Help us recreate the bug.
ToggleListItem(
isInitiallyExpanded: true,

Thanks for the bugreport, it's appreciated!
We were able to reproduce the issue based on your description and we found the underlying problem causing the bug. We may need a few days to properly design and implement the solution, but it should be released soon.

It turned out to be a bigger issue than expected. To fix it we need to have a deeper inspection of the current architecture and the state related responsibilitites within.
Thank you for your patience in the meantime!

Thank you for the update. I completely understand the need for a thorough inspection, I'm more than willing to assist in any way I can during this process.
Your diligence in addressing this matter is much appreciated.

The referenced commit, which is released under v0.3.1 should solve the issue.
Thank you for the bug report, for your patience and feel free to reopen if the bug persists.

Hi, This fix is solved if ToggleListItem has only one item.
If ToggleListItem have more than one item (example 2 items) then I need to click the first item 2 times to shrink it back,
another bug I found that if I try to shrink the second item then the first item also shrink back.
https://github.com/BinaryBush/toggle_list/assets/110030709/a591a6f8-2119-41bf-b181-1217612bbc4b
https://github.com/BinaryBush/toggle_list/assets/110030709/de709556-f48c-46df-b0d1-2893ba86c712


New feature to use localizable email template in subfolders

Hi,
A build a small npm module how load node-email-templates and add suport to localization with sub folders for each locale and root fooder for default locale.
Is compatible with default usage of email-template.
Link: https://github.com/albertosouza/email-templates-i18n
Someone can give opinions about my module?

very cool, maybe you could build this in directly!  please submit a PR, it'd be great to have this

ok, i will try ...

Is this ready to go @albertosouza ?

Released in v2.4.0!

This is awesome @albertosouza !!!!! YOU ROCK!!!!! 🚀  🎸  💥  🔥
LOVE IT ❤

Thanks @niftylettuce :thumbsup:


Please Please adapt to obsidion v1.0!

your theme is so beautiful, please don't stop updating!

Thanks for the reminder of the release, and yes I do plan to adapt the styles for v1.0!
It won't be done within a short time frame, so you might need to wait for awhile though.

thank you!😍


Use fs-sim-<IP_ADDRESS> and fs-api-<IP_ADDRESS>, update cabal index-states

Description
With fs-sim-<IP_ADDRESS> and fs-api-<IP_ADDRESS> released to CHaP, we can remove an s-r-p. We update the index-states for both Hackage and CHaP in the process.
Checklist

Branch

[x] Commit sequence broadly makes sense
[x] Commits have useful messages
[x] The documentation has been properly updated
[x] New tests are added if needed and existing tests are updated
[ ] Any changes affecting Consensus packages must have an entry in the appropriate changelog.d directory created using scriv. If in doubt, see the Consensus release process.
[x] Any changes in the Consensus API (every exposed function, type or module) that has changed its name, has been deleted, has been moved, or altered in some other significant way must leave behind a DEPRECATED warning that notifies downstream consumers. If deprecating a whole module, remember to add it to ./scripts/ci/check-stylish.sh as otherwise stylish-haskell would un-deprecate it.
[x] If this branch changes Network and has any consequences for downstream repositories or end users, said changes must be documented in interface-CHANGELOG.md
[x] If serialization changes, user-facing consequences (e.g. replay from genesis) are confirmed to be intentional.

Pull Request

[x] Self-reviewed the diff
[x] Useful pull request description at least containing the following information:

What does this PR change?
Why these changes were needed?
How does this affect downstream repositories and/or end-users?
Which ticket does this PR close (if any)? If it does, is it linked?

[x] Reviewer requested

bors r+


FEATURE - Support VoiceOver screen reader

Describe the feature you want the app to have that it currently doesn't
Let's add VoiceOver screen reader support as we start to think through how to improve accessibility for this app.
Describe alternatives you've considered
Really, the main alternative is waiting and adding this support later. Right now, folks who rely on VoiceOver cannot utilize this app, so we are not supporting all possible users.
Additional context
Here's the Apple doc on how to implement VoiceOver support: https://developer.apple.com/documentation/accessibility/supporting_voiceover_in_your_app

Hello. I would like to be assigned this request.

Hello Mikaela,
I am working on the VoiceOver and with SwiftUI all of the controls have Voice Over enabled. At this time the only change I have made is the not have voice over read the description of the background image as it does not aid in the navigation or description of the app. The new Category sheet is sort of distracting via VoiceOver as every button, label, and icon are read. I do not know if there is a benefit to VoiceOver user to have all of the icons read.
Are there any other items I should be looking at for this issue?

On Oct 6, 2022, at 1:16 PM, Mikaela Caron @.***> wrote:
Assigned #137 https://github.com/mikaelacaron/brain-marks/issues/137 to @ericjenkinson https://github.com/ericjenkinson.
—
Reply to this email directly, view it on GitHub https://github.com/mikaelacaron/brain-marks/issues/137#event-7537603227, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACCP2V2AJSQTRV5MZBKFBBDWB4JOFANCNFSM6AAAAAAQ2UVD6Q.
You are receiving this because you were assigned.

@ericjenkinson Thanks! Mainly this was an audit, because I wasn't sure what all was covered. I don't think we can do any voice over with the images in a tweet unless there's a way to fetch the alt text of a tweet
I would think that the new category sheet, it'd be useful to only read the icons when a person is hovering over them, as opposed to reading them all the second you see the view
What do you think?

Great. I will remove the reading of the icons as a set, but still read the icon when the user navigates through them.

@ericjenkinson  Perfect thanks! Let me know if you have any other questions!


IntelliSense missing for Android layout files when adding Xamarin.Android.Support.Design

Xamarin.Android Version (eg: 6.0):
7.1
Operating System & Version (eg: Mac OSX 10.11):
Windows 10, Visual Studio 2017
Support Libraries Version (eg: 23.3.0):
25.1.1
Describe your Issue:
IntelliSense is missing for Android layout files when adding the Xamarin.Android.Support.Design package.
When I use widgets from the android.support.design namespace in my layout, the generated xml schema in "...\obj\Debug\Schemas\25\schemas.android.com.apk.res.auto.xsd" contains duplicate attributes for "itemIconTint" and "itemTextColor"
The error message is only barely visible as a small blue squiggly underline at the beginning of the last line in the layout file:

Excerpt from the xsd file with the duplicate attributes:

In addition: After removing the design widgets the error remains, even after deleting the obj folder, "Clean Solution" and Visual Studio restart. The xsd file is generated with the duplicate attributes as soon as a layout file is opened, even if it doesn't contain the res-auto namespace declaration or android.support.design widgets.
Steps to Reproduce (with link to sample solution if possible):

Create Blank Android Project
Install-Package Xamarin.Android.Support.v7.AppCompat
Open Resource\layout\Main.axml -> "...\obj\Debug\Schemas\25\schemas.android.com.apk.res.auto.xsd" is generated without duplicates (ca. 768 KB) (IntelliSense is still working)
Install-Package Xamarin.Android.Support.Design
Open Resource\layout\Main.axml -> "...\obj\Debug\Schemas\25\schemas.android.com.apk.res.auto.xsd" is generated with duplicates (ca. 1717 KB) (IntelliSense is no longer working)

@garuma any ideas/input you can provide?

@Redth @decriptor can chime in on that

@Redth I'm pretty sure I know what is going on here. I've fixed this for another case somewhere else, but it looks like I'll need to add a better fix to catch other cases of this.

Ok, I've tracked this down and fixed the issue.

IntelliSense is still not working with Support.Design and v7.AppCompat installed.

There hasn't been an update with the fix in it yet.

I just checked and the code is definitely in for the next release. It should be available in the next preview

I have the same problem.
windows 10
visual studio 15.7.4
xamarin.android <IP_ADDRESS>
api level 26


Add recognition for maintainer contributions

Need to add recognition for contributions of @amoghrajesh for review and eventOrganizing

@all-contributors kindly add @amoghrajesh for review and eventOraganizing

@all-contributors kindly add @amoghrajesh for review and eventOrganizing


Print more helpful message if no artifact matching the version pattern is found

Issue: https://github.com/wildfly-extras/prospero/issues/657

I was looking with @parsharma , I think if we want to improve the message to give more details, we would have to essentially list details about all involved channels, so the original message:
ERROR: Unable to resolve artifacts:
  * io.smallrye.config:smallrye-config-common:jar [missing]
  * [other artifacts...]
 Attempted repositories:
  *MRRC::https://maven.repository.redhat.com/ga/
  *indy::https://indy.psi.redhat.com/api/content/maven/hosted/pnc-builds/
  *brew::https://download.devel.redhat.com/brewroot/repos/jb-eap-8.0-maven-build/latest/maven/
  *central::https://repo1.maven.org/maven2/

would probably need to look like:
ERROR: Unable to resolve artifacts:
  * io.smallrye.config:smallrye-config-common:jar [missing]
    [here search the channel streams if they contains given artifact and show the version or version pattern, like:]
    * channel A: stream found with version pattern "blah"
    * channel B: stream found with version "1.2.3"
    * channel C: no stream found, no stream strategy: LATEST
  * ...
 Attempted repositories:
  [here show repositories defined in each channel:]
  * channel A:
    *MRRC::https://maven.repository.redhat.com/ga/
    *indy::https://indy.psi.redhat.com/api/content/maven/hosted/pnc-builds/
    *brew::https://download.devel.redhat.com/brewroot/repos/jb-eap-8.0-maven-build/latest/maven/
  * channel B:
    *central::https://repo1.maven.org/maven2/
  ...

It could get quite verbose in the end, would have to somehow display details about all channels relevant to each missing artifact.
Maybe necessarily we wouldn't need to modify the channel library to provide more info in the original exception, as we can get access to the list of channels ourselves in prospero, we know that all configured channels are used by the channel session.
The effort and verbosity in the end doesn't look awful, but still it's to be considered if we should go into these details, to me it looks helpful for end user unless it gets too verbose.
WDYT?

Then also would that be like giving too much information to end user? Maybe it's useful to person assembling the channels, but too much info for the person running the installation..? Maybe print that in some verbose mode? Just ideas...

Thanks for the analysis @TomasHofman!
Keeping it in verbose mode might make sense. It should be a fairly small change to switch it between verbose and normal output, so we can see how it feels when it's implemented.
I was originally thinking more along the lines of a short message like   * io.smallrye.config:smallrye-config-common [missing - no version matching patterns "<PATTERN,...>"] if the only channels providing this stream use a versionPattern. But maybe that's a good opportunity to review other errors and provide better logging. I'll take a closer look at this next week.


ImportError: cannot import name 'Protocol' from 'typing'

When running the demo notebook, after pip3 install the package from github, we face an ImportError.
Import the relevant modules of the library
from lightweight_mmm import lightweight_mmm
/usr/local/lib/python3.7/dist-packages/lightweight_mmm/models.py in ()
23 """
24
---> 25 from typing import Any, Dict, Mapping, MutableMapping, Protocol, Optional, Sequence, Union
26
27 import immutabledict
ImportError: cannot import name 'Protocol' from 'typing' (/usr/lib/python3.7/typing.py)
I could also see your github actions CI job failing for the same reason.

@chmstimoteo should be fixed now! Let me know if you still running into errors.


Invalid COS credentials trigger user cryptic exception

Describe the issue
See next section. The root cause (invalid credentials) repesents a common [user] error scenario.
To Reproduce
Steps to reproduce the behavior:

Create a notebook
Create a pipeline and add the notebook
Create a KFP runtime configuration with invalid COS user credentials (e.g. wrong password)
Export or run pipeline using that runtime configuration

Screenshots or log output
If applicable, add screenshots or log output to help explain your problem.
Log Output

[I 2021-04-14 12:46:25.882 ServerApp] kfp 'untitled':'Untitled' - processing operation dependencies for id: 431db185-d660-4035-8c53-4e2cea22fd88
[I 2021-04-14 12:46:25.884 ServerApp] kfp 'untitled-0414124625':'Untitled' - generated dependency archive: /var/folders/h8/l3qh8v192rv_vvggc6wyphzc0000gn/T/elyra/Untitled-431db185-d660-4035-8c53-4e2cea22fd88.tar.gz (0.002 secs)
[E 2021-04-14 12:46:26.192 ServerApp] Error uploading artifacts to object storage for operation: Untitled
    Traceback (most recent call last):
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor.py", line 281, in _upload_dependencies_to_object_store
        cos_client = CosClient(config=runtime_configuration)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/util/cos.py", line 41, in __init__
        self.client = self.__initialize_object_store()
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/util/cos.py", line 53, in __initialize_object_store
        if not self.client.bucket_exists(self.bucket):
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 404, in bucket_exists
        self._url_open('HEAD', bucket_name=bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2189, in _url_open
        region = self._get_bucket_region(bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2067, in _get_bucket_region
        region = self._get_bucket_location(bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2109, in _get_bucket_location
        raise ResponseError(response, method, bucket_name).get_exception()
    minio.error.SignatureDoesNotMatch: SignatureDoesNotMatch: message: The request signature we calculated does not match the signature you provided.
[E 2021-04-14 12:46:26.198 ServerApp] Uncaught exception POST /elyra/pipeline/export?1618429585839 (::1)
    HTTPServerRequest(protocol='http', host='localhost:8888', method='POST', uri='/elyra/pipeline/export?1618429585839', version='HTTP/1.1', remote_ip='::1')
    Traceback (most recent call last):
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/tornado/web.py", line 1704, in _execute
        result = await result
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/handlers.py", line 54, in post
        pipeline_overwrite
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor.py", line 89, in export
        None, processor.export, pipeline, pipeline_export_format, pipeline_export_path, overwrite)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/concurrent/futures/thread.py", line 57, in run
        result = self.fn(*self.args, **self.kwargs)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor_kfp.py", line 291, in export
        export=True)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor_kfp.py", line 452, in _cc_pipeline
        operation)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor.py", line 306, in _upload_dependencies_to_object_store
        raise ex from ex
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/pipeline/processor.py", line 281, in _upload_dependencies_to_object_store
        cos_client = CosClient(config=runtime_configuration)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/util/cos.py", line 41, in __init__
        self.client = self.__initialize_object_store()
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/elyra/util/cos.py", line 53, in __initialize_object_store
        if not self.client.bucket_exists(self.bucket):
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 404, in bucket_exists
        self._url_open('HEAD', bucket_name=bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2189, in _url_open
        region = self._get_bucket_region(bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2067, in _get_bucket_region
        region = self._get_bucket_location(bucket_name)
      File "/opt/anaconda3/envs/elyra_dev/lib/python3.7/site-packages/minio/api.py", line 2109, in _get_bucket_location
        raise ResponseError(response, method, bucket_name).get_exception()
    minio.error.SignatureDoesNotMatch: SignatureDoesNotMatch: message: The request signature we calculated does not match the signature you provided.
[E 2021-04-14 12:46:26.204 ServerApp] {
      "Host": "localhost:8888",
      "Connection": "keep-alive",
      "Content-Length": "1624",
      "Sec-Ch-Ua": "\"Google Chrome\";v=\"89\", \"Chromium\";v=\"89\", \";Not A Brand\";v=\"99\"",
      "Authorization": "token 54fdbd55651e6be3454e2cae9bbbcd6732fe6882f28def3d",
      "X-Xsrftoken": "2|3a5f00dd|c99ae0c73961a332e03c47f4c49cdcdd|1618416193",
      "Sec-Ch-Ua-Mobile": "?0",
      "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
      "Content-Type": "text/plain;charset=UTF-8",
      "Accept": "*/*",
      "Origin": "http://localhost:8888",
      "Sec-Fetch-Site": "same-origin",
      "Sec-Fetch-Mode": "cors",
      "Sec-Fetch-Dest": "empty",
      "Referer": "http://localhost:8888/lab/tree/untitled.pipeline",
      "Accept-Encoding": "gzip, deflate, br",
      "Accept-Language": "en-US,en;q=0.9,de;q=0.8",
      "Cookie": "_xsrf=2|3a5f00dd|c99ae0c73961a332e03c47f4c49cdcdd|1618416193; username-localhost-8888=\"2|1:0|10:1618429585|23:username-localhost-8888|44:MWYzOGNmNmIxNDYwNDIyNDgwODZiMThlODhlZjA5N2Y=|64be00a6fdf8d488349d9738d931dc40385cda5c581bfa58bec1d747f0e516b1\""
    }
[E 2021-04-14 12:46:26.204 ServerApp] 500 POST /elyra/pipeline/export?1618429585839 (::1) 362.06ms referer=http://localhost:8888/lab/tree/untitled.pipeline

Expected behavior

https://github.com/elyra-ai/elyra/blob/master/elyra/util/cos.py#L61 should be caught in https://github.com/elyra-ai/elyra/blob/master/elyra/pipeline/processor.py#L273-L306
A user friendly message should be displayed/logged, indicating that the credentials are a likely cause of this issue. (Note that a web search for this error yields results that seem to indicate that there are different reasons why this specific error is raised. )

Deployment information
Describe what you've deployed and how:

Elyra version: 2.2.1+
Installation source: from source
Deployment type: local installation

(Note that a web search for this error yields results that seem to indicate that there are different reasons why this specific error is raised. )

Are you suggesting that we treat all ResponseError instances as credential-related or that, after interrogating the ResponseError we treat all SignatureDoesNotMatch (internal) instances as credential-related?  It's tough to determine which specific error you're referring to.  I think the former is more of a generic exception while the latter could probably be classified as credential-related and suspect you're referring to SignatureDoesNotMatch.

and suspect you're referring to SignatureDoesNotMatch.

Yes, it's that one I was eluding to. Looking at the scenarios that can trigger an exception that is bubbled up ...
        self.client = Minio(endpoint=self.endpoint.netloc,
                            access_key=self.access_key,
                            secret_key=self.secret_key,
                            secure=self.secure)

        # Make a bucket with the make_bucket API call.
        try:
            if not self.client.bucket_exists(self.bucket):
                self.client.make_bucket(self.bucket)

the Minio constructor won't surface any issues because it doesn't seem to perform any validation
bucket_exists will surface host/port issues through MaxRetryError
bucket_exists surfaces credential issues through ResponseError/minio.error.SignatureDoesNotMatch
make_bucket surfaces bucket existence/permission issues through means other than SignatureDoesNotMatch

Therefore I believe it should be okay to interpret/surface SignatureDoesNotMatch errors as credential issues unless somebody can identify other scenarios that would cause  bucket_exists and make_bucket to also raise this exception.


[ANALYSIS] After changing the parameters of an analysis forcing widgets recalculation

the map gets refreshed but the widgets don't

it should do the same when a query is being applied

Issue moved to CartoDB/cartodb.js #1322 via ZenHub


jit optimizations

This MR introduces an optimization to JIT, enabling the optimization of buffers. As a result, it significantly reduces the space allocated on the GPU. Here are the performance results for CIFAR:
New Results with JIT Optimization:
  0 6341.29 ms run, 3484.22 ms python, 2857.08 ms CL,    2.92 loss, 0.009521 LR, 0.08 GB used,     23.08 GFLOPS
  1 5044.76 ms run, 1325.73 ms python, 3719.02 ms CL,    2.80 loss, 0.008464 LR, 1.09 GB used,     29.00 GFLOPS
  2 4382.71 ms run,   11.75 ms python, 4370.95 ms CL,    7.43 loss, 0.007408 LR, 1.09 GB used,     33.39 GFLOPS
  3 4391.83 ms run,   12.40 ms python, 4379.43 ms CL,    8.30 loss, 0.006351 LR, 1.09 GB used,     33.32 GFLOPS
  4 4386.60 ms run,   13.33 ms python, 4373.27 ms CL,    7.33 loss, 0.005294 LR, 1.09 GB used,     33.36 GFLOPS
  5 4389.28 ms run,   13.13 ms python, 4376.15 ms CL,    5.45 loss, 0.004237 LR, 1.09 GB used,     33.34 GFLOPS
  6 4387.37 ms run,   14.30 ms python, 4373.07 ms CL,    4.51 loss, 0.003180 LR, 1.09 GB used,     33.35 GFLOPS
  7 4245.75 ms run,    8.96 ms python, 4236.79 ms CL,    4.56 loss, 0.002124 LR, 1.09 GB used,     34.46 GFLOPS
  8 4382.56 ms run,   14.53 ms python, 4368.03 ms CL,    2.87 loss, 0.001067 LR, 1.09 GB used,     33.39 GFLOPS
  9 4380.30 ms run,   13.61 ms python, 4366.68 ms CL,    3.62 loss, 0.000010 LR, 1.09 GB used,     33.40 GFLOPS

Old:
  0 6336.27 ms run, 3776.85 ms python, 2559.41 ms CL,    2.92 loss, 0.009521 LR, 0.08 GB used,     23.09 GFLOPS
  1 5028.83 ms run, 1414.80 ms python, 3614.04 ms CL,    2.80 loss, 0.008464 LR, 1.96 GB used,     29.10 GFLOPS
  2 4401.00 ms run,   13.38 ms python, 4387.61 ms CL,    7.43 loss, 0.007408 LR, 1.96 GB used,     33.25 GFLOPS
  3 4406.28 ms run,   12.69 ms python, 4393.59 ms CL,    8.30 loss, 0.006351 LR, 1.96 GB used,     33.21 GFLOPS
  4 4440.72 ms run,   15.21 ms python, 4425.52 ms CL,    7.33 loss, 0.005294 LR, 1.96 GB used,     32.95 GFLOPS
  5 4391.67 ms run,   12.93 ms python, 4378.74 ms CL,    5.45 loss, 0.004237 LR, 1.96 GB used,     33.32 GFLOPS
  6 4399.21 ms run,   13.91 ms python, 4385.30 ms CL,    4.52 loss, 0.003180 LR, 1.96 GB used,     33.26 GFLOPS
  7 4255.84 ms run,    9.25 ms python, 4246.59 ms CL,    4.57 loss, 0.002124 LR, 1.96 GB used,     34.38 GFLOPS
  8 4410.97 ms run,   13.68 ms python, 4397.29 ms CL,    2.88 loss, 0.001067 LR, 1.96 GB used,     33.17 GFLOPS
  9 4379.89 ms run,   13.89 ms python, 4366.00 ms CL,    3.62 loss, 0.000010 LR, 1.96 GB used,     33.41 GFLOPS

With this optimization, we observe substantial memory savings of up to 0.8 GB and reduced memory usage during execution by up to 55% compared to the previous implementation without the optimization.
This implementation uses a greedy approach which is not 100% efficient for all cases. Also we can get more savings using reordering of some kernels.

Is there a way to use a caching allocator to do this?

Yeah, I thought of making it not-JIT only. I think it's possible, but the only pitfall is the following. We have the following code:
z = x@y
... (1)
i = z@a
... (2)
w = i@b
print(w.numpy())
print(z.numpy())

We want to minimize allocations and memory working set. We could easily do this since tinygrad is lazy. In this case, to calculate w, we have to calculate z. What if we can optimize memory allocation and reuse the buffer of z after i is calculated, since z is not used anymore? This allows us to calculate w with less memory used. But in this example, if the user wants to access z after w, it might not be calculated (since its buffer was used for other computations). Is it fine to launch more kernels to calculate z again?

Yea the generic would be a caching allocator. torch has one, tinygrad used to have one, there's a few challenges though (like when do you free?)

We definitely need this, Stable Diffusion can't be jitted right now.

Yeah, just tried some approaches, and it seems it is possible to move this into lazy.py.
Simple cases work fine. I was worried about x.numpy() in this example, but it seems to work fine without additional kernels.
for i in range(10):
    x = x@w
    w = a@x
print(w.numpy())
print(x.numpy())
print(GlobalCounters.max_mem_used // 1e6)

And for this example, the maximum memory allocated on the GPU at the same time dropped from 83 MB to 12 MB.
As for the implementation, I have currently come up with a kind-of PromiseBuffer which is returned instead of a real device buffer. I decided to go with that since it is pretty complex to manage something like ref counting for buffers with current implementation (since we do optimizations right in the middle of realization). With PromiseBuffer, we get a linear set of kernels (the set of kernels for the whole lazy-area, i.e., all the kernels from the previous realize() (in user code) to the current one). After that, kernels are executed with buffer optimization, and PromiseBuffers are replaced with real buffers for every LazyBuffer which is alive outside of this lazy-area.
I'm not sure if PromiseBuffer is the final solution, but it is the first one that works :)

I put up a $500 bounty for this.
"caching allocator, all backends, must intelligently free, reduce memory usage in both JIT and thneed"
So yea, it might be something like PromiseBuffer. The other benefit of a caching allocator we need is not actually calling malloc all the time. Malloc is slow.

As of now, the changes look like this:

Promised realization in lazy.py. We just postpone the execution of kernels until we know all of them. This allows us to control which LBs are referred to and which are not, and free them as soon as we do not need them (when I tried to do so inside the tree, it was messier since we want to apply optimizations during realization). Since we have all the kernels to run and information about their dependencies on each other, I think we could do some optimizations here. For example, scheduling kernels to different GPUs(?). If this makes any sense, I believe this would be beneficial, as we kind of know the kernels which are dependent on us and so on.
Allocator. Currently, I implemented an LRUcache which should cache buffers depending on the memory available on a device. We have a lot of small allocations (<8MB), and basically the best way to cope with them is to allocate a huge pool and give pieces from it. My question is, do we want this? In my opinion, this is the best option to remove all small allocations, but it adds complexity to backends. I mean backends should support mapping buffers with the given offset (of course, if they do not support binding buffers with a given offset, we can do this manually in the linearizer). To not make tinygrad messy with an optimized allocator, I think it is possible to wrap a C++ implementation for Python and import it. I wrapped one (https://pypi.org/project/TLSFAllocator) and will test performance to see if there is any difference for this complexity.

As for the results of these patches, many real ML models show some peak memory savings.

model
peak old(mb)
peak new(mb)
diff

train_efficientnet.py
96
76
-20,83%

hlb_cifar10.py (JIT)
1017
472
-53,59%

transformer.py
11,7
11,1
-5,13%

whisper.py
22,9
12,3
-46,29%

vit.py
63,1
24,7
-60,86%

stable_diffusion.py
5666
4910
-13,34%

Allocation count drops about half with LRUAllocator. With TLSFAllocator for smaller sizes, I get way better results on the paper (will see if this matters for performance, as I have said).

These seem like different issues. Can we just merge the LRUcache first? How many of the gains does that get us?

So, I added LRUAllocator and CacheCollector, which help reduce memory consumption and calls to allocation functions. For example, in jitted hlb_cifar10.py, the memory allocated for jit dropped from 1.02 GB to 0.73 GB. As for calls to malloc, they are reduced from ~5600 to ~3700 in train_resnet.py.
CacheCollector is essential for reducing memory consumption in jitted parts, as the previous version held references to all buffers, preventing them from being reused. The new CacheCollector allows buffers to be freed when safe, efficiently optimizing buffers while ensuring correct final output without requiring changes from other parts collecting cache. It also handles circular dependencies like LSTM to maintain proper functionality.
I think this is ready for first review.

Is there any way this PR can be broken up?


Float function, int function added in conversion functions

Float function and int function added.
Ref: https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#conversion-functions

:tada: This PR is included in version 2.0.0-dev.7 :tada:
The release is available on:

GitHub release
v2.0.0-dev.7
v2.0.0-dev.7

Your semantic-release bot :package::rocket:

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

GitHub release
v3.2.0
v3.2.0

Your semantic-release bot :package::rocket:


Making typed.Dict a typing Generic (MutableMapping)

This PR adds typing information to the typed Dict, so in can be used as a MutableMapping in variable annotations, e.g.
my_dict: Dict[str, int] = Dict()
my_dict['a'] = 1
my_dict[2] = 1 # would get a mypy error
f: str = my_dict['a'] # would get a mypy error

This is not related to checking Numba itself with mypy, this just allows users to check their typed.Dict code with mypy.

Note to the reviewer: even though this is a typing PR, I have made a small change in the behaviour of the typed dictionary, based on the typing analysis.
The setdefault method had a default value for its default parameter equal to None, ie def setdefault(self, key, default=None). Initially, I was going to type this as default: Optional[VT] = None. However, this does not make much sense for typed.Dict as it is not possible to set None as the value of a key, since None is of a different numba-type than VT. Passing None makes no sense, and neither does passing nothing (which will have the same effect). Having removed the default value, I found a failing test. This test (https://github.com/numba/numba/blob/3fd158f79a12ac5276bc5a72c2404464487c91f0/numba/tests/test_dictobject.py#L1568-L1572)
checks that calling setdefault without a second argument returns an error, but with a specific error message. This had to be adjusted as well. I believe that the normal error message returned by Python when not passing a mandatory argument is better than the current error message. Below I paste both errors for comparison:
New error message (Python's error message for missing arguments)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: setdefault() missing 1 required positional argument: 'default'

Old error message
Traceback (most recent call last):
  File "<input>", line 4, in <module>
  File "/home/.../numba/numba/typed/typeddict.py", line 205, in setdefault
    return _setdefault(self, key, default)
  File "/home/.../numba/numba/core/dispatcher.py", line 421, in _compile_for_args
    error_rewrite(e, 'typing')
  File "/home/.../numba/numba/core/dispatcher.py", line 362, in error_rewrite
    raise e.with_traceback(None)
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
- Resolution failure for literal arguments:
No implementation of function Function(<function impl_setdefault at 0x7f89e85cfee0>) found for signature:
 >>> impl_setdefault(DictType[unicode_type,int64]<iv=None>, unicode_type, none)
There are 2 candidate implementations:
  - Of which 2 did not match due to:
  Overload in function 'impl_setdefault': File: numba/typed/dictobject.py: Line 846.
    With argument(s): '(DictType[unicode_type,int64]<iv=None>, unicode_type, none)':
   Rejected as the implementation raised a specific error:
     TypingError: Failed in nopython mode pipeline (step: nopython frontend)
   No implementation of function Function(<built-in function setitem>) found for signature:
    >>> setitem(DictType[unicode_type,int64]<iv=None>, unicode_type, none)
   There are 16 candidate implementations:
         - Of which 14 did not match due to:
         Overload of function 'setitem': File: <numerous>: Line N/A.
           With argument(s): '(DictType[unicode_type,int64]<iv=None>, unicode_type, none)':
          No match.
         - Of which 2 did not match due to:
         Overload in function 'impl_setitem': File: numba/typed/dictobject.py: Line 674.
           With argument(s): '(DictType[unicode_type,int64]<iv=None>, unicode_type, none)':
          Rejected as the implementation raised a specific error:
            TypingError: Failed in nopython mode pipeline (step: nopython frontend)
          No implementation of function Function(<intrinsic _cast>) found for signature:
           >>> <unknown function>(none, class(int64))
          There are 2 candidate implementations:
                - Of which 2 did not match due to:
                Intrinsic in function '_cast': File: numba/typed/typedobjectutils.py: Line 23.
                  With argument(s): '(none, class(int64))':
                 Rejected as the implementation raised a specific error:
                   TypingError: cannot safely cast none to int64. Please cast explicitly.
            raised from /home/.../numba/numba/typed/typedobjectutils.py:76
          During: resolving callee type: Function(<intrinsic _cast>)
          During: typing of call at /home/.../numba/numba/typed/dictobject.py (683)
          File "numba/typed/dictobject.py", line 683:
              def impl(d, key, value):
                  <source elided>
                  castedkey = _cast(key, keyty)
                  castedval = _cast(value, valty)
                  ^
     raised from /home/.../numba/numba/core/typeinfer.py:1071
   During: typing of setitem at /home/.../numba/numba/typed/dictobject.py (853)
   File "numba/typed/dictobject.py", line 853:
       def impl(dct, key, default=None):
           <source elided>
           if key not in dct:
               dct[key] = default
               ^
  raised from /home/.../numba/numba/core/typeinfer.py:1071
- Resolution failure for non-literal arguments:
None
During: resolving callee type: BoundFunction((<class 'numba.core.types.containers.DictType'>, 'setdefault') for DictType[unicode_type,int64]<iv=None>)
During: typing of call at /home/.../numba/numba/typed/typeddict.py (58)
File "numba/typed/typeddict.py", line 58:
def _setdefault(d, key, default):
    return d.setdefault(key, default)
    ^

@luk-f-a thank you for updating this. What is the current state of this PR, do you think it can become part of 0.54?

it's ready for review. I started it last year, and I improved it back in February after the PR about typed.List was merged (https://github.com/numba/numba/pull/5958). I took what I learnt there and put it here.
I think it can be part of 0.54.

@luk-f-a thank you for this. I have added it to the milestone for 0.54 -- now we need to find a (willing and able) reviewer!

Am just dealing with items in the 0.54 milestone, @luk-f-a any chance you could resolve the conflicts please? Thanks!


Global Registry function for node metadata management

Introduction of a Global Registry (GR) function to manage metadata needed by GB to discover registered WIS nodes and for WIS nodes to obtain source IP addresses of GB and GC
Procedures for WIS nodes to let GB and GC connect
Procedures for WIS, GC and GB to manage relevant metadata in the GR

@golfvert  and @tomkralidis  . Can this be merged? I believe all Remy's comments are addressed. When merging the Secretariat will make sure consistent terminology is used for nodes and services.

@kurt-hectic

should #27 be closed?
we have recently updated the structure of the guide, which will required updates to fix the resulting merge conflicts in this PR

@kurt-hectic @golfvert closing this PR and invite a new PR based on the new structure (and to resolve merge conflicts).


Cursor width changes randomly because window.zoomLevel interacts with system DPI settings.

VSCode Version: 1.13.0
OS Version: Windows 7, 10.

Steps to Reproduce:

Go to "Control Panel\Appearance and Personalization\Display", set text size to "Medium - 125%"
Set "window.zoomLevel": 0, move the cursor around, observe it occasionally being twice as wide:

This is more or less a duplicate of #22904, except the workaround there was to not use window.zoomLevel at all, while in my case I'm not using it, it's Chromium deciding to respect the OS setting in a way that breaks vscode rendering if I understand it correctly.
Anyway, I want to add an actual work-around, two even.

Set window.zoomLevel to -1.25, this will negate the OS setting.
The actual formula seems to be -(OS_zoom - 100) / 20: each negative point in zoomLevel decreases text size by 20%, in a sense of dividing text size by 1 + 0.2 * zoomLevel. So if we need to compensate for a 25% increase, we need -1.25 points, and for 50% it's -2.5 points.

Or if you'd prefer a larger UI instead, you can set zoomLevel to 1, this gives you 1.25 * 1.2 = 1.5 combined zoom factor, which apparently doesn't produce the same artifacts.

In all cases the primary cursor is "painted" as a <div> of width 2px. Chromium ultimately decides how to "zoom in" to respect the OS settings (possibly by multiplying everything with 1.25, and then proceeding to snap to real screen pixels).
AFAIK there is no possible code change we can do on our side to workaround this snapping / rounding-error quirks. I am thinking this is reproducible using Chrome at https://jsfiddle.net/b4hkeLew/ It is just a matter of playing with the left offset position until the snapping / rounding-error happens.

@alexandrudima Interesting, that explains why there's no artifacts at 150% zoom (because it yields 3px exactly). And why there still are artifacts at 150% with "editor.cursorStyle": "line-thin".
Look at this though: https://jsfiddle.net/655jcnmf/2/ when I specify 1.6px width (2 / 1.25), there's no width artifacts!
So, if you could somehow determine OS DPI and also keep track of your own zoomLevel, you could pre-round line width based on that and use it everywhere.
Or at least it would be nice if you exposed it as some sort of an advanced option. Because vscode is otherwise Literally Unplayable™ for me without tweaking anyway, and I'd prefer a tweaking option that reliably works with any zoomLevel.

I have been down this road only last week. The problem is that I could not come up with any formula that makes sense and uses the values I have at my disposal: window.devicePixelRatio, document.createElement('canvas').getContext('2d').webkitBackingStorePixelRatio which when divided should give the pixelRatio, zoomLevel or zoomFactor.
Perhaps I am missing something obvious but here is what I observed on a mac book pro's built-in monitor:
See https://github.com/Microsoft/vscode/blob/91a0e04417cabaeda04bc20891d58ae338179f66/src/vs/editor/browser/controller/textAreaHandler.ts#L423
// Observed values on a retina screen (by taking screenshots):
// |--------|-----------|------------|------------|-----------|
// | css px | zoomLevel | zoomFactor | pixelRatio | screen px |
// |--------|-----------|------------|------------|-----------|
// |   18   |    -8     |   0.2325   |   0.5000   |      8    |
// |   18   |    -7     |   0.2790   |   0.5581   |     10    |
// |   18   |    -6     |   0.3348   |   0.6697   |     12    |
// |   18   |    -5     |   0.4018   |   0.8037   |     14    |
// |   18   |    -4     |   0.4822   |   0.9645   |     18    |
// |   18   |    -3     |   0.5787   |   1.1574   |     20    |
// |   18   |    -2     |   0.6944   |   1.3888   |     26    |
// |   18   |    -1     |   0.8333   |   1.6666   |     30    |
// |   18   |     0     |   1.0000   |   2.0000   |     36    |
// |--------|-----------|------------|------------|-----------|

I found this: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/lkcr/content/common/page_zoom.cc
And the formula there matches your observed zoomFactor perfectly and pixel values pretty close (if we assume a 2x factor coming from the device DPI or something):
for zoomLevel in range(-8, 1):
    zoomFactor = 1.2 ** zoomLevel
    print(f'{zoomLevel:>2} | {zoomFactor:0.4f} | {36 * zoomFactor:>5.2f}')
====================
-8 | 0.2326 |  8.37
-7 | 0.2791 | 10.05
-6 | 0.3349 | 12.06
-5 | 0.4019 | 14.47
-4 | 0.4823 | 17.36
-3 | 0.5787 | 20.83
-2 | 0.6944 | 25.00
-1 | 0.8333 | 30.00
 0 | 1.0000 | 36.00

(also, this means that I was wrong about the way zoom works, and it worked for me both times accidentally, because 1.25 * (1.2 ** -1.25) = 0.995 while the correct zoomLevel to counteract 125% zoom is -1.2239)

Thank you for looking and helping out with this. To sum up:

zoomFactor = Math.pow(1.2, zoomLevel)
window.devicePixelRatio = Math.max(0.5, Math.min(5, zoomFactor * systemRatio)) (for the screen I measured with systemRatio appears to be 2)
screenPx = window.devicePixelRatio * cssPx with the extra constraint that rounding depends on how the dom node "aligns" to the screen pixels. i.e. it depends on what is the left and the width of the dom node. I think that's why 17.36 is rounded to 18 in my measurements.

So we could programmatically set the cursor width with the following formula:
function dpiAwareSize(cssPx) {
  var screenPxWidth = window.devicePixelRatio * cssPx;
  return Math.round(screenPxWidth) / window.devicePixelRatio;
}

The idea is that we don't want to have the cursor be always 2 screen pixels. If the user zooms in at 200%, the cursor should be 4 screen pixels. In your case it would be Math.round(1.25 * 2) / 1.25 = 2.5. So we would set it on our side to be 2.5px such that it will be of a constant width of 3 screen pixels.

Sounds good. By the way, this function should also be used for drawing rulers (see #9634) and the newly enabled by default Indent Guides, they too are drawn with varying screen widths for me.

The function from above appears to work fine -- Windows at 125% zoom:


Tutorial - Transit Layer

Write a getting started tutorial for instrumenting systems w/ the transit layer.

This tutorial can just be a modified version of this one: http://brownsys.github.io/tracing-framework/docs/tutorials/baggage.html


Security issue with TalkerHttpLogger: Bearer tokens

Hi,
I was playing with Talker and the talker_http_logger package.
My app uses a piece of code very similar to the example:
import 'package:http_interceptor/http_interceptor.dart';
import 'package:talker_http_logger/talker_http_logger.dart';

void main() async {
  final client = InterceptedClient.build(interceptors: [
    TalkerHttpLogger(),
  ]);

  await client.get("https://google.com".toUri());
}

Looking at the http logger:
class TalkerHttpLogger extends InterceptorContract {
  TalkerHttpLogger({Talker? talker}) {
    _talker = talker ?? Talker();
  }

  late Talker _talker;

  @override
  Future<BaseRequest> interceptRequest({
    required BaseRequest request,
  }) async {
    final message = '${request.url}';
    _talker.logTyped(HttpRequestLog(message, request: request));
    return request;
  }

  @override
  Future<BaseResponse> interceptResponse({
    required BaseResponse response,
  }) async {
    final message = '${response.request?.url}';
    _talker.logTyped(HttpResponseLog(message, response: response));
    return response;
  }
}

The logger simply writes the request to the logs, including the headers, without obfuscating anything. This is a problem when the headers contain stuff like  Bearer 1234.... These sensitive values are written in clear to the logs.
I would suggest obfuscating these specific fields by default, with maybe a flag to disable the obfuscation.
Cheers

Hello @JPFrancoia !
Great idea 🦄
I fully support the implementation of such functionality in the package.
Does you have any representation or reference of this feature ?


A new idea

Great mod, is it possible to replace the chest icon on the render tab based on how much content the chest is? For example, a chest has observer645, shulker box10, and dropper64*4. Then calculate the chest icon based on the maximum amount of a single item. I think this might be more suitable for a situation where a lot of boobs are together.

Unfortunately, I can't make the player read the contents of a closed inventory without making this mod also required on the server as well.
I'd like to keep this mod client-sided. A similar thing that I could do is #27. Checking in-world block/entity positions is possible to accomplish purely on the client


feat: node resource topology scheduler plugin

What type of PR is this?
Enhancements
What this PR does / why we need it:
support topology-aware scheduling plugin and numeric topology policy
Which issue(s) this PR fixes:
https://github.com/kubewharf/katalyst-core/issues/160
topology-aware scheduling plugin pr in katalyst-core: https://github.com/kubewharf/katalyst-core/pull/298

@csfldf pls check for this pr if it suits your convenience

@caohe @csfldf


Stateless version of Popselect component

This function solves the problem (这个功能解决的问题)
The Popselect component is great, but it contains state about what the currently selected item is. I would like to use this component as a stateless menu used to trigger one of a variety of different actions.
Expected API (期望的 API)
Create a new component like Popselect, but without the "value" or "on-update:value" props. Instead, each menu item should accept some kind of "on click" handler.

You can set value to null and use on:update:value as a handler.

Ah, fair enough. I think it would be worth documenting this use case, as it's not obvious.

Maybe in this case dropdown is a better choice.

Thanks, that does make more sense!


Block difficulty is always '0' (zero)

Expected Behavior
Hardhat (on the left) has difficulty and totalDifficulty values set

Current Behavior
Ganache (on the right) has both difficulty and totalDifficulty values equal to zero.

Possible Solution
Both projects use ethereumjs-vm version v4.2.0.
I assume the difference happens during block creation (as far as I remember Hardhat set difficulty based on the latest block):
https://github.com/nomiclabs/hardhat/blob/6c3cdb7445c3b2960ed6bfce50d09bc11338479e/packages/hardhat-core/src/internal/hardhat-network/provider/node.ts#L1040
Ganache doesn't seem to have any difficulty-related header assignment:
https://github.com/trufflesuite/ganache-core/blob/1177fe8a2711066a1b082b15d22585158001e80d/lib/blockchain_double.js#L600
P.S. Btw, also https://github.com/ethereumjs/ethereumjs-vm/pull/929 was merged 5 days ago - introducing a new way of setting a difficulty in ethereumjs-vm (but Hardhat was setting difficulty before this release).

Thanks for opening this issue. Are you using forking?

Tried with and without forking - neither makes a difference - difficulty is still at 0.

Without forking difficulty and totalDifficulty should always be 0, and the nonce and mixHash values will also always be 0 (since ganache does not do any PoW). When getting a block before the fork number (or latest at the time of forking) difficulty and totalDifficulty should match the original block's values.
Setting difficulty to 0 in ganache is intentional, as we currently take the stance that because difficulty is a value that is used to ensure new blocks aren't generated too quickly or too slowly, and ganache's default is a 0-second block time, so a difficulty of 0 is the target.
When setting ganache to have a non-zero blocktime, you could make the argument that we should calculate difficulty and mixhash... but what values do we put?
I'm definitely open to a other ideas, so please feel free to give arguments for why we should change.

When forking - it doesn't retain the original forked values - just resets both difficulty and totalDifficulty to 0.

The general logic about it being 0 as the blocks are instantaneous is quite solid. Although some projects (like Hardhat) use difficulty 1 for that (so the totalDifficulty keeps increasing). I don't know which logic is better.
The reason why we need this on a synthetic developer chain - we're currently developing some intricate contracts that rely on blocks difficulties to make decisions (they values are passed with block header RLP's, decoded, and verified, as EVM cannot access them directly).
But there's no way to fully test these contracts currently, except maybe on real networks with real mining - and that's also not quite good for testing - as we cannot really affect difficulty to test different values. So currently we're designing some hacks and mocks, but it would be nicer if contract really tested the values from the chain.
So I was thinking about several solutions to this:

Setting a fixed value during network creation
Setting a randomized value during network creation (a range?)
Introducing some RDP calls (a-la evm_increaseTime) - maybe evm_increaseDifficulty or evm_setDifficulty or something like that (it could work with both instant and non-zero blocktime).

Or can be a mix of the above.

Ah, thanks for the use-case example.
Also, looks like there are two bugs in forking:

On blocks fetched from the original chain we are setting difficulty to totalDifficulty.
Even though we've intended for difficulty to be 0, we don't keep the totalDifficulty around, as we should.

As for your use-case example, i'll talk to the team internally and see what we can come up with!

https://github.com/trufflesuite/ganache-core/pull/771 addresses this issue.

merged!


get_contracts_deployed() sounds too active; should be fetch_deployment_data()

"get contracts deployed" sounds to me like sending a transaction to deploy contracts.  The function does not do that.  Instead it just finds the deployment data in the filesystem.

This function is also used out of the project. Don't forget documenting the change in CHANGELOG and communicating the change.

What about get_contract_deployment_info(...)?

@palango good idea.  That sounds a way more accurate.  Also, people looking for the old name will also find the new one (because the two names look similar enough).

I'm going to solve this together with #774.

#775 will fix this.

Maybe nobody is using get_contracts_deployed() anymore.  I should check that.

raiden still contains calls to get_contracts_deployed().

After https://github.com/raiden-network/raiden/pull/3703 is merged, raiden-contracts can remove get_contracts_deployed().


Update scalafmt-core to 2.4.2

Updates org.scalameta:scalafmt-core from 2.0.1 to 2.4.2.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

labels: library-update, semver-minor

Manually solved in https://github.com/fp-in-bo/jms4s/commit/4ff991601a5511aafa6704ec557249c92282e071


Freezing in CMD without starting browser

The problem encountered on https://dotnet.microsoft.com/learn/aspnet/hello-world-tutorial/run
Operating System: windows
Asp.net core tutorial web app just freezing in CMD without starting the browser.

It's not intended to launch a browser. You'll need to visit the URL printed to console in the browser of your choice, and you should see additional information printed to console when you do so.

Thanks man :)


Add a Video Editor

Can we have a video editor like KdenLive or something cause it can be useful many times?
The Image says KDE.KdenLive, but i think it's the windows version only...

Added in #240 - Closing Issue

It's good to see that you are still maintaining this repo :D


permit name param for profile on registration. allow access to read u…

…ser in profile update form

Hotfix. Needs tests still: #81


The website should mention the UI part of s3gw

Fixes: https://github.com/aquarist-labs/s3gw/issues/714

LGTM! thanks @votdev

Please do not merge before v0.21.0 is released because with this release the UI REST API will be introduced which will not need a reverse proxy to get rid of the CORS issues of the UI.


Procedural IBL Enhancement in CesiumJS

Description
This pull request introduces a new system for "procedural" lighting that builds on the Image-Based Lighting (IBL) approach in CesiumJS, aimed at improving the realism and visual quality of the default lighting environment. The changes focus on techniques that create a plausible environment map dynamically based on the current lighting conditions an existing atmospheric scattering code which renders the sky.
Image-Based Lighting Sandcastle
After

Before

Mirror Ball
After

Before

High Altitude Mirror Ball
After

Before

Dynamic Lighting

TODO: More screenshot comparisons
Key Changes

DynamicEnvironmentMapManager: This new component generates lighting value dynamically based on the existing atmospheric calculations. It uses compute command to generate the following when position or sun position has significantly changed.

Environment Map: generated  to match lighting conditions based on a central location and the current sun position.
Specular Environment Maps: Implements several levels of specular maps, corresponding to various degrees of surface roughness. This allows for more nuanced reflections and highlights that better respond to scene lighting.
Spherical Harmonic Diffuse Lighting: Computes of spherical harmonic values for diffuse lighting, enhancing the quality and realism of the light diffusion across different surfaces.

The computed values from the new IBL setup are directly used in conjunction with the scene's directional light source, primarily the sun, to establish comprehensive lighting effects across models and 3D Tilesets.
I've chosen to make the DynamicEnvironmentMapManager options accessible via the Model and Cesium3DTileset only, at least for this PR, mainly due to the performance impact if these values are constantly updated.

Additional Updates

Fix Spherical Harmonic reconstruction: as per the filament maintainers
Fix for ImageBasedLighting.imageBasedLightingFactor: This property was broken and went unnoticed.
Removal of ImageBasedLighting.luminanceAtZenith: This property was removed instead of deprecated because there is no direct equivalent in the new implementation, and is likely not widely used (based on the fact that the above bug went unnoticed).
Modifications to CubeMap: New utility functions in support of the operations in DynamicEnvironmentMapManager, such as copying a texture to a specific face.

Issue number and link
N/A
Testing plan

Pull down this branch and run unit tests locally (I had to tweak rendering tests to account for the new lighting. Please double check me here.)
Run the development PBR Lighting sandcastle example and make sure all the sliders/buttons work.
Review all Sandcastle examples and ensure new lighting parameters are adequate for all cases.

Author checklist

[x] Fix race condition where the map sometime does not initialize atmosphere values correctly
[x] Fix slightly askew environment map orientation
[x] Confirm shadows are affecting lighting correctly
[x] Expose DynamicEnvironmentMapManager options for Model entities?
[x] Any adjustments needed for HDR?
[x] Performance pass and testing
[x] Cleanup Sandcastle examples-- Streamline existing ones where possible
[x] Cleanup pass on shaders
[x] I have submitted a Contributor License Agreement
[x] I have added my name to CONTRIBUTORS.md
[x] I have updated CHANGES.md with a short summary of my change
[x] I have added or updated unit tests to ensure consistent code coverage
[x] I have updated the inline documentation, and included code examples where relevant
[x] I have performed a self-review of my code

@jjspace Could you please take a review pass on this?

@ggetz Couple initial comments playing with the new sandcastle.

When I have a small model selected and modify the height the camera zooms really far out. I saw the comment about not handling small models well but is there a way to mitigate that when modifying the height slider?
As mentioned in standup I feel like models are overly blue. Not sure if it's the result of these changes directly or our general visual changes as a whole. For example, this pot at height 400 almost looks like it's glowing blue, like it's emissive itself instead of just reflecting the light around it.

Same with the wicker ball. I'd expect it to be brighter in the areas that are highlighted but I'm not completely sure I'd expect the highlights to be so bluish in color? Maybe I'm just not imagining what the materials would look like correctly

When modifying the height value it doesn't seem that the lighting is updated as I thought you said it should.
Pot loaded at 400 then moved to 80,000ish:

Pot reloaded already at 80,000ish:

Thanks for taking a look @jjspace!

When I have a small model selected and modify the height the camera zooms really far out. I saw the comment about not handling small models well but is there a way to mitigate that when modifying the height slider?

Yes, but since this is a developer sandcastle example oriented for testing, I think it would be more trouble than it's worth. If you think it's critical, let me know.

As mentioned in standup I feel like models are overly blue. Not sure if it's the result of these changes directly or our general visual changes as a whole. For example, this pot at height 400 almost looks like it's glowing blue, like it's emissive itself instead of just reflecting the light around it.

Fair enough. I added a groundAlbedo property to determine how much light is reflected up by the ground (defaulting it to the average ground albedo value on earth). This means that the ground is reflecting more color into the scene. I think this helps balance out the blue from the sky.

For a point of comparison see the glTF Sample Viewer. You can change out the environment map to one with a blue sky for a similar lighting scenario, such as "Wide Street" or "Helipad Golden Hour":

When modifying the height value it doesn't seem that the lighting is updated as I thought you said it should.

Good catch. That should be cleaned up now.
I'm taking a last pass on your other feedback.

Fair enough. I added a groundAlbedo property to determine how much light is reflected up by the ground (defaulting it to the average ground albedo value on earth). This means that the ground is reflecting more color into the scene. I think this helps balance out the blue from the sky.

I think this helps a ton with the appearance of the light around objects like the pot of coals, it's no longer uncannily blue.

I'm taking a last pass on your other feedback.

I think overall this is looking pretty good now, is there more you wanted to do?

Great, thanks @jjspace!

I think overall this is looking pretty good now, is there more you wanted to do?

I just need to add a few unit tests to reflect my changes– doing so now.

@jjspace This should be good to go!


Please add such item as "Show QR code for a client"

Please add such item as "Show QR code for a client"

Currently only client names are known for script. To implement the feature the client configs folder should be fixed and stored near the server config. It is not secure but can be done.


SOLR-16229: Abort requests on exception

Should this be catching RuntimeException as well so we can capture these too?  For example processErrorsAndResponse can throw RemoteSolrException (which subclasses RuntimeException).

Should this be catching RuntimeException as well so we can capture these too?

Yes, we should. Thanks, again, for catching that @dsmiley


fix a typo

thanks, I've rewritten the doc on that function to be more clear, since it stopped making sense to me even... :sweat_smile:


Adding tvos support

I don't understand this pull request. It doesn't compile. The current release is Swift 3. If you need Swift 2.3, see the previous release: https://github.com/RNCryptor/RNCryptor/tree/RNCryptor-4.0.0.
Did you mean just to add tvos support to the podspec?

I added tvOS now through another commit. Thanks for the submissions.


Iod 175

Description
This PR includes the following proposed change(s):

{List all the changes, if possible add the jira ticket #}

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Refactoring / Documentation
[ ] Version change

if your change is a breaking change, please add breaking change label to this PR
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Does the change impact or break the Docker build?

[ ] Yes
[x] No

If Yes: Has Docker been updated accordingly?

[ ] Yes
[x] No

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[x] New and existing unit tests pass locally with my changes

It looks like you're reversing the executable byte code on

application-health.sh
deploy-app.sh
dev-app-build-deploy.yaml

please remove these from the PR as this will rewind work done to the deploy pipeline to DEV.

We still need to remove these three scripts from this PR, these byte code changes will stop the deployment pipeline.

If you can't remove the file runn the following in CLI:
git update-index --chmod=+x path/to/file
where path to file is the name and/or path to the files listed above


Allow change minTopNThreshold per topN query

Current druid.query.topN.minTopNThreshold is configured per server, and need to restart servers to take effect when changed, this patch is to make this configuration can change per query and do not need to restart servers to take effect.

@binlijin can we add a test?

@fjy, ok, also need to update the doc.

@binlijin BTW, for your performance issues with topNs over thetasketches, I think you can look into increasing the processing buffersize to avoid doing multiple passes

and also smaller buckets if possible

@fjy , we use configuration almost get from http://druid.io/docs/latest/configuration/production-cluster.html, and set druid.processing.buffer.sizeBytes=1073741824.
Smaller buckets is a possible way, also we find a minor optimization to topN, will later post the PR.

@binlijin you may want to increasing the processing size to 2G, because if your theta sketches are very large, perhaps many passes are being done

Yes, increasing the processing size will do some help.

@binlijin any chance we can add some docs, tests, and finish this one up?

@fjy，done

:+1:

:+1:, please squash the commits.

@nishantmonu51 I think the commits are pretty distinct and don't need to be squashed

@fjy: I don't think so, test and doc changes are NOT distinct from the implementation at all and should go in a single commit whenever possible, this makes it easier to backport/revert related changes whenever needed. In case someone needs to revert a feature, docs for that feature should always be reverted along with them and having them in a single commit makes it easier. having separate commits makes it easier to revert one and not the other.
any specific reasons you think code changes and related tests/doc changes need to go as separate commits ?


Fix incorrect null results for "Downgrades HTTPS"

This commit fixes 2 bugs with the logic for computing "Downgrades HTTPS":

If a site does not have HTTPS ("Valid HTTPS": false"), then
"Downgrades HTTPS" should be null because it doesn't make sense to ask if a
site downgrades HTTPS if it doesn't have HTTPS in the first place. Previously,
the code would return false in this case.

If a site does have HTTPS, there were some cases where the previous code
would incorrectly return null instead of false. Specifically, this would
happen if a site's domain name was also the canonical endpoint, in which case
the site does not redirect and all values related to redirects are None. Due to
Python's short-circuit evaluation of boolean expressions, this None value was
returned instead of the intended False from is_downgrades_https.

Fixes #49.

2. is great, and describes the right fix for #49. Thank you for tracking this down and filing the PR!
However, I think we should return false even if a site does not have HTTPS. While there's a valid semantic difference, I don't think it's reasonable to oblige all downstream tools to potentially handle semantic differences between a null and false response. Instead, I think we should basically expunge all null fields from output and treat any emergence of them as a bug. If we were doing that from the get go, then I think #49 wouldn't have happened at all.
Would you mind tweaking the PR to just fix the short-circuit bug? Also, the build is failing on a couple flake8 errors, so fixing those would also make it easier to merge.

However, I think we should return false even if a site does not have HTTPS. While there's a valid semantic difference, I don't think it's reasonable to oblige all downstream tools to potentially handle semantic differences between a null and false response.

Ok! I disagree, and think the semantic difference is useful to downstream tools. As the maintainer of a downstream tool, and frequent debugger of pshtt, I think it is helpful to distinguish between "true", "false", and "n/a". But it is not my place to debate that! I will make the change you requested.
Will also fix the flake8 errors.

I will make the change you requested.

I appreciate it! This looks good.

Ok! I disagree, and think the semantic difference is useful to downstream tools. As the maintainer of a downstream tool, and frequent debugger of pshtt, I think it is helpful to distinguish between "true", "false", and "n/a".

That's good feedback, and I could be wrong. But let me put it another way -- if we keep it to true/false, downstream tools that want to can still apply logic to distinguish the case (as in, if Valid HTTPS is false, display N/A for Downgrade HTTPS). But if we add null values in, all downstream tools are forced to care about N/A vs False. That said, I only know of 3 live downstream users -- Pulse, SecureTheNews, and DHS reports -- so that population is probably who we should be optimizing for.


gene id from reference GTF not shown in the output file

Hi,
I'm using StringTie and it runs smoothly and quite fast on my data, however, when I look at the output file I don't see the gene_ids that were in the GTF file, instead I see the following pattern:
.... gene_id "samplename.1"; ...
.... gene_id "samplename.2"; ...
.... gene_id "samplename.3"; ...
etc etc
Only the reference id is found the same where I can actually look up the gene_id in the GTF file and then search for it in the StringTie output. But this is not useful since I would like to have a look at the FPKM before proceeding in the differential analysis.
I'm using the following command line to run StringTie:
stringtie sample1.sorted.bam -e -p 4 -G GTF/dm3_transcriptome_annotation.gtf -l sample1 -o sample1

Indeed, currently StringTie only shows the matching reference transcripts in the reference_id attribute of the output GTF. It seems that you'd like to see some recognizable gene IDs or gene names from the annotation - in other words, to have StringTie better "annotate" its own output.. This is a valid suggestion and we would consider adding this in a future version. We hesitated adding this because it could get complicated for those assemblies which may span multiple gene regions, but for those which match exactly the reference transcripts (hence the reference_id), indeed it is very easy to add the gene_name and/or gene_id attributes as well - I'll add these in the next version, likely as a new ref_gene_id attribute, I hope this would help?
Unfortunately I cannot assume that the annotation file would even have gene_id attributes, if it's a NCBI GFF3 or another annotation source, what you call "gene_id" in your case, could be called differently in other files. Transcript ID (called "ID" in GFF3) is the most stable identifier that we can expect to find in the reference annotation file, that's why we've only provided that reference ID.
Meanwhile you can probably use other programs or scripts which could quickly annotate StringTie transcripts based on another GTF/GFF file (e.g. cuffcompare or gffread from the Cufflinks suite), though probably in your case, the way you are doing it now (looking up the reference_id back in the annotation) is still the easiest way, it just needs to be scripted somehow.

The idea is that when using cufflinks, the gene ids that are found in
the reference transcriptome GTF are annotated in the cufflinks output
files so I was able to grep easily for them since I'm expecting to see a
down regulation of these genes in case of KD or so. I'm not sure how is
this done in cufflinks, but sure it is more convenient than needing to
look for the reference id.
On 3/27/15 4:42 AM, Geo Pertea wrote:

Indeed, currently StringTie only shows the matching reference
transcripts in the /reference_id/ attribute of the output GTF. It
seems that you'd like to see some recognizable gene IDs or gene names
from the annotation - in other words, to have StringTie better
"annotate" its own output.. This is a valid suggestion and we would
consider adding this in a future version. We hesitated adding this
because it could get complicated for those assemblies which may span
multiple gene regions, but for those which match exactly the reference
transcripts (hence the reference_id), indeed it is very easy to add
the gene_name and/or gene_id attributes as well - I'll add these in
the next version, likely as a new /ref_gene_id/ attribute, I hope this
would help?
Unfortunately I cannot assume that the annotation file would even have
/gene_id/ attributes, if it's a NCBI GFF3 or another annotation
source, what you call "gene_id" in your case, could be called
differently in other files. Transcript ID (called "ID" in GFF3) is the
most stable identifier that we can expect to find in the reference
annotation file, that's why we've only provided that reference ID.
Meanwhile you can probably use other programs or scripts which could
quickly annotate StringTie transcripts based on another GTF/GFF file
(e.g. cuffcompare or gffread from the Cufflinks suite), though
probably in your case, the way you are doing it now (looking up the
reference_id back in the annotation) is still the easiest way, it just
needs to be scripted somehow.
—
Reply to this email directly or view it on GitHub
https://github.com/gpertea/stringtie/issues/5#issuecomment-86807587.

--
Dr. Abdullah H. Sahyoun
Computational Biologist
Chromatin Regulation/Bioinformatics and Deep Sequencing Unit
Max Planck Institute of Immunbiology and Epigenetics
Stübeweg 51, D-79108 Freiburg, Germany
Tel.: +49 761 5108 707


Server: 404 on trades.csv

Fresh install (using a raspberry pi) - everything is working except I get a 404 on the URL below when hitting the web server. The page renders and everything else is found but I get the spinny image and that's it.
http://<IP_ADDRESS>:3013/trades.csv?sim_id=&selector=gdax.ETH-BTC&period=1h&limit=200

hmm, i'm not sure why this would be a 404. I don't have experience with raspberry pi either so I'm afraid I'm not of much help.

same issue here on desktop
main.js:381 Uncaught TypeError: Cannot read property 'map' of undefined

I started getting the same issue around 3.5.11 (not exact sorry) .  I'm
seeing it with a config using btc/usd but not with a separate instance I
have using eth/usd
On Wednesday, August 24, 2016, Efim Gorbenko<EMAIL_ADDRESS>wrote:

same issue here on desktop
main.js:381 Uncaught TypeError: Cannot read property 'map' of undefined
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/carlos8f/zenbot/issues/39#issuecomment-242192115, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACU0bcM3EgQDet_wra1pSpok1oHxDLM0ks5qjKUlgaJpZM4JreBU
.

At first I thought something was up with my docker setup. But I get the same issue everywhere including separate instance.

ahh, found a simple error on my part. patch incoming...

please run ./update.sh and let me know if the issue still persists.

Seems better for me.