Unity license error during test

When ever I start a build I get the error that my license is not active. I have already tried reinstalling Unity. (I have started unity with my vnc and it worked fine)
Error:

/opt/unity/2019.3.0f1/Editor/Unity -projectPath /var/lib/jenkins/workspace/JenkinsTest/ -executeMethod UnityBuild.BuildPlatforms -buildPath /var/lib/jenkins/workspace/JenkinsTest/Final/ -windows64 -batchmode -nographics -quit
[LicensingClient] ERROR Failed to connect to local IPC
[Licensing::Module] Failed to connect to channel: LicenseClient-jenkins
[Licensing::Module] Successfully launched the LicensingClient
[Licensing::Module] Successfully connected to LicensingClient on channel: LicenseClient-jenkins
[SignatureVerifier] Application signature verification not supported on this platform.
[Licensing::Module] Successfully launched and connected to LicensingClient
Entitlement-based licensing initiated
[LicensingClient] Licenses Updated successfully in LicensingClient
DisplayProgressbar: Unity license
[UnityConnectServicesConfig] config is NOT valid, switching to default
[Licensing::Module] License is not active (com.unity.editor.headless). HasEntitlements will fail.

Thanks for opening this issue!
Lets see if we can fix this!
My first question would be, are you signed into the Unity Hub? I assume yes, correct?
I have found this thread and issue which seems to be related:
https://forum.unity.com/threads/batch-mode-license-activation-fails-in-a-docker-container.748325/
https://issuetracker.unity3d.com/issues/cannot-activate-license-within-a-docker-container

Running Unity in a Docker container is a common pattern for building CI, so this is going to present a major blocker to updating for many people. In our case, releases up to 2019.1 are working well, but with 2019.3 betas we've started to run into trouble.

The issue has been marked as 'Won't Fix' with it apparently being fixed in 2020.1.
My first suggestion would be to look at the firewall using ufw status and telling me what rules are allowed through the firewall. It may just be that HTTP/HTTPS need to be allowed through.
My second suggestion would be to (on your own machine) disable the internet and attempt to sign in to Unity or the Unity Hub. You should then be presented with the following screen.

If you proceed with the manual activation you should get a license key file at the end. (.ulf file I believe).
You could then append an argument to Unity launch command like so:
"$UNITY_PATH/$UNITY_VERSION/Editor/Unity" -projectPath "$WORKSPACE/" -executeMethod UnityBuild.BuildPlatforms -buildPath "$WORKSPACE/_Final_/" -windows64 -manualLicenseFile "Your/License/FilePath.ulf" -batchmode -nographics -quit
My third and final suggestion which I certainly do not recommend but for testing and debugging purposes you could try would be to add the -username "YourUnityUsernameHere" and -password "YourUnityPasswordHere" to the launch arguments. This assumes that your Jenkins configurations are not public.
Apologies that it couldn't be simpler! Hope you can get it working!

option2 might indeed work I will try that and I will try an older Unity version

I have this license error with manual license activation.
The new command I used was "$UNITY_PATH/$UNITY_VERSION/Editor/Unity" -projectPath "$WORKSPACE/" -executeMethod UnityBuild.BuildPlatforms -buildPath "$WORKSPACE/_Final_/" -windows64 -manualLicenseFile "/opt/unity/Unity_lic.ulf" -batchmode -nographics -quit
But there is another error I get
Build step 'Execute shell' marked the build as Failure :disappointed:

But there is another error I get
Build step 'Execute shell' marked the build as Failure 😞

We will need to examine the actual error if we are to continue. What you have quoted is just Jenkins knowing that something has failed and cancelling the build. If it is feasible, could you post the entire log?
If you have a different error though that is probably a good thing and means we may be one step closer!

This is the log
log.txt

Interesting. Have you tried starting a build with the new license parameter and the executeMethod parameter yet to start a normal build? That is the log I would like to see if possible. It should give us more information.

Only the new license parameter and the execute one?

The one you posted previously:

"$UNITY_PATH/$UNITY_VERSION/Editor/Unity" -projectPath "$WORKSPACE/" -executeMethod UnityBuild.BuildPlatforms -buildPath "$WORKSPACE/Final/" -windows64 -manualLicenseFile "/opt/unity/Unity_lic.ulf" -batchmode -nographics -quit

So the one included in this guide with the added -manualLicenseFile argument.

This is the log with this command:
"$UNITY_PATH/$UNITY_VERSION/Editor/Unity" -projectPath "$WORKSPACE/" -executeMethod UnityBuild.BuildPlatforms -buildPath "$WORKSPACE/Final/" -windows64 -manualLicenseFile "/opt/unity/Unity_lic.ulf" -batchmode -nographics -quit
log.txt

Hmm pretty strange. I wonder if this is because of the comment on that issue tracker I linked previously mentioning that for whatever reason 2019.3 did not work.
Would it be possible to test another Unity version? I had luck with 2019.2.3 previously but anything that is not 2019.3 is worth a shot.
Thanks for the information thus far.

I will try 2019.2.15

I get the exact same error with 2019.2.15. Do you know where I can find old unity versions for linux?

There are some here:
https://forum.unity.com/threads/unity-on-linux-release-notes-and-known-issues.350256
Note that these are not through the Unity Hub. I believe these installers install straight into the directory you point to without creating a sub-directory so be aware of that, you will want to create a new folder first and install there.

Get the same error with unity 2019.1.0f2

Ugh. How peculiar.
Could you post the log from the 2019.1.0f2 attempt? I know it is the same but I just want to make sure.
Is the project you are trying to build public? If so, could I have a link so that I can try it myself. If not, I will just create my own temporary project to test.

This is the test project I'm using:
https://github.com/2CAN0/JenkinsTest
This is the 2019.1.0f2 log (I enabled time stamps in this log):
log.txt

It might have to do with the editor.log which it can't find

One thing I have noticed immediately is that your Editor folder is in the wrong place. It should be inside of your Assets folder. After that has been corrected, try to build and let me know how it goes.

It works now, the problems I had were:

Having the editor folder in the wrong directory
The artifacts options gave an error which failed the builds

I will try the manual license again in combo with unity 2019.3

That's great to hear!
Just let me know when everything is working as expected and the thread can then be closed.


i would like to visually check the download status without verbose. Is it possible? (Download... 30%)

i would like to visually check the download status without verbose.
Is it possible? (Download... 30%)

Is it possible? (Download... 30%)

No, sorry.


google captcha pwned?

see http://stackoverflow.com/questions/13126211/how-do-i-find-the-recaptcha-id
and Regular expresions


OBM Settings Object Update

The node Id was missing for the appropriate OBM Settings update call to work, this generates the correc object as consumed by the Monorail API

@BillyAbildgaard I tried it locally but when I went to create the Java Objects from it the name was "Id" and I needed it to be "nodeId" for the corresponding request... Not sure why would it recognize it as "nodeId" if I change the name to "Id"... There's other objects that make the reference as "nodeId" though... like here:
ssh-ibm-service_Ibm:
description: SSH settings
properties:
nodeId:
type: string
config:
properties:
host:
description: IP address
type: string
password:
description: Password
type: string
user:
description: Username
type: string
type: object
service:
type: string
required:
- service
- config
type: object
So why would I have to change it to just "Id" to make an integration test pass? O.o

This PR is going to be captured by: https://github.com/RackHD/on-http/pull/703


Incorrect JSON output on /debug/vars endpoint

$ docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: true

$ docker info
Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 17.09.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.49-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.952GiB
Name: moby
ID: VNHX:TZIZ:P47G:5WVY:R5C7:XC2T:6MGC:5UHR:SJEJ:26VJ:42FP:WIGZ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 26
 Goroutines: 35
 System Time: 2017-10-12T01:23:39.174239768Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 <IP_ADDRESS>/8
Live Restore Enabled: false

$ docker exec registry registry --version
registry github.com/docker/distribution v2.6.2

# Command line to run registry:
$ docker run -p 5000:5000 -p 5001:5001 --name registry -v `pwd`/config.yml:/etc/docker/registry/config.yml registry:2

No logs are printed during the execution of /debug/vars.
Here is the incorrect JSON output, Please check line number 4, endpoints:
{
"cmdline": ["registry","serve","/etc/docker/registry/config.yml"],
"memstats": {"Alloc":1279320,"TotalAlloc":4071808,"Sys":8427768,"Lookups":18,"Mallocs":35206,"Frees":22342,"HeapAlloc":1279320,"HeapSys":4751360,"HeapIdle":2277376,"HeapInuse":2473984,"HeapReleased":2260992,"HeapObjects":12864,"StackInuse":491520,"StackSys":491520,"MSpanInuse":47520,"MSpanSys":81920,"MCacheInuse":4800,"MCacheSys":16384,"BuckHashSys":1444289,"GCSys":387072,"OtherSys":1255223,"NextGC":4194304,"LastGC":1507771666941432602,"PauseTotalNs":5297885,"PauseNs":[1680596,767086,575214,549245,799348,926396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"PauseEnd":[1507771056927558935,1507771176941976134,1507771301889657807,1507771426891602212,1507771546938930859,1507771666941432602,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"NumGC":6,"GCCPUFraction":9.733431638596923e-06,"EnableGC":true,"DebugGC":false,"BySize":[{"Size":0,"Mallocs":0,"Frees":0},{"Size":8,"Mallocs":638,"Frees":457},{"Size":16,"Mallocs":7792,"Frees":6305},{"Size":32,"Mallocs":10741,"Frees":2178},{"Size":48,"Mallocs":1905,"Frees":723},{"Size":64,"Mallocs":885,"Frees":465},{"Size":80,"Mallocs":341,"Frees":160},{"Size":96,"Mallocs":323,"Frees":281},{"Size":112,"Mallocs":6571,"Frees":6370},{"Size":128,"Mallocs":170,"Frees":129},{"Size":144,"Mallocs":40,"Frees":33},{"Size":160,"Mallocs":324,"Frees":238},{"Size":176,"Mallocs":150,"Frees":123},{"Size":192,"Mallocs":2395,"Frees":2393},{"Size":208,"Mallocs":171,"Frees":120},{"Size":224,"Mallocs":40,"Frees":31},{"Size":240,"Mallocs":25,"Frees":14},{"Size":256,"Mallocs":85,"Frees":54},{"Size":288,"Mallocs":242,"Frees":188},{"Size":320,"Mallocs":131,"Frees":121},{"Size":352,"Mallocs":61,"Frees":30},{"Size":384,"Mallocs":1,"Frees":0},{"Size":416,"Mallocs":71,"Frees":23},{"Size":448,"Mallocs":6,"Frees":3},{"Size":480,"Mallocs":4,"Frees":4},{"Size":512,"Mallocs":41,"Frees":38},{"Size":576,"Mallocs":29,"Frees":20},{"Size":640,"Mallocs":120,"Frees":95},{"Size":704,"Mallocs":33,"Frees":24},{"Size":768,"Mallocs":0,"Frees":0},{"Size":896,"Mallocs":38,"Frees":31},{"Size":1024,"Mallocs":37,"Frees":20},{"Size":1152,"Mallocs":25,"Frees":18},{"Size":1280,"Mallocs":72,"Frees":62},{"Size":1408,"Mallocs":14,"Frees":12},{"Size":1536,"Mallocs":7,"Frees":7},{"Size":1664,"Mallocs":18,"Frees":9},{"Size":2048,"Mallocs":57,"Frees":23},{"Size":2304,"Mallocs":12,"Frees":3},{"Size":2560,"Mallocs":41,"Frees":29},{"Size":2816,"Mallocs":2,"Frees":1},{"Size":3072,"Mallocs":1,"Frees":1},{"Size":3328,"Mallocs":12,"Frees":2},{"Size":4096,"Mallocs":29,"Frees":26},{"Size":4608,"Mallocs":3,"Frees":3},{"Size":5376,"Mallocs":25,"Frees":13},{"Size":6144,"Mallocs":6,"Frees":3},{"Size":6400,"Mallocs":1,"Frees":1},{"Size":6656,"Mallocs":2,"Frees":0},{"Size":6912,"Mallocs":0,"Frees":0},{"Size":8192,"Mallocs":11,"Frees":9},{"Size":8448,"Mallocs":0,"Frees":0},{"Size":8704,"Mallocs":2,"Frees":2},{"Size":9472,"Mallocs":0,"Frees":0},{"Size":10496,"Mallocs":0,"Frees":0},{"Size":12288,"Mallocs":14,"Frees":11},{"Size":13568,"Mallocs":0,"Frees":0},{"Size":14080,"Mallocs":0,"Frees":0},{"Size":16384,"Mallocs":3,"Frees":3},{"Size":16640,"Mallocs":0,"Frees":0},{"Size":17664,"Mallocs":1,"Frees":0}]},
"registry": {"cache": {"storage": {"blobdescriptor": {}}}, "notifications": {"endpoints": }, "proxy": {"blobs": {"Requests":0,"Hits":0,"Misses":0,"BytesPulled":0,"BytesPushed":0}, "manifests": {"Requests":0,"Hits":0,"Misses":0,"BytesPulled":0,"BytesPushed":0}}}
}

My registry config:
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
  debug:
    addr: :5001
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

notifications:
  endpoints:
    - name: event_end
      url: http://docker.for.mac.localhost:3000/event
#        headers:
#          Authorization: [Bearer <your token, if needed>]
      timeout: 500ms
      threshold: 5
      backoff: 1s

Closing, wildly outdated and actually fixed on v3.


add back pygeoif 1.0.0

Rebase/reapply of #56
cc @drnextgis @constantinius @landryb

Looks like test failures are similar to issues related to https://github.com/geopython/pygeofilter/actions/runs/3756959066/jobs/6383625611#step:8:40
cc @vincentsarago

fixed in https://github.com/geopython/pygeofilter/pull/65

are we ready for the release? cc @constantinius

@constantinius thanks for merging the PR 🙏
Is there any blockers for an official release with this fix?

thanks for releasing 0.2.1 !


Add AamirShaikh7

Related issue

What changes does this PR do?
Modify README.md
Screenshots (If any)
Questions

Thanks all for reviewing the PR!


React Router action support

I just converted my react-router-dom project to use generouted only to realise that my actions stopped working. I've seen some examples using loaders as Loader but no example for actions. I tried also using Action but got

Does generouted support react-router actions?
My code example
export function Loader() {
  const session = ...

  if (session) {
    return redirect("/");
  }

  return null;
}

export async function Action({ request }: ActionFunctionArgs) {
  const form = await request.formData();
  return login(Object.fromEntries(form));
}

export default function Login() {
  return (
            <Form
              method="post"
              action={`/login?continueTo=${from}`}
            >

                Username
                <input name="username" required />

                Password
                <input type="password" name="password" required />

              <button type="submit">Sign In</button>
            </Form>
  );
}

@polarisdigitech Yes, exported Action should work as well as the Loader.
Here's a working StackBlitz based on your example. The error you're getting is mostly because you're using an action prop for Form component, to a route that doesn't have an Action.
Hope that helps!

The code example in my issue is exactly what I have in my code. I have the Action and the action on the form.

@polarisdigitech I'm not sure if that's an issue with generouted — react-router somehow ignores the action when the route has index: true with no path, however when a route has a regular path it works as expected.
Please feel free to report that directly to the react-router repo.

You're right, changing the file to login.tsx fixed it

@oedotme Which means that posts/[id]/index.tsx like in the stackblitz example cannot have an action?

@polarisdigitech Yes it seems general to any index: true route.

That's a buzz kill, I'll try finding a way around it

@oedotme Which means that posts/[id]/index.tsx like in the stackblitz example cannot have an action?

It seems like it works if you have posts/[id]?index and have the action in the index. (I could be misunderstanding though)

@henrikvilhelmberglund I haven't tried that, but as I mentioned, that's a bug in react-router-dom
I think it's expected that actions should work with index: true routes whether it's optional or not.

@henrikvilhelmberglund I haven't tried that, but as I mentioned, that's a bug in react-router-dom
I think it's expected that actions should work with index: true routes whether it's optional or not.

The problem is that apparently React Router expects actions to be in layouts by default so if you have posts/[id]/index.tsx and posts/[id]/_layout.tsx an action with action={/login/index}will match both which is kind of a problem. Because of this they decided that/login/indexwill match the parent route (aka layout I think) by default and index only if you include ?index at the end as inaction={/login/?index} or action={/login?index}`.
This is only true if you specify the action in the form, if you don't and the action is in an index route React Router will just add ?index automatically so it uses the action in the index route.
No idea if any of this made sense but the docs can probably explain this better than me! https://reactrouter.com/en/main/guides/index-search-param

@henrikvilhelmberglund Thanks for pointing that out! I wan't aware of this behavior.
@polarisdigitech This now should work with your initial example by adding the index param at the action prop url:
export function Loader() {
  const session = ...

  if (session) {
    return redirect("/");
  }

  return null;
}

export async function Action({ request }: ActionFunctionArgs) {
  const form = await request.formData();
  return login(Object.fromEntries(form));
}

export default function Login() {
  return (
            <Form
              method="post"
              // before
              // action={`/login?continueTo=${from}`}
              // after — adding the `index` search param
              action={`/login?index&continueTo=${from}`}
            >

                Username
                <input name="username" required />

                Password
                <input type="password" name="password" required />

              <button type="submit">Sign In</button>
            </Form>
  );
}

Here's the updated working example: https://stackblitz.com/edit/github-yh2whq?file=src/pages/login/index.tsx:L27
Thanks again @henrikvilhelmberglund!


Distributing the Contrib/Externs

Most of my projects make use of at least one extern maintained in the contrib/externs folder. Currently I either have to use a dependency system to download the extern from the github contrib externs folder or check the extern into my project's source control. Neither are great solutions.
I'd like to distribute the contrib/externs folder as part of the NPM package. It would be updated on the same release cycle as the compiler. Are there objections to this?

I'm fine with this. Remind me, why didn't we do it from the start?

Remind me, why didn't we do it from the start?

I didn't occur to me.
To date, I just matched what was available in the other distributions. It's not in Maven, therefore I didn't include it in NPM.

Closed with the 20150505 release: https://www.npmjs.com/package/google-closure-compiler


Crash on start (ValueError: unknown locale: UTF-8)

Hey, really cool tool!
Sadly, it crashes right at the beginning for me.
Mac OS X: Yosemite 10.10.2
Python: 2.7.10
Traceback:
Traceback (most recent call last):
  File "/usr/local/bin/gcalcli", line 2555, in <module>
    BowChickaWowWow()
  File "/usr/local/bin/gcalcli", line 2406, in BowChickaWowWow
    gcal.AgendaQuery()
  File "/usr/local/bin/gcalcli", line 1670, in AgendaQuery
    self._IterateEvents(start, eventList, yearDate=False)
  File "/usr/local/bin/gcalcli", line 1518, in _IterateEvents
    self._PrintEvent(event, prefix)
  File "/usr/local/bin/gcalcli", line 1228, in _PrintEvent
    (tmpTimeStr, self._ValidTitle(event).strip()))
  File "/usr/local/bin/gcalcli", line 415, in PrintMsg
    msg = stringFromUnicode(msg)
  File "/usr/local/bin/gcalcli", line 228, in stringFromUnicode
    return string.encode(locale.getlocale()[1] or
  File "/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 562, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 475, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

+1 for BowChickaWowWow() :)
Regards,
Sebastian

I just discovered that calling gcalcli agenda --locale de_DE works just fine.

interesting... Never seen UTF-8 fail before, first for everything ;-)  I'll try to see if I can replicate this.  Where did you install python from (or is it system default?)

Glad I brought you something new :)
That python version was installed via homebrew

Out of curiosity, when you installed OSX did you do it with German language settings?  Trying to find a way to replicate this so I can figure out why it's not picking up your locale and defaulting to UTF-8.

I have exactly the same error. Setting German locale also works for me, so does Dutch locale.

Same issue on OSX.
I have tried to set default locale in .gcalclirc and it does not help. What could be wrong?

@tresni Just installed v4a2 and getting this:
gcalcli agenda

Tue Feb 13Traceback (most recent call last):
  File "/usr/local/bin/gcalcli", line 2493, in <module>
    BowChickaWowWow()
  File "/usr/local/bin/gcalcli", line 2391, in BowChickaWowWow
    gcal.AgendaQuery(startText=FLAGS.start, endText=FLAGS.end)
  File "/usr/local/bin/gcalcli", line 1691, in AgendaQuery
    self._DisplayQueriedEvents(start, end)
  File "/usr/local/bin/gcalcli", line 1656, in _DisplayQueriedEvents
    self._IterateEvents(start, eventList, yearDate=yearDate)
  File "/usr/local/bin/gcalcli", line 1522, in _IterateEvents
    self._PrintEvent(event, prefix)
  File "/usr/local/bin/gcalcli", line 1211, in _PrintEvent
    PrintMsg(eventColor, fmt % (_u(tmpTimeStr), _u(self._ValidTitle(event).strip())))
  File "/usr/local/bin/gcalcli", line 219, in _u
    encoding = locale.getlocale()[1] or locale.getpreferredencoding(False) or "UTF-8"
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 562, in getlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 475, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

Trying to run this as recommended got me the following:
gcalcli agenda --locale en_US
The following options are either no longer valid globally or just plain invalid:
  --locale

Had the same issue on macOS. Workaround is to use gcalcli --locale=en_US agenda, note that --locale should come before agenda.

@eyaleizenberg @krupenja
Can either (both?) of you verify that this is still and issue when running from the current master branch in this repo?  If so, I'd like to fix it before I release.
UTF-8 isn't a locale, it's an encoding.   Can you also post output of the locale command?

@jcrowgey

The output of locale was:

ANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Hmmm, so it seems that I did not have a locale set. Not sure how that happened.

After running export LANG=en_US.UTF-8, the output of locale was:

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

And gcalcli was still crashing if ran without --locale argument.

So then I exported export LC_CTYPE=en_US.UTF-8 directly and gcalcli started working fine even if run without --locale.

Does this help or you still want me to try building and running from master branch?

Initially missing locale on my system is perhaps related to a bug in oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh/issues/7558

@krupenja That does help!
Can you confirm for me that it was "ANG" and not "LANG" (not sure if it was an issue in your shell or just a typo in the report :)).
I need to do a little research to understand proper POSIX behavior in this context.

@jcrowgey No, that was a typo and it was indeed LANG so the correct output of locale at step 1 is:
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

@krupenja thank you.  I may not be able to address this right away, but these notes will come in handy when I have a change to investigate the right behavior here.  If possible, I'd still love to confirm concretely that this is broken for you on git master (I believe it will be).

@jcrowgey Sure, I will try to have a look at whether it reproduces on git master in the next couple of days.

So, I think this is the question I want to get to the bottom of:
I'm used to seeing locale values of the form:
COUNTRY_LANG.ENCODING
While I've seen locales without the ".ENCODING" part, this is the first time I've seen one with only the ENCODING part.  On the other hand, I'm aware of the "C" locale so I know ther are special cases.  I don't really know if this is a special case that I need to handle or if I can simply say that your shell has done something wrong here.  Note that even in the latter case, we can make gcalcli fail more gracefully.
Potentially useful:
http://pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html

@jcrowgey Just want to confirm that this is still a problem with girt master if export LC_CTYPE=en_US.UTF-8 is not set, just like you expected.


Migrate to updated analysis API

It's been a while since this prototype was written and we should have a look at what has changed in the analysis API over the last two years. KSP seems to be a good reference client that showcases how the API can be consumed, specifically the incremental compilation machinery looks really interesting: https://github.com/google/ksp/blob/319ddffc791afc9e34e1d0b80d323635a6ef06c2/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt

Worth keeping an eye on: https://youtrack.jetbrains.com/issue/KT-65215/Analysis-API-Distinguish-APIs-for-Analysis-API-users-and-platforms

Thanks for all the great work.
we need ksp support to use android development in cursor ide (vscode). should we use this library or the kotlin-language-server library?

Kotlin Analysis is not really ready for production yet and Android support in Kotlin Language Server is rather experimental too (it's a hobbyist project after all). If you have some resources to spare, contributions are highly appreciated though.

I am super motivated to work on this project. where to get started?

I would recommend taking a look at Kotlin Language Server, it's more or less a functioning language server, but with a couple of rough edges (e.g. dependency resolution could be faster, memory usage could be optimized etc). The structure is pretty straightforward, it's a standard LSP server that contains a KotlinLanguageServer, KotlinTextDocumentService and KotlinWorkspaceService, from where requests are dispatched to individual handlers (e.g. for code completion). The README also contains a small overview of how dependency resolution works. I would recommend just using the language server a bit to get a sense for what you think could be improved.
This project (Kotlin Analysis Server) is an alternative language server for Kotlin, but at the moment a highly experimental prototype. I haven't dug deeply enough into the new analysis API to work out whether it's complete enough to develop a full language server using it, but if you are really adventurous and want to contribute to this, I recommend taking a look at the analysis API docs.

Sure. I'll start contributing to the KLS project first. Found this starter video on YouTube. I'll get started on this soon. Thanks!

Hi! I'd want to share here some research I've been doing with the analysis API, I managed to get this working:

Creating a session and linking external libraries (kotlin stdlib and jdk libraries at the moment, but it should work with any jar file)
Using java and kotlin code in the same session without issues
Basic implementation of go to definition
Getting diagnostic data

Here is the PoC, in case it may help in the development of this project: https://github.com/amgdev9/kotlin-analysis-api-test

I'm also interested in contributing to the project! I've been trying to figure out how to use KaSourceModificationService to handle didChange events from the LSP, but so far I haven't had much success since when I reload a file using PsiManager I still see the old, non-updated version. I also experimented with KotlinDeclarationProvider but I got similar results.
If anybody has any ideas to share I would be happy to discuss them!

I'm also interested in contributing to the project! I've been trying to figure out how to use KaSourceModificationService to handle didChange events from the LSP, but so far I haven't had much success since when I reload a file using PsiManager I still see the old, non-updated version. I also experimented with KotlinDeclarationProvider but I got similar results. If anybody has any ideas to share I would be happy to discuss them!

Do you have a snippet on how to access the KaSourceModificationService? As well as the library versions you are using, I cant manage to get this class to import, I might be missing something

@amgdev9 Sure, check out this branch: https://github.com/gAbelli/kotlin-analysis-server/tree/platform-api

I'm also interested in contributing to the project! I've been trying to figure out how to use KaSourceModificationService to handle didChange events from the LSP, but so far I haven't had much success since when I reload a file using PsiManager I still see the old, non-updated version. I also experimented with KotlinDeclarationProvider but I got similar results. If anybody has any ideas to share I would be happy to discuss them!

How did you manage to reload files using PsiManager? I've been trying using
val manager = PsiManager.getInstance(session.project)
manager.reloadFromDisk(ktFile)

but it complains about a missing extension point Missing extension point: com.intellij.psi.treeChangeListener in container. I may be wrong, but I think I can't register an extension point if I'm not developing an intellij plugin

I don't know how to reload files either.
PsiManager has an addPsiTreeChangeListener method but I'm not sure what to pass to it.
By the way I'm not sure that reloadFromDisk is what we want, because one of the goals would be keep track of changes that haven't been written to disk yet.

I don't know how to reload files either. PsiManager has an addPsiTreeChangeListener method but I'm not sure what to pass to it. By the way I'm not sure that reloadFromDisk is what we want, because one of the goals would be keep track of changes that haven't been written to disk yet.

Yeah, I guess we need to modify the PSI tree incrementally to achieve that, but as far as I have looked up the analysis api does not provide an easy way to commit changes to the PSI based on raw text and offsets which is what the LSP is going to receive... Doing this step crafting the PSI from scratch seems a hell lot of work 😅


FilteredController?

HI - thank you for all your work on RI3D!  I was checking out your code and see DriverController extends FilteredController. I'm not familiar with FilteredController.  What is the benefit of it?  Thanks!

Hey, it's Cory from Cranberry Alarm.  FilteredController is something that Red Alert 1741 (the team that I mentor) created a few years ago to add some features on top of the GenericHID controller class.  Just for reference, we use the standard Logitech F310 controller every year.
D-pad (hat) functions
The first thing that FilteredController does is add functions for the D-pad (aka Hat) directions so that they can be used similarly to the other buttons.  For the A,B,X,Y style buttons, there is the getRawButton() and getRawButtonPressed() functions which are concise and easy to understand.  The GenericHID class though only has the getPOV() function for the hat which returns 0, 45, 90, 135, ... etc.  You end up writing lines like:
if (m_controller.getPOV() == 180) // 180 means down
{
    m_shooter.setSpeed(0.5); // 50% speed
}

But it would be nicer to just have functions like getHatDown() or getHatDownPressed(), so we wrote them and put them in FilteredController  :)
if (m_controller.getHatDown())
{
    m_shooter.setSpeed(0.5); // 50% speed
}

Dead Band Axes
The second thing that FilteredController does is add the option to have joystick axis dead bands built in.
When using GenericHID, it is common to write code like this which prevents tiny joystick movements or drift from affecting your systems:
if (m_controller.getRawAxis(5) > 0.03) // 3% dead band to deal with drift
{
    m_shooter.setSpeed(m_controller.getRawAxis(5);
}

With the FilteredController, a 3% dead band can be built into all the axes when you insatiate the controller.  Calling getFilteredAxis() will automatically apply the dead band:
FilteredController m_controller = new FilteredController(port, true /* use deadband */, false /* use squared input */)
...
m_shooter.setSpeed(m_controller.getFilteredAxis(5));

Squared Input Profile
Finally, the last thing FilteredController does is add the option to have squared input profiles for the axes.  This one is less important and is really just preference of the drive team, but it can be helpful for things like drive axes.
With a standard "linear" input profile, pushing the stick a quarter of the way = 0.25, and half way = 0.5.
With a "squared" input profile, pushing the stick a quarter way = 0.25^2 = 0.0625, and half way = 0.5^2 = 0.25.
It gives drivers a lot more physical range to move the joystick without the values getting large so quickly.  A very fast/touchy swerve drive would really benefit from this for example.  Of course, when you push the stick all the way, 1.0^2 still is 1.0, so you're not loosing out on any range, but if your drivers are typically either making very small/fine adjustments to the stick, or full blast sending it with the stick, then squared input profile could be very nice.
FilteredController m_controller = new FilteredController(port, true /* use deadband */, true /* use squared input */)
...
m_drivetrain.drive(m_controller.getFilteredAxis(1), m_controller.getFilteredAxis(2), m_controller.getFilteredAxis(3)); // x, y, rotation


AttributeError: 'NoneType' object has no attribute 'GetPath'

When I wanted to verify whether it was installed correctly and run python train.py algo=ppo headless=true wandb.entity=YOUR_WANDB_ENTITY, an error AttributeError: 'NoneType' object has no attribute 'GetPath' occurred
`Error executing job with overrides: ['algo=ppo', 'headless=true']
Traceback (most recent call last):
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
return func()
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 458, in
lambda: hydra.run(
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/hydra.py", line 132, in run
_ = ret.return_value
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/core/utils.py", line 260, in return_value
raise self._return_value
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/core/utils.py", line 186, in run_job
ret.return_value = task_function(task_cfg)
File "/home/studj/OmniDrones/scripts/train.py", line 51, in main
base_env = env_class(cfg, headless=cfg.headless)
File "/home/studj/Documents/rl/torchrl/envs/common.py", line 177, in call
instance: EnvBase = super().call(*args, **kwargs)
File "/home/studj/OmniDrones/omni_drones/envs/single/hover.py", line 122, in init
super().init(cfg, headless)
File "/home/studj/OmniDrones/omni_drones/envs/isaac_env.py", line 134, in init
global_prim_paths = self._design_scene()
File "/home/studj/OmniDrones/omni_drones/envs/single/hover.py", line 192, in _design_scene
kit_utils.create_ground_plane(
File "/home/studj/OmniDrones/omni_drones/utils/kit.py", line 84, in create_ground_plane
collision_prim_path = prim_utils.get_prim_path(
File "/home/studj/.local/share/ov/pkg/isaac-sim-2023.1.0-hotfix.1/exts/omni.isaac.core/omni/isaac/core/utils/prims.py", line 349, in get_prim_path
return prim.GetPath()
AttributeError: 'NoneType' object has no attribute 'GetPath'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/studj/OmniDrones/scripts/train.py", line 246, in
main()
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/main.py", line 94, in decorated_main
_run_hydra(
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
_run_app(
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 457, in _run_app
run_and_report(
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 222, in run_and_report
if _is_env_set("HYDRA_FULL_ERROR") or is_under_debugger():
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/hydra/_internal/utils.py", line 172, in is_under_debugger
frames = inspect.stack()
File "/home/studj/anaconda3/envs/sim/lib/python3.10/inspect.py", line 1673, in stack
return getouterframes(sys._getframe(1), context)
File "/home/studj/anaconda3/envs/sim/lib/python3.10/inspect.py", line 1650, in getouterframes
frameinfo = (frame,) + getframeinfo(frame, context)
File "/home/studj/anaconda3/envs/sim/lib/python3.10/inspect.py", line 1624, in getframeinfo
lines, lnum = findsource(frame)
File "/home/studj/anaconda3/envs/sim/lib/python3.10/inspect.py", line 952, in findsource
module = getmodule(object, file)
File "/home/studj/anaconda3/envs/sim/lib/python3.10/inspect.py", line 869, in getmodule
if ismodule(module) and hasattr(module, 'file'):
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/wandb/util.py", line 219, in getattribute
state.load()
File "/home/studj/anaconda3/envs/sim/lib/python3.10/site-packages/wandb/util.py", line 212, in load
self.module.spec.loader.exec_module(self.module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/home/studj/.local/share/ov/pkg/isaac-sim-2023.1.0-hotfix.1/exts/omni.pip.cloud/pip_prebundle/azure/storage/blob/init.py", line 10, in
from ._blob_client import BlobClient
File "/home/studj/.local/share/ov/pkg/isaac-sim-2023.1.0-hotfix.1/exts/omni.pip.cloud/pip_prebundle/azure/storage/blob/_blob_client.py", line 17, in
from typing_extensions import Self
ImportError: cannot import name 'Self' from 'typing_extensions' (/home/studj/.local/share/ov/pkg/isaac-sim-2023.1.0-hotfix.1/kit/exts/omni.kit.pip_archive/pip_prebundle/typing_extensions.py)`

I also had the same issue, did you fix it?

这是来自QQ邮箱的假期自动回复邮件。

您好，我最近正在休假中，无法亲自回复您的邮件。我将在假期结束后，尽快给您回复。


Rwhite5279 and portraits v

Whoops. Punched this one in myself. I'm done for the moment if you want to pick up later on in the series.


Refactor updateKnowledge to be based on intrinsics, instead of name-based

Problem
Sorbet updates it's flow-sensitive typing knowledge based strictly on the name of the method (!). This is alarming, but has worked well enough in practice because there are only a handful of them. They're defined here:
https://github.com/sorbet/sorbet/blob/334ea1e185168914acfb8b8f7632bdc3f1ad0571/infer/environment.cc#L340
(Things like == and is_a?.)
A better alternative to this would be to tap into the way that method intrinsics work (where there's a registry of intrinsics, stored on Symbols) and make updating knowledge be done by those methods.
This is mostly a question of code hygiene, but it does cause Sorbet to be wrong:
Input
# typed: true
class A
  extend T::Sig

  sig {params(other: T.untyped).returns(TrueClass)}
  def is_a?(other)
    true
  end
end
class B; end

a = A.new
if a.is_a?(B)
  puts a # This code IS reachable!
end

→ View on sorbet.run
Output:
editor.rb:14: This code is unreachable https://srb.help/7006
    14 |  puts a # This code IS reachable!
          ^^^^^^
Errors: 1

Hi, I'm considering working on this issue and wanted to check in case someone else already is.
I also would like some guidance regarding the approach you were thinking of.
One idea is to add an updateKnowledge function to IntrinsicMethod and call it during dispatch when an intrinsic is seen (maybe after apply calls like this one) but this requires Symbols.h to know about CFGs and inference-related stuff like TestedKnowledge, which seems to be outside its domain.
Or alternatively, IntrinsicMethod could be moved into infer.
Another way to do it would be to check for found intrinsics in the Send case of processBinding --maybe after this line-- and add something like this:
auto &intrinsic = dispatched.main.method.data(ctx.state)->intrinsic;

if (intrinsic != nullptr) {
    updateKnowledge(..., intrinsic)
}

And change updateKnowledge like this:
void Environment::updateKnowledge(..., sorbet::core::IntrinsicMethod *intrinsic) {
    if (intrinsic == &Module_tripleEq) {
        ...
    }
}

But instances of IntrinsicMethod are currently namespaced off and not accessible from this place.
Is any of these proposals along the lines of what you intended?


request -> require

I believe this is a typo... even after fixing this I still can't get chained loaders working on master, I end up getting the function to render my template as a string. But this is probably a step in the right direction?

My other PR covers this and fixes chaining for real, so I will close this one.


Mods are being disabled in multiplayer Intel atom

Well I have a few mods so I can troll my friends but I can't use them because they are being disabled in multiplayer

And then after I get out of the server blocklancher crashes
Also I'm using Android 5.0 Next book Area 8

And then after I get out of the server blocklancher crashes
Also I'm using Android 5.0 Next book Area 8

Mods are disabled in multiplayer to PREVENT cheating. This is not an issue, close it.

Unfortunately scripts are disabled in multiplayer for now. The crash is certainly unusual though.

So they still work in LAN multiplayer right? @Black-DeathPE @zhuowei


[ASCII-1020] SNMP Traps status provider

What does this PR do?
Rather than passing the SNMP status provider directly, we must rely on FX value groups to do that 😄 https://github.com/DataDog/datadog-agent/pull/22396/commits/e90c78bf426c7bb55d2844042ab960f0ad4a6bf1
I also, updated the SNMP components to use Module() and Bundle(). For more information refer to https://github.com/DataDog/datadog-agent/pull/21249

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Running agent status or agent launch-gui with SNMP enabled should display the information.
Here is an example configuration for enabling SNMP:
network_devices:
  namespace: test
  snmp_traps:
    enabled: true
    port: 9162
    community_strings:
      - public
    bind_host: <IP_ADDRESS>

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

/merge


v0.12.1

Updates @ethereumjs/util to 8.0.0
Adds def caching

I updated the generate index function to handle bad inputs:
const generateDefIndex = (data, to) => {
  if (
    !data ||
    data.length === 0 ||
    (!isArrayBuffer(data) && typeof data !== "string")
  ) {
    return;
  }
  let dataStr = data.toString("hex");

  // Trim leading `0x` if present
  if (dataStr.slice(0, 2) === "0x") {
    dataStr = dataStr.slice(2);
  }

  return `${to}${dataStr.slice(0, 8)}`;
};

We can always call toString('hex') without mutating strings, but always converting Buffers, so we can simplify the logic a bit.
I added a bunch of tests for bad inputs to my local tests. I can't check that testing into the repo until we add a build step so we don't ship that code to consumers.

I added handling for to uint8arrays


Rust Code Review

This function seems to be duplicated. Is this necessary due to some quirk in the Godot SDK?
https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L52-L60

This function parameter list looks too large.
https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L151-L174
If this was pure Rust code, I would have suggested to design the API like this:
ProtocolParameters { param1: 123, param2: 123}.into_godot();

instead of
ProtocolParameters::create(123, 123);

So that it's clearer what's getting assigned to which field.
But I think you can't construct a Rust struct from GDScript right?
You would have to use the create(...) function for object construction?
Another option would be to do:
var params = ProtocolParameters.new(); # set everything to a sentinel value like 0 or -1.
params.param1 = 123;
params.param2 = 123;

Then, on usage site, check whether a value was not set and throw a runtime error.

Because Array::iter_shared returns a value that implements the iterator trait, you can use a normal for loop here:
for gutxo in gutxos.iter_shared() {
  // ..
}

And similarly:
for (unit, name) in utxo.assets.iter_shared().typed() {
  // ..
}

This is mostly subjective. (There is a minor performance hit to passing a closure, but that's negligible.)
https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L343-L368

Why is this an Option?
https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L269

Some of these, like parameter list being too long can be caught by clippy.
Also, do you use rustfmt (cargo fmt)? Some of the lines look too wide. The formatter usually breaks long function chaining into multiple lines if they're too long.
We usually run both rustfmt and clippy in CI on every PR, so that when somebody eventually runs them the diff is not too large.

I would split self contained stuff, like the BigInt wrapper, to its own file.

Thank you @itsfarseen for the code review! Last week was a bit slow, so I address your review a week later than I would like, sorry about that.

This function seems to be duplicated. Is this necessary due to some quirk in the Godot SDK?
https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L52-L60

I agree. I am not sure why this is the way it is (@danielfarrelly if you can chime in), but if I had to guess, I think one of those was meant to be exposed to GDScript while the other was not. But both have the #func attribute, so that's not what's happening here.

* This function parameter list looks too large.
  https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L151-L174

  If this was pure Rust code, I would have suggested to design the API like this:
  ```rust
  ProtocolParameters { param1: 123, param2: 123}.into_godot();
  ```
  instead of
  ```rust
  ProtocolParameters::create(123, 123);
  ```

  So that it's clearer what's getting assigned to which field.

I agree that it's not great to pass a lot of positional parameters.

  But I think you can't construct a Rust struct from GDScript right?

Yes, you can't create a struct from Rust using GDScript. You can only create classes by executing Class::new() or calling a class method Class::create(param1, param2, ...) which is what we are doing here.

  You would _have_ to use the `create(...)` function for object construction?
  Another option would be to do:
  ```gdscript
  var params = ProtocolParameters.new(); # set everything to a sentinel value like 0 or -1.
  params.param1 = 123;
  params.param2 = 123;
  ```

  Then, on usage site, check whether a value was not set and throw a runtime error.

I am not a fan of failing during runtime if a field is not set.
I think it is probably a good idea to divide functions the library into two categories:

Those used by Rust only
Those used by Rust and GDScript

(By the way: the third category "Used by GDScript" does not matter, as we try to implement as much as possible in GDScript as we can, so we wouldn't implement in Rust something that can be done in GDScript).
For the first category we can have a single implementation that is not exported to GDScript and it can be as idiomatic as we want.
For the second one, we use a single function and expose it to GDScript only if we can get away with it. In PR #8 I have to expose a second function for GDScript that returns a GResult (a weakly-typed version of a Rust Result for GDScript). This is because we want to return something that GDScript may use, but we don't want to get that by losing type-safety in Rust code.
I think the second argument applies for this case too: we want to have an idiomatic create for Rust code and a create apt for GDScript. To make sure they always match, the second should just wrap the first. Maybe that is the best way of having nice Rust code when there is a mismatch between the two languages.

* Because `Array::iter_shared` returns a value that implements the iterator trait, you can use a normal for loop here:
  ```rust
  for gutxo in gutxos.iter_shared() {
    // ..
  }
  ```

  And similarly:
  ```rust
  for (unit, name) in utxo.assets.iter_shared().typed() {
    // ..
  }
  ```

Noted :+1: .

  This is mostly subjective. (There is a minor performance hit to passing a closure, but that's negligible.)
  https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L343-L368

Noted :+1: .

* Why is this an Option?
  https://github.com/mlabs-haskell/godot-cardano/blob/776c7095147e58a2b8ddc561275a401904bcb7c1/libcsl_godot/src/lib.rs#L269

This is because all attributes of a class must have a Default trait implementation or a manual init override if the class is to be init-able. Like I explained briefly before, most objects can be created with Class.new() in GDScript, but this means that all attributes must be initializable with no parameters passed. This is not possible for Transaction because (I think) we don't want to return an empty transaction to GDScript. The fix for this is to drop the init and provide a create method, like we did before for ProtocolParameters.

* Some of these, like parameter list being too long can be caught by `clippy`.
  Also, do you use `rustfmt` (`cargo fmt`)? Some of the lines look too wide. The formatter usually breaks long function chaining into multiple lines if they're too long.
  We usually run both `rustfmt` and `clippy` in CI on every PR, so that when somebody eventually runs them the diff is not too large.

Good points, we could have this in CI or maybe as a pre-commit hook. Maybe both.

* I would split self contained stuff, like the BigInt wrapper, to its own file.

Also a good point, we've had a discussion with @danielfarrelly about this. Obviously the module continues to grow quickly and we need to place all of these classes in sensible places.

This feedback has been very useful. For the sake of keeping the issues list clean, I will close it for now.


Custom colors

Hi, thanks so much for the library. I have a small request, related to the random colors. The current implementation uses a fixed set of colors. Could you please add an option so that we can use our own?
Thank you. :)

Since you already figured it out, this comment is just for future reference.
In an Activity or a Fragment you can do this:
int color = getResources().getColor(R.color.my_custom_color);
TextDrawable drawable = TextDrawable.builder().buildRound(firstLetter, color);

Source.


add exercise pov

I like graph algorithms so I kind of liked this exercise until now implemented in just Clojure and Haskell.  I used the same test cases.  I added some paragraphs of explanation in the test program.  And I kept the API as flexible as I could, allowing solvers to define their own graph representation.  Also I split the tests into two parts.  Part one is just to create the graph and code a method for inspecting the graph.  Code-wise, this is a significant part of the exercise and yet it's not even the part advertised as the crux of the exercise.  Since part two is the interesting re-rooting algorithm, I did a few more things to try to simplify part one.  The test program promises to build a graph that is tree, to build it from the bottom up, and to pass the root to the the re-rooting method.  To avoid future test case additions or changes breaking these promises, the example program validates them.  This way CI validates the test cases.
Finally I added benchmarks for exploring the relative times of the two parts.

These next two weeks I've got some big, complicated things on my plate, and I don't have the capacity to think this through. @petertseng do you want to work with Sonia on this one?

No problem, I expect I'll review tonight, will probably work through the problem to see if everything seems OK on that front. Someone remind me if you don't hear back from me in 48 hours.

Oops, accidentally pushed my impl on top of this branch, removed it. Meant to put it at my branch https://github.com/petertseng/xgo/commit/ee8d33b971b01199ceef6b0370e5c5b4fe187d5b
Exercise seems reasonable enough (though I admit I already did it in Clojure so maybe I had an advantage because of that). Doesn't have the "trace a path" portion of Clojure/Haskell but I don't suppose that's terribly important since the meat of it (rerooting) is there. I think it's good that the internal representation was left flexible and it just gets inspected via ArcList.
This may be a bit bikesheddy, but any thoughts on Arc vs Edge terminology? I don't care too much about this so if what you currently have is to your preference then go with that.
I'll add a few line comments on places I think the code could use some deduplication but otherwise I generally feel happy about this.

One more thought: Clojure and Haskell have tested what happens if the newRoot does not exist in a call to graph.ChangeRoot(oldRoot, newRoot) - any thought on whether we should test that as well? (And if we do, I think it may be at least reasonable to test the input graph isn't destroyed in such a case)

Sorry, confused for a second and made a mistake with git.

Duplicate code factored out and "arc" definition moved up.
It bugs me to see "edge" used to mean "directed edge" when I think edge by itself most commonly means "undirected edge".  I know arc is not as widely used as edge but it is used sometimes and I like it better than directed edge.  It's short and easy to type and clearly distinct from "edge".
Also I think it's fine to omit the test for a root not in the tree.  The reason is that there are lots of other curves we could throw.  Why throw just this one?  What if the node we passed to ChangeRoot was in the tree but wasn't the root?  Why even pass the old root as an argument?  What if we gave them a graph that wasn't a tree but had cross edges--or back edges?  How about a forest?  What if the old root and new root were in different connected components?

OK. Given you feel strongly about arcs and I can go either way, let's roll with it.
As for the question of what error cases to test for, I suppose a lot of the time I base my answers to this question on "what mistakes do I observe in people's submissions?" so I suppose I can't speak to this until we see some submissions.
The alternative answer to the question "why aren't we testing all these other error cases?" is to say "well maybe we should test them all!" like poker does: https://github.com/exercism/xgo/blob/master/poker/poker_test.go#L237 . Possible that we could test all the error cases you describe using something like that.
You convinced me, so I can go either way on this as well, so I think we're good to ship this and let people start working on it. I'll leave the merge button for you to click in case you do want to make some change


How to make a user account join a voice channel through a voice channel invite link.

I made an invite link for those new game activity feature, i.e. YouTube Together and I want the user account to join the voice channel using that specific invite.

No way yet to do that. Voice channel isn't supported at all as of version 1.3.0.


Adldap::auth()->attempt works, while Auth::attempt doesn't.

Hey!
I'm trying to integrate Adldap in a little application that will provide some convenience features for people of my university. I'm looking to integrate their AD/LDAP into the application for convenience.
My first attempt on getting authentication and user management using Adldap working is not succeeding. I'm trying to set-up Adldap so it acts as both an authentication and user provider for Laravel. I am trying to authenticate using username, and I use a custom AuthController.
My current implementation doens't work. Even after inserting valid credentials, it denies them. If I change this line to if (Adldap::auth()->attempt($request->username, $request->password)) { authentication succeeds without any issue.
My university uses multiple username alternatives across both students and staff, and the field I wish to use (which is the only consistent one across account types) is userprincipalname which is in the form<EMAIL_ADDRESS>where people will supply my application with the username part of the earlier form.
Following are the relevant parts of my .env file referred to in the adldap config files.
<EMAIL_ADDRESS><EMAIL_ADDRESS>LDAP_BASE_DN="OU=Accounts,DC=ad,DC=domain,DC=org"
LDAP_ADMIN_USERNAME=myaccount
LDAP_ADMIN_PASSWORD=mypassword
LDAP_USERNAME_ATTRIBUTE=userprincipalname
LDAP_LOGIN_ATTRIBUTE=userprincipalname
LDAP_USER_NAME=displayname
LDAP_USER_EMAIL=mail

I'm looking for help getting my implementation to work. :)

Hi @jonathanjuursema,
Can you post your adldap_auth.php file, and your user migration table?

@stevebauman this is the adldap_auth.php file and this is the user table migration. :)

Thanks!
This could be the issue, you are synchronizing an attribute that doesn't exist in your adldap_auth.php config (assuming just a typo):
'sync_attributes' => [
    'name' => env('LDAP_USER_NAME'),

    // Should be: 'email' => env('LDAP_USER_EMAIL'),
    'mail' => env('LDAP_USER_EMAIL')
],

Since your email field isn't nullable in your migration, creating the local user record would fail:
Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('username')->unique();
    $table->string('email');
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Do you receive any exceptions upon authenticating with the adldap driver?

Hey @stevebauman! I was really hoping it was just the typo, but unfortunately. :(
I changed the (what is indeed a) typo in adldap_auth.php, but it still denies authentication. There are no exceptions thrown (neither debug in the browser nor in the Laravel logs) and I neatly see this behaviour happening.

Hmm okay, just to double check, the account your authenticating with is located inside the OU you've specified ('Accounts') in your base DN ('OU=Accounts,DC=ad,DC=domain,DC=org'), correct?
Also, can you try running the command (using the username your authenticating with), and see what the output is?:
php artisan adldap:import<EMAIL_ADDRESS>

I'm postive the user is inside the OU. I use the same settings in another project (Lumen+Adldap) on the same AD and there all AD accounts can be found and accessed.
I've also ran the command and my user is imported successfully. I've also tried various other usernames that my university's AD uses and all of these combination lead to a successful import. I also get all the data I expect in the database in the correct format and fields.

Ok so definitely configured correctly...
Can you create a listener for the event Adldap\Laravel\Events\DiscoveredWithCredentials:
https://github.com/Adldap2/Adldap2-Laravel/blob/master/src/Traits/AuthenticatesUsers.php#L103
And see if it is fired?

I changed the following (I'm not particularly familiar with using events, so to double check):
In EventServiceProvider:
    ...
    protected $listen = [
        'Adldap\Laravel\Events\DiscoveredWithCredentials' => [
            'App\Listeners\TestListener',
        ],
    ];
    ...

In TestListener.php:
<?php

namespace App\Listeners;

use App\Events\Adldap\Laravel\Events\DiscoveredWithCredentials;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class TestListener
{
    public function __construct()
    {
        //
    }

    public function handle(DiscoveredWithCredentials $event)
    {
        Log::info('test event fired!!!');
        Lof::info($event)
    }
}

In the meantime I also tried running the code against a different AD to make sure it was not the university AD causing the problems, but I encountered the same problem.

Your configuration for the listener is correct, and when you try authenticate again, it should show in the log that the user your authenticating with has been discovered. If nothing appears in the log, then we can troubleshoot from there.

Thanks for the confirmation! With the event configuration in place both authentication syntaxes (Adldap::auth()->attempt and Auth::attempt) don't result in a log-entry, while the former results in a pass (redirect to homepage) and the latter in a fail (the configured error message).
You already have my thanks for the assistance. :)

No problem at all. :)
In the top of your routes file, can you try locating the user you're looking for and see if the user is returned?:
// routes/web.php

$user = \Adldap\Laravel\Facades\Adldap::search()->users()->findBy('userprincipalname', 'username@domain.org');

dd($user);

Using your snippet the correct user is returned.

Strange... Can you run php artisan config:clear and try authenticating to be sure?
Also, are you using dev-master of Adldap2-Laravel?

php artisan config:clear didn't solve the problem. I have currently configured version 2.1.* in composer, but the problem also persists on dev-master.

Same issue here also. The snippet above does return the correct user.

Hi Steve,
i am using "adldap2/adldap2-laravel": "3.0.0" and  facing the same issue( Adldap::auth()->attempt works, while Auth::attempt).
And moreoever i am able to import the user when i execute the following command
php artisan adldap:import<EMAIL_ADDRESS>Thanks

Hi,
I have the same issue. And the import also works in my application.
Thanks for taking a look

@jonathanjuursema, can you post your create_users_table migration?

@stevebauman thanks for the detailed response! I have since December moved on (after struggling with this for a little I had no time for it anymore, and a friend of mine took over the concept), sorry for not letting you know. I'm hoping this answer also helps @designvoid, @sbk123 and @struyfv. I'm not closing my own issue because I'm not sure the other people that replied here have additional questions, but if none of them have please consider this issue closed for me.
Thanks again for your time!


issue to display a transpose dataframe

hello,
I can display a certain DataFrame, but if I transpose it, nothing is displayed.
I tried to limit the number of rows, but still nothing. So it doesn’t seem to be related to the size of the DataFrame.

Hi @franciscofem and thanks for opening an issue! Can you please provide a minimal reproducible example? That will make it as easy as possible for us to recreate your problem so that we can fix it. One easy way to get started is to use https://shinylive.io/py/editor to prepare your example, which also gives you a link to share the running example with us. (Note that shinylive uses the latest released version of shiny.)

Oh yeah, that does sound related. Have you seen the great tables package? There's a good chance that it could handle the column-spanning label use case you described in the other issue.

Hello,
to start, thank you for your quick responses. Here’s an example i did on Shinylive that demonstrates my issue.
from shiny import App, render, ui, reactive
import pandas as pd
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df=pd.DataFrame(data)
dft=df.T
app_ui = ui.page_fluid(
        ui.card(
            ui.card_header("Dataframe"),
            ui.output_data_frame("dataframe"),
            full_screen=True
        ),

        ui.card(
            ui.card_header("DataframeTransposed"),
            ui.output_data_frame("dataframe_t"),
            full_screen=True
        ),

)
def server(input, output, session):
 @render.data_frame
 def dataframe():

    return df

 @render.data_frame
 def dataframe_t():

    return dft

app = App(app_ui, server)
I’m going to try the Great Tables package, and I’ll keep you informed.


fix typo

applied, thanks! (I ended up changing it further but your attentiveness to detail triggered the change!)


Add memory trace macros

Signed-off-by: 5kbpers<EMAIL_ADDRESS>
What problem does this PR solve?
Problem Summary:
Introduce macros for tracing memory usages in TiKV.
Separated from https://github.com/tikv/tikv/pull/10157
More details https://github.com/tikv/tikv/issues/10156
What is changed and how it works?
What's Changed:

proc macro MemoryTraceHelper for implementing tracing struct
macro mem_trace for defining the hierarchy of memory usage for a module

Check List
Tests

Unit test
Integration test

Release note

Add memory trace macros for memory trace

/test

/test

/test

/run-all-tests

LGTM.

/merge

/merge


armhf version

Is there a possibility to run the docker-handbrake container on a armv7 (Rasp-pi 3B+, Raspian streech) or is it possible to provide a armhf version of this container?

However, it may be possible to add support for more platforms in the future.

Will there be support in the near future?

Yes, this is something I plan to do.

Yes, this is something I plan to do.

Thank you very much! So many people waiting for that moment!

Upvote for armhf support! Thank you!

This would be huge, would love to see ARM supported!

Same here! It would be great to be able to use this image on a rasp-pi.

Any plans for this? I would love to see it! thanks!

Likewise!

This would be awesome indeed!

+1

Would love this, would make my life so much easier

Any updates? @jlesage

please update for arm4

+1 from me for an arm64 version

Yes, this is something I plan to do.

@jlesage in the mean time would you be willing to share with me some specifics about your baseimage-gui image so I can attempt to build out a version of this baseimage-gui for myself to run on my RPi4.

any update ?

+1

Just to let you know that I'm still working on this.  Implementing a Docker baseimage that supports multiple architectures/distros and that can be automatically be built and tested on public services is not easy and takes a lot of time.  For example, a lot of components of the image need to be cross-compiled, which is more complex to achieve than just compiling the same piece of software under QEMU.  But compiling under QEMU is not an option, since doing this on public services (like Github Actions) is way too slow (several hours and hitting the run time limit of the service).

Just to let you know that I'm still working on this. Implementing a Docker baseimage that supports multiple architectures/distros and that can be automatically be built and tested on public services is not easy and takes a lot of time. For example, a lot of components of the image need to be cross-compiled, which is more complex to achieve than just compiling the same piece of software under QEMU. But compiling under QEMU is not an option, since doing this on public services (like Github Actions) is way too slow (several hours and hitting the run time limit of the service).

I started playing around with it and I will attest that its NOT easy... tons of personal time goes into this. So much so that my time won't allow me to do it. So THANK YOU for what you've put together so far!

Just to let you know that I'm still working on this. Implementing a Docker baseimage that supports multiple architectures/distros and that can be automatically be built and tested on public services is not easy and takes a lot of time. For example, a lot of components of the image need to be cross-compiled, which is more complex to achieve than just compiling the same piece of software under QEMU. But compiling under QEMU is not an option, since doing this on public services (like Github Actions) is way too slow (several hours and hitting the run time limit of the service).

Thanks a lot for spending time on this - It would be super awesome to have a multi-arch build 🥇

Just to let you know that I'm still working on this. Implementing a Docker baseimage that supports multiple architectures/distros and that can be automatically be built and tested on public services is not easy and takes a lot of time. For example, a lot of components of the image need to be cross-compiled, which is more complex to achieve than just compiling the same piece of software under QEMU. But compiling under QEMU is not an option, since doing this on public services (like Github Actions) is way too slow (several hours and hitting the run time limit of the service).

Thanks a lot!! if it's not too much to ask do you have a timeframe on this?

Is there any news on this subject?

+1 to make it happen

1 thank you so much

Sending coffee your way. Thankful for all your efforts


Demo/proof-of-concept for helper notebooks

Convert nwm streamflow tutorials to use cluster and aws config 'helper' functions.

Per information in #193 -- helpers will be in the repo under ./environment_setup
I am envisioning a separate notebook per supported cluster environment:

[ ] Cloud / Nebari
[ ] Denali
[ ] Tallgrass


Implemented float4[] to agtype

@JoshInnis kindly review and merge the PR whenever possible. Thanks

yeah. Its a good start. Review my standardization.


Resizing cube causes validation errors

cube --validate emits 2 validation errors due to new validation checks.  May need to rework resize code along the lines of the resize code in Hologram.
(Note: Karl didn't see the validation errors on linux/nvidia)

I don't think this is necessarily a problem with cube.  See Lunar Exchange #501  ‐  ERROR: [DS] Code 12: ...  In debugging this, I see  Cube has just recreated the swapchain images, all of which are (verified in the debugger) B8G8R8A8_UNORM and core-validation is complaining that ASPECT_DEPTH and ASPECT_STENCIL need to be set. Note that I've only seen this on Windows, never on Linux, so it could be something uninitialized

Addressed by PR 503 - pushed to master


fix: change company name metadata

👷 Deploy Preview for aresceka processing.

Name
Link

🔨 Latest commit
254b914759d31623aebce44408a75d720cbacd9e

🔍 Latest deploy log
https://app.netlify.com/sites/aresceka/deploys/63d2e0b12b2e130009ea91bc


error during configuration and guild/ friends mode not working

when initially configuring, i run into this issue:
root@vmd90962:~/fragrunning-bot# node .
Failed to open cache dir Error: ENOENT: no such file or directory, mkdir '/root/.minecraft/nmp-cache'
    at Object.mkdirSync (fs.js:1013:3)
    at MsAuthFlow.initTokenCaches (/root/fragrunning-bot/node_modules/minecraft-protocol/src/client/authFlow.js:44:12)
    at new MsAuthFlow (/root/fragrunning-bot/node_modules/minecraft-protocol/src/client/authFlow.js:34:10)
    at Object.authenticateDeviceCode (/root/fragrunning-bot/node_modules/minecraft-protocol/src/client/microsoftAuth.js:108:18)
    at Object.createClient (/root/fragrunning-bot/node_modules/minecraft-protocol/src/createClient.js:41:21)
    at Object.createBot (/root/fragrunning-bot/node_modules/mineflayer/lib/loader.js:88:35)
    at App.createBotConnection (/root/fragrunning-bot/src/App.js:24:23)
    at App.start (/root/fragrunning-bot/src/App.js:17:21)
    at /root/fragrunning-bot/index.js:18:11 {
  errno: -2,
  syscall: 'mkdir',
  code: 'ENOENT',
  path: '/root/.minecraft/nmp-cache'
}

not sure if that what leads to the other issue which is the bot accepting group invited from anyone even if set on friends mode

ENOENT: no such file or directory means that while trying to create a cache to store the access token (stored at ~/.minecraft/npm-cache) one of the leading folders was not found. This will crash the bot rather than accepting party invites from anyone. I'll look into the friends mode not working and try to fix.


Support sending messages over IRC

Hi there!
I have been working for a while on an app to interact with Twitch chat and subsequently implementing pretty much the same as this library (for IRC and Helix, at least). It was a neat surprise to come across the repo just today, since it looks really neat and something I could perhaps help a bit with!
My first attempt at a contribution will be allowing sending chat messages through IRC, which I believe was missing. This should also solve #10, since the IRC client can be independently instantiated.
Please, let me know what you think about the change, or if you had something else in mind.
Cheers!

@LosFarmosCTL hey, friendly ping in case you missed this. I have other changes I would like to contribute (adding Sendable conformances and possibly unifying Emote models), let me know if I should go ahead and send PRs for those 😄

@LosFarmosCTL hey, friendly ping in case you missed this.

Oh whoops yup, thanks for the ping and PR in general, I did totally miss this 😄 Sorry for the general inactivity, I've injured my shoulder about 2 months back and couldn't really type until ~1 week ago, once my exams this month are over there will be some major progress here again (targeting a first stable v1 release at the end of this or early next year).
You're totally right, sending messages over IRC is indeed missing, never got around to implementing it, since I always use the Helix sendMessage endpoint now. It is definitely something that the IRC client should be able to do though, however there are some more details that have to be considered:
The biggest thing is that the connection used to send messages has to be be separate from the one to receive them.  And, since Twitch does not send your own messages back to you on the same connection, we need 2 separate ones (this is also what projects like https://github.com/chatterino/chatterino2 have to do)
Since Swifts main target is still mobile platforms, I would like there to be an option to disable creating that write-only connection. When the sendMessage function is called in that case, throw an exception. The same goes for trying to send a message using an anonymous connection, since that obviously won't work either.
Also, the public interface for the IRC client should use the IRCAuthenticationStyle enum that is passed to TwitchClient.ircClient right now, modified to include the TwitchCredentials inside of the authenticated case. TwitchClient.ircClient() can use the authenticated case by default (also, rename to something like createIRCClient while we're at it).
And the last thing, the public interface of the IRC client should not expose OutgoingMessage directly, instead the options of .privmsg should be provided as arguments to the sendMessage function, which can pass it on to a general function in the connection.
So, to summarize, the general interface I imagine would be like this:
actor TwitchIRCClient {
  private writeConnection: IRCConnection
  private readConnectionPool: IRCConnectionPool

  init(
    _ authenticationStyle: IRCAuthenticationStyle,
    options: IRCClientOptions = .init(), // don't require options to be customized
    urlSession: URLSession = URLSession(configuration.default)
  )

  // throws if write connection is disabled or connection is anonymous
  func sendMessage(
    _ message: String, in channel: String,
    replyTo messageId: String? = nil,
    clientNonce: String? = nil
  )
}

// there will be more options in the future, I have some things that I want to make configurable
// so an options struct makes sense
struct IRCClientOptions {
  let enableWriteConnection: Bool = true // default to true
}

enum IRCAuthenticationStyle {
  case anonymous
  case authenticated(using: TwitchCredentials)
}

extension TwitchClient {
  public func createIRCClient() // always return an authenticated client
}

I hope everything was understandable, if you have questions feel free to just ask 😄

I have other changes I would like to contribute (adding Sendable conformances and possibly unifying Emote models), let me know if I should go ahead and send PRs for those 😄

Regarding this, I'm working on Sendable conformances myself, want to redesign some stuff around that as well, but unifying emote models is something that should be done and I'd be happy to accept PRs, if you're interested in working on it.

Sorry for the general inactivity, I've injured my shoulder about 2 months back and couldn't really type until ~1 week ago

Haha, no worries, hope all is good now 👍🏽 .
RE: Needing two connections, yes, I am aware of that. I was actually waiting on an answer here to ask you whether that should be handled directly in the TwitchIRCClient or if users should do it themselves if needed (this is what I'm currently doing in my app).
Given your answer I think I can spend some time integrating it directly into the client and will report back once I get to it 😄 .

Also, the public interface for the IRC client should use the IRCAuthenticationStyle enum [...]

This makes sense, will take it into consideration.

And the last thing, the public interface of the IRC client should not expose OutgoingMessage directly, instead the options of .privmsg should be provided as arguments to the sendMessage function, which can pass it on to a general function in the connection.

Hmm. Not sure about this one. The API already exposes IncomingMessage when receiving the messages, why do you think it's best not to expose OutgoingMessage?

Haha, no worries, hope all is good now 👍🏽 .

Yup, doing a lot better now, thanks 😄

Hmm. Not sure about this one. The API already exposes IncomingMessage when receiving the messages, why do you think it's best not to expose OutgoingMessage?

Exposing the type itself isn't the issue, but OutgoingMessage adds the additional step of having to specify what outgoing message to send. The only 3 that have to be handled by the user are JOINs, PARTs and PRIVMSGs, while stuff like NICK, PASS, CAP REQ, PING etc. are all handled internally and never have to be supplied manually. It would also create unexpected behavior unless manually checking every type of message passed into it, if for example the user decides to send a JOIN into the write connection, which is not intended to be possible.
I think I've actually meant to create a new enum to translate IncomingMessage into as well, since at the point of handling the returned message, there is no reason for the user to expect e.g. a CAP ACK and include it in some switch case, since those are fully handled internally anyways.

Ignore the linting error, unrelated to this PR, there was a rule change in SwiftLint.
Fixed in main, makes more sense to return raw data if JSON parsing fails anyways, if Twitch returns a response that isn't valid UTF-8 there is no reasonable way to handle that at the library scope.

Hey there, had some time to put into this 😄 .
I have changed what we discussed:

IRC client init uses the existing IRCAuthenticationStyle (I moved it to TwitchIRCClient.AuthenticationStyle because it made sense to me, LMK what you think). TwitchClient always returns an authenticated IRC client.
IRC client receives an options struct (TwitchIRCClient.Options, again LMK).
IRC client handles a write connection according to the options.
IRC client doesn't expose OutgoingMessage, but receives the parameters instead.

Now, a couple things from your message that I didn't answer to before:

Exposing the type itself isn't the issue, but OutgoingMessage adds the additional step of having to specify what outgoing [...]

Ah, I hear you. Changed it to receive the message information 👍🏽 .

I think I've actually meant to create a new enum to translate IncomingMessage into as well [...]

Hmm not sure what I think about this one. It seems like copying something that exists already, but I also understand where you're coming from.

Other than that, I'll try to spend some time this week unifying the emotes. It will need some thinking because the responses are ever so slightly different. Will get back to you when I have something that I think makes sense.
Cheers!

There's one leftover method from the earlier version of this PR, other than that this looks good to me!

Ah, missed that. I'll try to update it later today 👍🏽

@LosFarmosCTL thank you for the merge 😄
I'll try to get something going for the emotes Soon ™ .


Ability to manage team membership for projects

I'm sorry for adding an issue for likely a misunderstanding on my part.
I want to be able to add a group to a project team.   It doesn't appear to be possible?  I'm on TFS 18 on prem.  The Add-VSTeamUser returns "this account does not support member entitlement" and I'm not sure it's the right call.  I can add users/groups to the team(s) in a project via the UI.  I'm working on converting via a script a large number of TFS 15 (TFVS repos) over to a new TFS 18 server and GIT.  Having to manually add groups to the project teams would be a bummer.

The error message is because the REST API that supports that was not in TFS 2018 at the time the module was created. I will see if that has changed and what API version is available in 2018.

I just used Get-VSTeamOption and did not see any APIs that would support user management.

Bummer, I was hoping I was doing something foolish.  :-)

Thanks. There will be future updates to TFS. I believe the next major release will be Azure DevOps Server and I bet it will come with a new version of the API which may support it at that time.


Selfishly add me in contributors list

Add "QuantumSheep" in contributors list because of fame and glory.

Remember me when your famous ;)


Add basic weapon and armor handling to damage calculations

Does not handle enchantments.
Implements /stat to increase combat stats for testing.
(also closes #474)

I merged this in but was not able to fix conflict on this branch for some reason


API: Implement Response for EM Submission Access Endpoints

[ ] Implement response (example value/schema) for POST and PUT EM Submission endpoints
[ ] Response should be the same at the EM Submission GET endpoint

PR: https://github.com/US-EPA-CAMD/easey-camd-services/pull/148


image hit percentage

Hello, is it possible to adjust the percentage of correctness of the images? I have a problem, where rpa does not find the image. Even though this image is 100% correct with what is displayed on the screen. Like width x height and pixel.
I believe that there must be a calculation to define a hit pattern and so I would like to regulate it.

Hey @tiagovasconcelosp ,
I was trying to reconstruct your issue. Can you provide a code snippet to experience that issue.
To answer your question directly, maybe you can work with the function r.vision,
Greets,
fi-do

Hi @fi-do
Here's an example of what I'm doing. Notice that I open a program and then I make a loop to wait for this time for the program to open, checking for existence with an image x button.
Ignore the comments, I was trying to do the same thing differently to try to get around the problem.
In order to proceed with the opening of the system.
In this time of waiting until he appears, he doesn't think with rpa. Sometimes it works and sometimes it doesn't. So I described the need above.
I'll try to exemplify with the image and the system.
class Auth:
def __init__(self, r, caminhoExe, logging, caminhoPrints, caminhoImages, dataForm, atividade):
    self.Login(r, caminhoExe, logging, caminhoPrints, caminhoImages, dataForm, atividade)

def espera(self, r, imagem, logging, extra = 0, invertido = False):

    espera = 0
    while not r.present(imagem):
        r.wait(1)
        espera += 1
        # print(str(espera) + 's')
        logging.info(str(espera) + 's')
    # r.wait(extra)

def Login(self, r, caminhoExe, logging, caminhoPrints, caminhoImages, dataForm, atividade):

    try:

        try:
            Sys("start " + caminhoExe)
        except:
            Sys("start C:\Saj\sajsg5\sajsg5.exe")

        # self.espera(r, caminhoImages + 'entrar.png', logging)
        logging.info('SAJ iniciado.')

        # imagem = caminhoImages + 'entrar.png';
        # espera = 10
        # while True:
        #     r.wait(espera)
        #     espera += 5
        #     print(str(espera) + 's')
        #     logging.info(str(espera) + 's')
        #
        #     if r.present(imagem):
        #         break

        r.wait(15)
        logging.info('Inciando autenticacao.')

        r.type(caminhoImages + 'usuario.png', dataForm['login'])

        if atividade == 'Decurso de prazo SAJPG':
            r.click(caminhoImages + 'senha.png')
            r.click(caminhoImages + 'logo-softplan.png')

            r.wait(1)

            esp=0
            while r.present(caminhoImages + 'lotacao_2.png'):
                r.wait(1)
                esp += 1
                print(esp)
                logging.info(str(esp) + 's')

            r.type(caminhoImages + 'senha-2.png', dataForm['pass'])
            r.wait(1)

        else:
            r.wait(1)
            r.type(caminhoImages + 'senha.png', dataForm['pass'])
            r.wait(1)

        # Usado quando havia autenticação manual
        # Remover do código
        # r.wait(tempoAguardar)

        # Verifica se foi clicado em entrar
        if r.present(caminhoImages + 'entrar.png'):
            r.click(caminhoImages + 'entrar.png')
            r.wait(10)

        # Fecha mesagem de fonte
        if r.present(caminhoImages + 'ok.png'):
            r.click(caminhoImages + 'ok.png')
            r.wait(5)

        # Fecha pesquisa
        if r.present(caminhoImages + 'responder-depois.png'):
            r.click(caminhoImages + 'responder-depois.png')
            r.wait(1)

        logging.info("Realizando autenticacao.")

    except Exception as e:

        # image = Print(firefox, caminhoPrints)

        logging.exception('Falha realizar autenticacao.')
        logging.info('Finalizando o robo.')
        logging.info(repr(e))
        logging.shutdown()
        os._exit(0)
        sys.exit(0)

@fi-do Cropped images used for rpa

Image of the system that rpa works on. Sorry for the image quality, I took a screenshot of a video

@fi-do Notice the cropping of the image, you should find it perfectly.

Adding on, some possible causes could be -

if it is Windows, try changing display zoom % to 100% or the recommended % to see if it helps
if is on Mac, try checking if it is due to Retina display issue and the solution here
if it is due to the app taking too long to load and appear, you can use r.wait(30), for example, to have a longer timeout

I don't think the match % can be set as a parameter, for the underlying computer vision engine used (SikuliX).

@kensoh Thanks for the help, I understand these mentioned cases. But it's none of those.
It would be interesting to know about the possibility of these parameters but I already imagined that they didn't have it.
My specific problem was due to the list of libraries related to pyinstaller, luckily I was able to identify the problem and solve it.
When I did the conversion, it somehow affected the functioning of rpa/ocr

I see.. Yes I confirmed that the underlying SikuliX engine does not support adjusting the match % - https://sikulix-2014.readthedocs.io/en/latest/region.html#Region.click
Feel free to share more about the issue and what the conversion is doing. This issue should be also replicable with TagUI. If so, you can consider joining the weekly TagUI Zoo Q&A call to troubleshoot further with my ex-colleague Ruth - https://github.com/kelaberetiv/TagUI/issues/914

Closing issue for now but please let me know if you run into any problem!


files are emptied after creation of the project

Describe the bug
when creating multiple files, contents of the files other than the last one created are emptied.
I thought the content was permanently removed, but fortunately "Ctrl+Z" undo this removal.
It is, however, very annoying and most people will assume it is a permanent deletion.
Link to the Bolt URL that caused the error
do not matter
Steps to reproduce
1- go to "bolt.new"
2- try a long prompt so it will create a multi-file project.
3- watch every file being created one by one
4- after the last file is written, open al other files to see them being empty.
and
5- press undo to undo deleted file contents.
Expected behavior
file contents are not deleted
Screenshots
No response
Platform

Windows 10 22H2 64bit up-to-date
Edge 129.0.2792.65 (Official build) (64-bit) up-to-date

Additional context
No response

This issue was caused by a Remix React SSR Hydration mismatch, because a browser extension (or this browser itself) modified the dom. We've just shipped a fix, feel free to test and report back


Duration value doesn't effect the Slide animation

I want to change the slide animation interval from the default of 2 seconds to 4 seconds. By using the option it is not working although it worked for the animation as count.
Can you help in changing the duration for the slide animation?
Thanks
Ankit

See https://github.com/HubSpot/odometer/issues/91#issuecomment-88532985


Api skills

Limit number of checkbox selections at skills is complete! Or I think so.
Could you review it?
Thanks :)

We have to delete the commented code in fill_card.html

Hi Paula,
we do have to conflicting files in :
Conflicting files
_src/assets/js/main.js
_src/templates/partials/_fill_card.html
one of them is thet we just create two const with diferent names that could me use only as one :
const skillsCheckList = document.querySelectorAll('.skills__checkbox');
const checkList = document.querySelectorAll('.skills__checkbox');
what do you prefer??? Do you want me to change my code  or you would change yours?.
and the other one we cal solve it oruself because we had to create a new container to make it colapsable.
so, please,  let me know if i you prefer to change the name of your const or not.
Thanks for your attention.

Thanks, Yen!
Please, feel free to to change your code for fixing de duplicate constants :)
Of course we should delete the commented code, Laura, thank you!

Yeah! 👍


Store permability and max level for skills in datafile

Moving out some per-skill data from switch statements into the datafiles by establishing a tokenized attribute column in classskills.txt. It feels like the right place to store this sort of information, but it also helps with generating the base data for tools like my own greenbox

Now that my personal projects - BeachComber - have slowed down, I can review (and write) other PRs.
Would you please include some text explaining what you are trying to do?
Please don't make me study the code to figure it out.
Thank you.
(I will study code - but only if I understand the intent.)

Now that my personal projects - BeachComber - have slowed down, I can review (and write) other PRs.
Would you please include some text explaining what you are trying to do?
Please don't make me study the code to figure it out.
Thank you.
(I will study code - but only if I understand the intent.)

Sorry - added a description!

You've changed which skills are marked as permable.
Skills which were formerly permable and now are not:

Chronic Indigestion
Replica Emotionally Chipped

The former should still be permable, the latter is correctly not.
Some skills which auto-permed were previously marked as not permable, but are now marked as permable. I think given the inconsistency the new way is better.

Acquire Rhinestones
Budget Conscious
Carol of the Bulls
Carol of the Hells
Carol of the Thrills
Chip on your Shoulder
Drinking to Drink
Gallapagosian Mating Call
Get Big
Inscrutable Gaze
Love Mixology
Paul's Passionate Pop Song
Pirate Bellow
Request Sandwich
Thick-Skinned
Toggle Optimality

Also, the max level is not exposed anywhere externally to scripts -- it's just for programs which manually download the data file?

Transcendent Olfaction

You've changed which skills are marked as permable.
Skills which were formerly permable and now are not:
* Chronic Indigestion

* Replica Emotionally Chipped

The former should still be permable, the latter is correctly not.

That was not intended!

Some skills which auto-permed were previously marked as not permable, but are now marked as permable. I think given the inconsistency the new way is better.

Yes I agree

Also, the max level is not exposed anywhere externally to scripts -- it's just for programs which manually download the data file?

I replaced some in-code use with the new data driven data. But yeah it could be exposed to scripts if we wanted.


Validate that only a single OpMemoryModel is provided.

This CL adds validation that only a single OpMemoryModel is provided in the
SPIR-V binary.
Fixes #1574

Rebased, squashed and committed as 0a14a1f74840ebd172e4128a8789f44190d1e4e7