fix(content): s/IPNS/IPFS

Summary
This fixes a typo by updating IPNS to IPFS.

We'll need to wait to merge this until later today or Monday due to ongoing maintenance on the docs engine.

I don't believe this is a typo. IPNS stands for InterPlanetary Name System (https://docs.ipfs.io/concepts/ipns/) is discussed in the linked article.

Thanks @almndbtr! Fixed in https://github.com/cloudflare/cloudflare-docs/pull/3626

@lukevalenta Oh my goodness, I totally learned something new and missed that in my own review! Sorry about that. Would you like to either revert this, or have me elaborate that specific detail in a follow up PR? I want to be a good citizen here!

Hey @almndbtr no worries! I think the PR is probably still technically correct since IPNS could be considered a subsystem of IPFS. We don't mention IPNS directly elsewhere in the Cloudflare docs from what I can tell, so I'm on board with keeping the changes as-is. Thanks for the PR!

@lukevalenta - Thanks for the clarification. If you or the team change your minds, let me know! Totally happy to do follow-up work.


java.lang.NoSuchMethodError on net.wolverinebeach.flutter_timezone.FlutterTimezonePlugin.getLocalTimezone

Following low level exception occurs when running on certain devices:

Exception java.lang.NoSuchMethodError: No direct method (II)V in class Lj$/util/concurrent/ConcurrentHashMap; or its super classes (declaration of 'j$.util.concurrent.ConcurrentHashMap' appears in /data/app/androidx.test.tools.crawler-c9b3cs5GiKgF-HucStw1fg==/base.apk!classes2.dex)   at j$.time.zone.g.   at j$.time.zone.g.b   at j$.time.s.r (SourceFile)   at j$.time.ZoneId.of (SourceFile)   at j$.time.ZoneId.systemDefault (SourceFile)   at net.wolverinebeach.flutter_timezone.FlutterTimezonePlugin.getLocalTimezone (FlutterTimezonePlugin.java)   at net.wolverinebeach.flutter_timezone.FlutterTimezonePlugin.onMethodCall (FlutterTimezonePlugin.java)   at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage (MethodChannel.java)   at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler (DartMessenger.java)   at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0 (DartMessenger.java)   at android.os.Handler.handleCallback (Handler.java:883)   at android.os.Handler.dispatchMessage (Handler.java:100)   at android.os.Looper.loop (Looper.java:237)   at android.app.ActivityThread.main (ActivityThread.java:8016)   at java.lang.reflect.Method.invoke   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1076)

See the image below for device informations from Google Playstore:

Any ideas on how to fix it on my side? Unfortunately the exception does not tell me a lot.
Thanks for your effort!

Strange. This looks like it could be related: https://github.com/mockk/mockk/issues/530
Is this in release builds, or also in debug? What does your proguard config look like?

This only happens for me in release builds and does only occur during Google PlayStores pre launch checks.
I do not have a specific proguard config in my project. I'm only using default flutter R8 code shrinking with no extra config.
I'll paste a part of my build.gradle below:
  android {

    namespace "namespace"
    compileSdkVersion flutter.compileSdkVersion
    ndkVersion flutter.ndkVersion

    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        applicationId "my-id"
        multiDexEnabled true
        minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger()
        targetSdkVersion localProperties.getProperty('flutter.targetSdkVersion').toInteger()
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

I indeed have desugaring enabled since my app is using local push notification scheduling. Maybe I can double check and try to disable it to narrow the issue down.

You may want to try adding something like: -keep class java.util.concurrent.ConcurrentHashMap {*;} to your proguard rules.

I adapted my release config:
    buildTypes {

        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

My proguard-rules.pro file under android/app/ looks as following:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-keep class java.util.concurrent.ConcurrentHashMap { *; }

Still receiving:
Exception java.lang.NoSuchMethodError: No direct method <init>(II)V in class Lj$/util/concurrent/ConcurrentHashMap; or its super classes (declaration of 'j$.util.concurrent.ConcurrentHashMap' appears in /data/app/~~vpS1QgXFsV1-ngKQDB5v3w==/androidx.test.tools.crawler-RbJQvC7vlZjaCx3kyIXuWg==/base.apk!classes2.dex)
  at j$.time.zone.g.<clinit>
  at j$.time.zone.g.b
  at j$.time.s.r (SourceFile)
  at j$.time.ZoneId.of (SourceFile)
  at j$.time.ZoneId.systemDefault (SourceFile)
  at net.wolverinebeach.flutter_timezone.FlutterTimezonePlugin.getLocalTimezone (FlutterTimezonePlugin.java)
  at net.wolverinebeach.flutter_timezone.FlutterTimezonePlugin.onMethodCall (FlutterTimezonePlugin.java)
  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage
  at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler (DartMessenger.java)
  at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0 (DartMessenger.java)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7918)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

My build size increased at around 100kb compared to not using a progaurd rules so I assume that R8 gets the config file and keeps the java.util.concurrent.ConcurrentHashMap. I wonder why it does not find it though.
I'll run another test with  flutter build appbundle --no-shrink and see if PlayStore pre launch determines errors as well.

It definitely looks like there is some non-public code in ConcurrentHashMap that doesn't make it into your build. Sadly, I don't have a lot of experience with ProGuard/R8. If I were you, I'd play around with the options here, in particular -printconfiguration and -addconfigurationdebugging sound like they may be useful.

Even with flutter build appbundle --no-shrink pre launch check finds the error from above. From my understanding this should disable code shrinking completly and therefore solve the issue if it's ProGuard/R8 related.
I'm just guessing how ever. I'll try to dig a little bit deeper.
Thank you for your input / help so far!
I think we can close the issue since it is pretty sure on my side.

Good luck! Would be great to know if you come up with any gotchas related to using flutter_timezone with desugaring so we can document it for future users.


fixes issue #24776

Added "Popular" as the value of "currently_selected" in line 592 in https://github.com/zulip/zulip/blob/cd3c4cd991955b73fb8c9f426596dce83d2c9dcc/web/src/emoji_picker.js#L590-L592
if (scrolltop === 0) {
currently_selected = "Popular";

Thanks, but I don't think this PR is on the right track.

Please can you point me to my mistake so that, I will not do the same mistake again in future PR also. Since this was my first PR raised on any OSS project, I will be highly obliged if you will give some valuable suggestions on how I can improve myself.


Audio Band won't start

Hi, yesterday I've tried to install Audio Band for the first time. I've followed the instructions, the toolbar is showing but when I click on Audio Band settings, nothing appears. Also, Audio Source not showing anything. I've altready tried to uninstall and reinstall and the .net framework is updated.
Here's the log:
AudioBand.log
Thanks a lot!

You need to unblock the files. MahApps.Metro.IconPacks.Material.dll and maybe others.

Thanks, now it works.


BUG: spatial: premature overflow in mindowski distance

Is your feature request related to a problem? Please describe.
When investigating the behavior of weighted Chebyshev distance as a limit of Minkowski distance, I find that the latter “quickly” overflows and returns nan when p gets large, for example p = 1000.
Describe the solution you'd like.
It would be nice if Minkowski distance computation does not incur premature overflow.
Describe alternatives you've considered.
For my purpose I tried with some smaller p to investigate the limiting behavior.
Additional context (e.g. screenshots, GIFs)
I guess practical use of p may be restricted to the few special values. Therefore I mark this issue as MAINT and just as a reminder to look at as a “good-to-have”.

I switched the label from enhancement to bug.  Maybe not a high priority bug (who really requires an order of p=1000?), but returning inf is not correct, so let's call it what it is.
Note that the function minkowksi (implemented in Python) and the C++ implementation that is used in pdist both have the problem, but in the former, it is because np.linalg.norm also has the problem, e.g.
In [68]: np.linalg.norm([1, 2, 3, 4], ord=1000)
/home/warren/miniconda3/lib/python3.12/site-packages/numpy/linalg/linalg.py:2590: RuntimeWarning: overflow encountered in power
  absx **= ord
Out[68]: inf

The Minkowski distance calculation also suffers from premature underflow (except when scipy.spatial.distance.minkowski is used and p=2):
In [107]: X
Out[107]:
array([[1.e-174, 2.e-174, 3.e-175, 9.e-175],
       [3.e-175, 2.e-174, 2.e-175, 1.e-174]])

The value 0 returned here is not correct:
In [108]: pdist(X, metric='minkowski')
Out[108]: array([0.])

Our Python implementation uses scipy.linalg.norm, which uses the BLAS function nrm2 to compute the Euclidean norm, and nrm2 correctly handles very small and very large values in the input vector, so we get the correct result here:
In [109]: minkowski(x, y, p=2)
Out[109]: 7.141428428542849e-175

Other values of p result in underflow in an intermediate calculation and 0 is returned:
In [110]: pdist(X, metric='minkowski', p=2.5)
Out[110]: array([0.])

In [111]: minkowski(x, y, p=2.5)
Out[111]: 0.0

For completeness: the calculation also suffers from overflow when the values in the vectors are sufficiently large, even for "typical" values of p:
In [131]: X
Out[131]:
array([[1.e+176, 2.e+176, 3.e+175, 9.e+175],
       [3.e+175, 2.e+176, 2.e+175, 1.e+176]])

In [132]: pdist(X, metric='minkowski', p=2)
Out[132]: array([inf])

I used p=2, so we can calculate the correct result with minkowski:
In [133]: minkowski(X[0], X[1], p=2)
Out[133]: 7.14142842854285e+175

Thanks for the test cases!
I’m currently looking at consolidating the Python and C/C++ implementations (by calling the latter from the former), so that for this kind of bugs we only have to fix in one place. Hopefully I could get a first draft before end of August.

One way to approach this would be to do the calculation in log space with logsumexp().
Like so:
def minkowski(u, v, ord):
    delta = u - v
    logged_delta = np.log(np.abs(delta)) * ord
    return np.exp(scipy.special.logsumexp(logged_delta) / ord)

I also tried writing a version of this which can handle weights, and is a little more careful about zeros and dtypes, but is the same basic idea:
def minkowski2(u, v, p=2, w=None):
    u = np.asarray(u, dtype='float64')
    v = np.asarray(v, dtype='float64')
    if w is not None:
        w = np.asarray(w, dtype='float64')
    delta = np.abs(u - v)
    logged_delta = np.full_like(delta, -np.inf)
    np.log(delta, out=logged_delta, where=delta != 0)
    logged_delta *= p
    if w is not None:
        w_logged = np.full_like(w, -np.inf)
        np.log(w, out=w_logged, where=w != 0)
        logged_delta += w_logged
    return np.exp(scipy.special.logsumexp(logged_delta) / p)

Example usage:
minkowski2([10, 0], [0, 20], p=100000)
20.013867749251617

It seems fairly accurate for small values of p, and for large values of p, it's close to max().
20.000000000000007


NewLine '\n' related issue

Hi,
I have a string which is returned by a JAVA API as follows.
var text = "Enjoy True Value Tuesday!\nExclusive Bhangra Class tomorrow at 7am.\nAlso get flat discount Rs.2500\/- on all memberships.\nFirst come First book.Limited 10 ";
When I set the text of the vaadin-text-area to this string it does not show the full text.

I don't know what is the problem here. I have tried to change the newline to "
" as suggested here but it does not solve the problem

Can anyone please give some pointer? Is this a bug?

Ok, this is not related to newline. The thing is that there is no way to scroll the text as the text area is readonly. To repeat that,
go to vaadin demo page and select any text-area using chrome-dev tools. Then in console do the following
$0.readOnly=true;
$0.value=text;
The output is as shown in the below image

You can not focus on the text area anymore, so you can not scroll the text.

I wonder if you're setting the value to the internal <textarea> element here? You should select the <vaadin-text-area> instead and use $0.readonly = true and $0.value = ...

Closing as inactive/not reproducible.


Pixi stuck during pixi resolving conda

Checks

[x] I have checked that this issue has not already been reported.

[x] I have confirmed this bug exists on the latest version of pixi, using pixi --version.

Reproducible example
pixi shell

Issue description
pixi seems to be stock when trying to resolve the environment for the following dependencies:

[system-requirements]
libc = {family = "glibc", version = "2.22"}
linux = "4.12.14"

[dependencies]
polars = ">=1.8.2,<2"
pyarrow = ">=17.0.0,<18"
python = "3.9.*"

I am using pixi version 0.30.0
Expected behavior
Resolve the environment and instantiate the shell.

I believe this is fixed tomorrow with the next pixi release. We made the resolver a lot faster (again).

This is actually still slow with the improvements 😱.
I ended it at 4 minutes. It seems to be searching through all the python_abi version regardless of the python version being limited to 3.9.* with specifying python = "3.9.20" it only takes a few seconds.
@baszalmstra Could this be an actual issue or is this a crazy edge-case?

Never mind, I must have tried an broken binary!
The result with the just released version:

~/slow
❯ pixi --version
pixi 0.31.0

~/slow
❯ time pixi i
✔ The default environment has been installed.

real    0m0.377s
user	0m0.526s
sys	0m0.540s

Closing as solved!


Suggestion: Markdown Guide

Add a guide to Markdown?

Finished: https://scratchtutorials.vercel.app/markdown-guide. 😸

Cool

@MystPi you should change the wording of the part where there is code, because I assume most people on Scratch Tutorials may not know, so something like 'text-based coding languages outside of Scratch'

What do you mean? Could you open a PR with your suggested changes?


[GoRouter] LateInitializationError

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

I need to path parameters in the path and a bug happens
It happens when I go or push to the page but other pages work well

Expected results
no need
Actual results
no need
Code sample
go router config
import 'package:go_router/go_router.dart';

import '../pages/first_page.dart';
import '../pages/second_page.dart';
import '../pages/third_page.dart';

final routerConfig = GoRouter(
  initialLocation: "/first",
  routes: [
    GoRoute(
      name: "First Page",
      path: '/first',
      builder: (context, state) => const FirstPage(),
      routes: [
        GoRoute(
          name: "Second Page",
          path: 'second',
          builder: (context, state) => const SecondPage(),
        ),
        GoRoute(
          name: "Third Page",
          path: 'third/:userName',
          builder: (context, state) => ThirdPage(
            userName: state.pathParameters['userName'],
          ),
        ),
      ],
    ),
  ],
);

The page having the bug
import 'package:flutter/material.dart';
import 'package:flutter_modules/modules/widgets/public_text.dart';
import 'package:go_router/go_router.dart';

class ThirdPage extends StatelessWidget {
  final String? userName;
  const ThirdPage({super.key, this.userName});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Third Page"),
        leading: IconButton(
          icon: const Icon(Icons.arrow_back),
          onPressed: () => context.pop(),
        ),
      ),
      body: Center(
        child: PublicText(txt: userName ?? "none"),
      ),
    );
  }
}

the action button
            ElevatedButton(
              onPressed: () => context.go("/first/third/Arafat"),
              child: const Text("go third"),
            ),
            ElevatedButton(
              onPressed: () => context.push("/first/third/Ahmed"),
              child: const Text("push third"),
            ),

The error
LateInitializationError: Field '_minTextAdapt@186084504' has not been initialized.

Screenshots or Video
none
Logs
Logs
[Paste your logs here]

Flutter Doctor output
Flutter Doctor
[√] Flutter (Channel stable, 3.13.0, on Microsoft Windows [Version 10.0.19045.3324], locale en-US)
    • Flutter version 3.13.0 on channel stable at C:\Users\metra\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision efbf63d9c6 (4 weeks ago), 2023-08-15 21:05:06 -0500
    • Engine revision 1ac611c64e
    • Dart version 3.1.0
    • DevTools version 2.25.0

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\metra\AppData\Local\Android\sdk
    • Platform android-33, build-tools 30.0.3
    • Java binary at: C:\Program Files\Android\Android Studio1\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[!] Visual Studio - develop Windows apps (Visual Studio Community 2019 16.11.17)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.32630.194
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the
      "Desktop development with C++" workload, and include these components:
        MSVC v142 - VS 2019 C++ x64/x86 build tools
         - If there are multiple build tool versions available, install the latest
        C++ CMake tools for Windows
        Windows 10 SDK

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[!] Android Studio (version 4.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    X Unable to determine bundled Java version.
    • Try updating or re-installing Android Studio.

[√] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\intellij\IntelliJ IDEA Community Edition 2020.2.3
    • Flutter plugin version 61.2.3
    • Dart plugin version 211.7792

[√] Connected device (4 available)
    • RMX1821 (mobile)  • K7XOSOL7HIJRFUFU • android-arm64  • Android 10 (API 29)
    • Windows (desktop) • windows          • windows-x64    • Microsoft Windows [Version 10.0.19045.3324]
    • Chrome (web)      • chrome           • web-javascript • Google Chrome 116.0.5845.180
    • Edge (web)        • edge             • web-javascript • Microsoft Edge 116.0.1938.69

[√] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

@ahmeddarafat Thanks for the report.
Can you provide implementation for Field '_minTextAdapt@186084504 ?
Also, check this documentation for LateInitializationError https://api.dart.dev/stable/2.8.4/dart-core/LateInitializationError-class.html and see if it is could be throwing the error due to code implementation and how you are accessing that variable.

I've solved the issue, It's not related to GoRouter package
sorry about that And Thanks for your time


Added tab completion to the Default theme

NOTE: This has only been added into Default theme, not Rounded, Hydris or any other theme.
There is no reason as to why this should not be added into any other theme as it causes no conflicts as so far as I have read from the Hydris and Rounded source code.

What about the Unity theme?

Added some lines of code I missed during the commit.


Cherry pick relevant commits from tankkings sdf branch

We've probably got a few commits scattered in here that would be worthwhile cherry picking for 3.X.
https://github.com/winterpixelgames/godot_box2d/commits/game-tankkings
A lot of the commits on this branch are inter-mingled with a bunch of game specific tweaks and some box2d sdf fixture type, but there's probably some isolated commits that are worthwhile pulling in.  Example https://github.com/winterpixelgames/godot_box2d/commit/fd613e568c9b437a8799e9faf08585c473f4da07 for web export builds (which by default aren't compiled with rtti in godot)

short list for cherry-pick:
https://github.com/winterpixelgames/godot_box2d/commit/5e9c1d5b82e8ed1feb33e9871611b2f338045759
https://github.com/winterpixelgames/godot_box2d/commit/a0e93e0d4002f3dd3eb944224562d37e5786e3e0
https://github.com/winterpixelgames/godot_box2d/commit/fd613e568c9b437a8799e9faf08585c473f4da07
https://github.com/winterpixelgames/godot_box2d/commit/f8881fa26a01f38c7c91135fa5fdc5ddac61d8e7 and https://github.com/winterpixelgames/godot_box2d/commit/b37653a56c39b239bcd9518a5106581fcd3083ae
We moved to custom modules folder, so this path works better if you are using a custom modules folder:
https://github.com/winterpixelgames/godot_box2d/commit/76b443618f61a6dd115adf64b0b3a25cd55c0ec5
This one, i'm not sure but I think may be already integrated upstream:
https://github.com/winterpixelgames/godot_box2d/commit/3224b50de12cab758f48fdfda1910d2dba8865b7

Just want to note that the above-mentioned winterpixelgames@f8881fa and winterpixelgames@b37653a are on the same subject as #58. It makes sense to do those changes together.
(I'm dipping my toes in server-side rollback and may tackle that issue soon.)

Expose position and velocity on b2world_step
https://github.com/winterpixelgames/godot_box2d/commit/410d0f9f0a375a86d026b0554bc3284a94c89c06

FYI I'm working on cherry picking some of this stuff into https://github.com/briansemrau/godot_box2d/tree/bugfix/various-fixes

I'm going to close this. Feel free to reopen it if more cherrypicks come up.


How do you implement departure times in a CVRPTW problem

I am trying to solve a vehicle scheduling problem in which I have weekly demands to send to multiple customers.
For example:
Today is Monday 15th of Aug.
The Depot, Customer A and Customer B are colinear points.
Customer A wants item X by Aug 25 and is six days away.
Customer B wants item Y before Aug 28 and is three days away.
Item X will be in our Depot on Aug 16
Item Y will be in our Depot on Aug 18
How do I tell the solver to wait for item Y to ship both items on Aug 19? Currently our algorithm isn't aware of the item availability and sends both items on Aug 15.

Hello Adrian,
To allow your vehicles to stay in the depots at the beginning, you have to
set fix_start_cumul_to_zero
https://github.com/google/or-tools/blob/master/src/constraint_solver/routing.h#L386
to
false in your time dimension. This way, the solver will tempt to make the
vehicle wait until it can serve both Customers A and B, because obviously
it is a better solution in term of distance and used vehicles.
You may consider using a capacity dimension to constrain your vehicles
capacity as shown in this example
https://github.com/google/or-tools/blob/master/examples/cpp/cvrptw_with_resources.cc
.
I hope this helps.
Regards.
On Thu, Aug 4, 2016 at 11:08 PM, Adrian Rangel<EMAIL_ADDRESS>wrote:

I am trying to solve a vehicle scheduling problem in which I have weekly
demands to send to multiple customers.
For example:
Today is Monday 15th of Aug.
The Depot, Customer A and Customer B are colinear points.
Customer A wants itemX by Aug 25 and is six days away.
Customer B wants item Y before Aug 28 and is three days away.
Item X will be in our Depot on Aug 16
Item Y will be in our Depot on Aug 18
How do I tell the solver to wait for item Y to ship both items on Aug 19?
Currently our algorithm isn't aware of the item availability and sends both
items on Aug 15.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/222, or mute the thread
https://github.com/notifications/unsubscribe-auth/ASwpfGXjSZq1YfWBdOMSaGkMp7-oKRy0ks5qclS9gaJpZM4JdH9S
.

--
Regards,
driss

Documented.


Load userinfo without refreshing tokens

Is there a way to fetch data from the userinfo endpoint without having to refresh the tokens?
AFAIU the "loadUserInfo" options loads data upon login, but there's no way to force a refresh of the information.

Currently loadUserInfo is tight to the SigninResponse within ResponseValidator._processClaims, but that could berefactored and that feature could be made accessible independent of the sign-in process...

I may be able to contribute to this, but I think there are several ways to do it.
The first two that came to mind are:

Add an optional parameter to UserManager.getUser (eg. updateUserInfo?: boolean) and, if the user is logged and the parameter is set, invoke a new method that refresh the data and store the updated data.
Create a separate method UserManager.getUserInfo that retrieves the "user info claims" from storage and/or from remote (with an "update" parameter like before)

I think that some refactor is required, because AFAIU the UserInfoService is currently strictly related to the _processClaims (and nested) methods of ResponseValidator, but it should be separate from that.
Let me know if you have a different view on how this may be solved.

The first open makes most sense.
BTW: This library already support silent renewing of the access token / id token, that path also takes into account to load the additional user info if needed via SigninResponse.

I'm struggling to understand the reason behind https://github.com/authts/oidc-client-ts/blob/de93b53bc9594b8dc897c3c6eb602154b541de4a/src/ResponseValidator.ts#L219 .
With this, whenever a value change, the claim is transformed into an array and the new value is added to the previous.
Besides the feature I'm working on, I think this may already cause problems (probably https://github.com/authts/oidc-client-ts/issues/790 is due to this). For example, imagine the following scenario:

settings = { [...], loadUserInfo: true, automaticSilentRenew: true }
Perform signin
Go to Identity Provider and change some attributes (eg change nickname and update thumbnail)
Wait for token expiration
UserManager will automatically refresh the token, but AFAIU nickname and thumbnail will now contain old and new values.

What is the reason behind this? Changing this behavior is a Breaking Change, so I don't think it can be changed easily, but at the same time we wound need additional parameters and logics to handle a new "overrideClaimsOnRefresh" param (and also knowing which claims should be overwritten and which should be concatenated)

I'm struggling to understand the reason behind
https://github.com/authts/oidc-client-ts/blob/de93b53bc9594b8dc897c3c6eb602154b541de4a/src/ResponseValidator.ts#L219

Agree on that, i saw this as well. That whole code is not optimal as it makes of an none array (result[claim]) an array. This code is already present in the older library oidc-client. And as you said changing  would mean a breaking chance. Maybe we can hide it behind a setting, which defaults to current implementation and when we do a 3.x, we can drop this kind of code/settings?

Yeah, we can do a "legacyMergeClaimsBehavior" that is defaulted to true in this version and will be set to false in the next.
If the new behavior is enabled, I think it should be something like
Given "old" and "new" claims
1. Loop over "old" claims. For each claim, if the value is NOT existing on "new" and it's not one of the required claims, delete it.
2. Loop over "new" claims. For each claim
   a. if the value is an object and "mergeClaims" is enabled, recurse on the object
   b. otherwise, if the value it's different (or non existent), update it (or add it) on the result.

The first loop is something I'm struggling with. I think it's necessary to handle the scenario where, in the updated data, something has been removed for any reason, but at the same time I fear losing important data that it's not actually "required" by the standard.

The first loop is something I'm struggling with. I think it's necessary to handle the scenario where, in the updated data, something has been removed for any reason, but at the same time I fear losing important data that it's not actually "required" by the standard.

Yes, we should definitely not remove stuff that was present in the initial claims.
My understand is that we should preserve initial data and only update, enrich what is new. Important is to keep the data type as is (e.g. previous: object -> merged should be still an object, etc...). The current implementation makes e.g. an string to an array of string, which is very unexpected.
Merging:

object is trivial: update existing, preserver previous, add new
if the object is an array i am not so sure whats the best: add new values or replace the whole array though
string/int (non objects): only update existing

What i also do not like in that code path is the recursion, maybe we can get ride of it by using a stack-based algorithm (e.g. https://haacked.com/archive/2007/03/04/Replacing_Recursion_With_a_Stack.aspx/).

@pamapa I agree with you, but what can be considered "initial claim"? If loadUserInfo is enabled, "userInfo" claims will be merged from the start and right now "userInfoClaims" and "tokenClaims" are not stored separately.
Imagine a scenario where the user "deletes" its profile picture. The claim (obtained via userInfo) should be disappear / be nulled upon restart...
A variant of this scenario is where the user "adds" its profile picture. In the old data there's no claim, but in the new data we will have it.
As per array merging, I don't have a real use case to think about this. Thinking about hypotetical cases, for example "liked profiles on facebook", the array should be replaced. Do you have any scenario where concatenating new values would be better?

..., but what can be considered "initial claim"? If loadUserInfo is enabled, "userInfo" claims will be merged from the start and right now "userInfoClaims" and "tokenClaims" are not stored separately.

initial claim: what is first coming from the id token, then enriched with the user info, if desired.

Hey @tbm206 , I started working on the issue but then some other priorities at work happened.
I hope to be able to work on this during this week.

Thanks @marcoreni. Much appreciated

Hi @marcoreni. I see there was some momentum in the linked PRs? When do you expect the work to be merged?

This can now be achieved much simpler, when doing something like (un-tested) within a merge request:
in UserManager.ts
public refreshUserInfo() {
  const logger = this._logger.create("refreshUserInfo");
  const user = await this._loadUser();
  if (user) {
    user.profile = await this._client.getUserInfo(user.access_token, user.profile);
    await this.storeUser(user);
    logger.info("refreshed user info");
    return user;
  }

  logger.info("user not found in storage");
  return null;
}

To check for user and user.expired can be done in the application code...


Reader considers certain files as stop points

I'm not entirely sure whether it is due to an unoptimized file, but I have noted that MIDI Processor would specifically treat a certain file of mine as a "stop" rather than converting it or past it. Specifically, whenever I would try to convert one of my midis in particular, it would not convert it, and would actually consider it a break point. No files placed after it would be converted, and if put as the only file/top of the file, nothing would be generated. I have tested it and have realized it is specifically this file, no others caused it.
I do have the link to the file in question, and I am not experienced at all with editing MIDIs, but I would like to know what causes this. The link to the file is: https://songs.bardmusicplayer.com/?dl=1153668247397343353. If this is an issue that is easily fixed or has been asked before, I apologize.
Thank you for your time.

Heyaaaaa, so it was just a mild incompatibility with the way the midi was created as far as i was able to tell, i had encountered the same bug you did.
Tweaked it a tiny amount in fl studio (how you create and edit midi files) and re-exported it to an amazing success~! I've gone ahead and attached the file for you here, if that's everything feel free to mark the issue as closed and hopefully it helps!
(btw, you dont need to convert them anymore but just thought i'd do it to help you out)
https://drive.google.com/file/d/1s6RIzYBQQ8QkzgMSguT6cMUmZnVML0Dt/view


consistent button states

Summary

Fix hover state
Fix success and failed states for primary gradient
Removed border for success and failed states

Checklist

[ ] *Added unit tests
[ ] *Added a code reviewer
[x] Added changes to /projects/swimlane/ngx-ui/CHANGELOG.md under HEAD (Unreleased)
[x] Updated the demo page
[x] Included screenshots of visual changes

*required

Hi I think I need to be added as a reviewer


Keychip: document flash

Document blocks 7A, 7B, 7C and remove old information

Thank you for the useful information. 👍


Introduce CEL based validation in App spec for SA and Cluster

Describe the problem/challenge you have
Tried creating an App CR with no service account or cluster specified. The resource got created, but reconcile errored stating:
Reconcile failed: Preparing kapp: Expected service account or cluster specified. The documentation states that both of them are optional fields, hence as a user I'm unaware that one of them needs to be specified.
Describe the solution you'd like
Based on the conversation here, it does make sense to either have the user specify the target cluster where App CR needs to be installed, or the sa which needs to be used to install it in the same cluster. However, running this validation after the resource is created is not necessary (refer: https://github.com/carvel-dev/kapp-controller/blob/5b1294bdf60107c9ff20b79e519abaefd71c4682/pkg/kubeconfig/kubeconfig.go#L75). This can also be done on the admission control level before an App CR is created.
Solution: Add CEL based validation to ensure that one of them are specified.
Anything else you would like to add:
None

Vote on this request
This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.
👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"
We are also happy to receive and review Pull Requests if you want to help working on this issue.

@prembhaskal Sorry, I missed that you had assigned this issue. Could you please help in reviewing the PR? Thank you!

Thank you for reporting the issue. I am checking the PR.

Old related issue: https://github.com/carvel-dev/kapp-controller/issues/598


Fix geometry tests

As noted in #188 , there are some additional test failures on Jenkins. One of these is due to a naive GeometryEngine test that tries to convert all T4 inhibitors to all others. It shouldn't actually be capable of that, so I'm going to fix that test.

Thanks!

Closing because the Jenkins issue (#188 ) was also closed.


Alluxio

What is this PR for?
Zeppelin provides an Alluxio interpreter compiled with Alluxio client v1.0.0, which was released about two years ago. Alluxio 1.0.0 client will not work with Alluxio 1.4 or later. So in order to use Zeppelin with latest Alluxio, we need to increment the version.
This JIRA aims to bump the version of Alluxio from 1.0.0 to 1.7.1 (the latest release in March 2018)
What type of PR is it?
[Improvement]
What is the Jira issue?
ZEPPELIN-3373
How should this be tested?
Manual test:

Build Zeppelin with this patch
Launch Zeppelin Alluxio interpreter and test the interpreter.

Screenshots (if appropriate)
Screenshot
Questions:

Does the licenses files need update? n/a
Is there breaking changes for older versions? n/a
Does this needs documentation? docs needs to be updated

anyone to review or comment this PR?

@felixcheung hi I am just back from a trip and I will work on this now

ping

ping

@apc999 could you please update the client to 1.8.0 ?

ping?

Any plans to update to Alluxio Shell 2.0.0?

We are currently providing Alluxio 2.5 so I'll close this PR. Thank you for your interest.


Wrong units in some graphs for disk throughput on the ONTAP disk dashboard

Describe the bug
It seems the disk throughput and disk and tape drives throuhput is the same but they appears in different units in the Dashboard: ONTAP Disk. The first one it is in MB/s and the other in GB/s. I've checked the unit defined in every graph and it is the same. I am not sure if I am interpreting correctly the dashboard and both graphs are correct. I have uploaded an screenshot with the information that I try to explain here.
Additionally, it would be great to have the multi-value and All options selected in every variable in every dashboard.
Environment
Provide accurate information about the environment to help us reproduce the issue.

Harvest version: harvest version 22.08.0-1 (commit 93db10a) (build date 2022-08-19T09:09:07-0400) linux/amd64
OS: RHEL 8.4
Install method: rhel
ONTAP Version: 9.7 and 9.10

Additional context

ONTAP: Disk

Standard unit in every graph

Additionally, it would be great to have the multi-value and All options selected in every variable in every dashboard.

The next version of Harvest (or nightly) defaults to doing this for all dashboards when they're imported via bin/grafana import 👍

Hello @cgrinds
Thanks for the quick modifcation for those filter that we have in the dashboard which help us to find high load, problems or whatever.

@rahulguptajss Thanks for the fixed. I've downloaded and imported the dashboard again.

Verified with 22.11 build commit 982fda55
Grafana units match ONTAP counter units


Bad Performance on Visual Odometry Image Sequences?

Hi,
I am interested in generating a bunch of feature tracks across a number of frames from a visual odometry sequence, e.g., KITTI, EuRoC datasets. However, when I try it with the demo, the number of features are low and the length of the feature tracks are pretty small, e.g., 5-7.
In the paper, it says "Models tend to fail on real-world videos with panning". I am not fully understand what it means. Is that the reason why this method does not perform well on visual odometry sequences?
Thank you!

I haven't tried working with visual odometry sequences, but there's a couple of issues.  First, TAPIR tends to fail when there's large changes in scale, which are common in odometry sequences.  Second, there's some challenging surfaces in odometry sequences: roads have very little texture (and repretitive textures like road markints), and trees are porous.
Because of the 'uncertainty estimate', TAPIR tends to mark tracks as occluded if it's not certain of the location; you can use the occlusion estimate directly, but the tracks are likely to be wrong.
Another option is to try to increase the resolution; remember that TAPIR does its intialization at 256x256.  In the case of odometry sequences, points will typically remain in the same image quadrant where they started, so you might be able to improve performance by running TAPIR in a tiled fashion.
Otherwise, I think you'll just have to wait for fundamental TAP research to progress.

Thanks for the comments!
I have a couple of questions:

In what extent do you think resizing images is helpful in terms of estimating good feature tracks and efficiency (right now my running was quite slow, e.g. 20-30 mins for 50 frames with 512x512 resolution, even with GPU)
Do you think training the TAPIR on odometry sequences from scratch would resolve the issue?
Thanks again!

How many points are you tracking?  If things are set up properly, then a few dozen points should take seconds, even at 512x512 resolution.  I suspect you're mostly seeing JAX compilation time.
Training TAPIR on odometry sequences would certainly help.  Probably fine-tuning would be more efficient than training from scratch (and probably more effective if you don't have a lot of data), but either should help.  However, we haven't tried this.  Out of curiosity, which data do you plan to use?  We aren't aware of much odometry data with long-term tracks; what's available tends to rely on structure-from-motion, and it doesn't come with reliable occlusion estimates.

I have also found many of the described problems and false positives matching in these type of sequences.
I suppose that for an odometry like camera movement it would also require a strategy to auto allocate query points like:
https://chiaki530.github.io/projects/leapvo/

FYI, I suspect that BootsTAPIR may improve performance on odometry sequences, but I haven't tried it.  If not, fine-tuning on your data using the procedure described there may help even further.
Overall, however, this is an open research problem and not easy to address in a github issue, so I'm closing this.


Godot 4 branch is incompatible with the latest beta version (Beta 16)

res://tests/item_definitions_test.gd:3 - Parse Error: "Inventory" was not found in the current scope
Line 3:Annotation "@tool" must be at the top of the script, before "extends" and "class_name".

This happens with all scripts that contain @tool

Yeah, I just noticed. The Godot 4 branch is still not quite stable, and development was done using Godot Beta 10, where the issue is not present.
I'll have to update it to the latest beta and fix all potential errors.
Thanks for the heads-up!

A small update on this:
I switched to Godot 4.0 RC2 and fixed some of the above mentioned issues, but I unfortunately ran into an issue with RC2 that is yet to be fixed. There's a PR open since a few days ago, but I'm not sure if it will make it into the next Godot 4 version or when.

Should be fixed in https://github.com/peter-kish/gloot/commit/f39547be84ec20131571f41a167f42eac0eb5218.
The issue from RC2 has been fixed in RC3.


Ignore irrelevant platform-specific packages during resolution

Hi,
I've noticed that uv  still tries to resolve packages that are supposed to be irrelevant for the configured environment. I'm working on a server with a private registry where we don't have Darwin packages. When I try to install ipykernel, however, I see it still tries to resolve a Darwin-specific package, which then fails as it isn't available in our registry. Specifically, it's about appnope, which is configured as 'appnope>=0.1.2;platform_system=="Darwin"' in ipykernel' s pyproject.toml.(https://github.com/ipython/ipykernel/blob/8c4901d691b1f309da3b80eefad5af13d7418185/pyproject.toml#L32C6-L32C13)
I'm using uv 0.5.2 on RHEL.
[project]
name = "test-project"
version = "0.1.0"
description = "My test project"
readme = "README.md"

dependencies = [
    "ipykernel ; sys_platform == 'linux'"
]

[tool.uv]
environments = [
    "sys_platform == 'linux'"
]

$ uv lock -v 2>&1 | grep Darwin
DEBUG Solving split (python_full_version == '3.10'and platform_system == 'Darwin' and sys_platform == 'linux') ...
DEBUG Adding transitive dependency for ipykernel==x.x.x: appnope{platform_system == 'Darwin'}*
DEBUG Adding transitive dependency for ipykernel==x.x.x: appnope{platform_system == 'Darwin'}*

I think it might be related to https://github.com/astral-sh/uv/issues/9051#issuecomment-2470334438

You might want to add something like platform_system == "Linux" to environments? The system doesn't know that platform_system == 'Darwin' and sys_platform == 'linux' are mutually exclusive -- there's nothing in the spec that says they have to be, it's just true in practice.

Oh that's interesting and, though annoying, quite logical. Using platform_system indeed works and this then isn't a bug.

If you think it's worthwhile, I'd be willing to add a small note to your documentation about this, as it currently uses sys_platform exclusively. This would then not work if any of your dependencies, like ipykernel uses platform_system instead of sys_platform.


Copy-paste and add new sheet on error for generated files

Hello,
I've updated from 1.3.10 to 1.3.13 RTL but now the generated files makes error when trying to add new sheet or copy-paste datas.
The error is something like "This action doesn't work on multiple selection" (In french: cette action ne fonctionne pas sur plusieurs sélections.)
Trying to delete a sheet doesn't work without any error.
All works again if I Save and reopen the same file.
Generated files with old version work.

thx for bug report
fixed in 1.3.14


Error when initiating transaction

Multiple users reported this error upon initiating any action that requires a transaction.
useProposeDelegationChange.ts:46 UnconfiguredSignerError: No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.     at create-observable-from-subscription.ts:21:11     at l (transformData.js:63:40)     at Generator._invoke (transformData.js:294:22)     at Generator.next (transformData.js:119:21)     at 2.154995d2.chunk.js:2:872996     at new Promise (<anonymous>)     at sn (2.154995d2.chunk.js:2:872741)     at e.value (2.154995d2.chunk.js:2:873812)     at e.<anonymous> (contract-method-object-param.ts:15:32)     at l (transformData.js:63:40)

Fixed with the last merge.


Merge branch 'release7x' into tt/80/merging-7x-into-release

@bot-gradle test and merge

I've triggered a build for you.


The parameter 'order[0,5]' in cupyx.scipy.ndimage.affine_transform respectively represent？

Description
The parameter ‘order[0,5]’ in Cupyx.Scipy.Ndimage.affine_transform is only introduced 0 means nearest neighbor, 1 means linear interpolation. What do the rest of the numbers mean?
Idea or request for content
What do the rest of the numbers mean?
2:
3:
4:
5:

From the docs docs:
https://docs.cupy.dev/en/stable/reference/generated/cupyx.scipy.ndimage.affine_transform.html
orderint, optional
The order of the spline interpolation, default is 3. The order has to be in the range 0-5.

I want to know what these numbers represent. And the corresponding relation of in the opencv

INTER_NEAREST - a nearest-neighbor Interpolation
INTER_LINEAR - a Bilinear Interpolation (Used by default)
Inter_area-resampling using Pixel area relation. It may be a preferred method for image decimation, As it gives moire '-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
INTER_CUBIC - A Bicubic Interpolation over 4x4 Pixel Neighborhood
INTER_LANCZOS4 - A Lanczos Interpolation over 8x8 Pixel Neighborhood

There are no corresponding OpenCV values for this, it is just the order of the spline used for the interpolation.
Please read about splines if you are not familiar with them.
Check this SO answer that will give you some context.
https://stackoverflow.com/a/63643155/12353384


enhancement strict second level granularity for timeout between (0,1)

Proposed changes
Treat timeout between (0,1)s as 1s, or coordinator may throw an exception.

run buildall

run buildall

run buildall


Neckrogatherer's can't find containers

Describe the bug
Necrogatherers can't find containers, I get an console error stating the issue. Log and cfg attached, .cfg renamed to .txt  . Removed Steam identifiers from log.
To Reproduce (if applicable)
I add 1 necktail in to the pylon, neck starts to gather but moment later I get console error and neck stays in one place and doesn't empty it's cargo to nearest chest. I tried whitelisting blackmetalchest with no difference.
I have 100+ mods installed and hard to pinpoint where the issue may be. I have ItemStacks by mtnewton modifying stacksize in chests 10 times more. So 50 is 500 etc. Just a thought that it might be the case. Can't change it back to normal as I would lose tons of materials.
Expected behavior (if applicable)
Thought they would fill chests
Screenshots (if applicable)
[If applicable, add screenshots to help explain your problem.]
(https://ibb.co/GHF3JTf)
Desktop
If you can, please complete the following information:
Win10
mod version 3.2.0
latest game version

OS: [e.g. Linux, Windows, OS X]
Mod version
Game version
com.chebgonaz.ChebsNecromancy.txt
LogOutput.log

Hi Pete,
Log
Examining your log (trimming out the big error stack trace stuff), the source of your problems is this:

[Info   :ChebsNecromancy] Read updated config values
[Error  :ChebsNecromancy] Please check your config entries for spelling and format!
[Info   :ChebsNecromancy] Read updated config values
[Error  :ChebsNecromancy] There was an issue loading your com.chebgonaz.ChebsNecromancy.cfg:
[Error  :ChebsNecromancy] Please check your config entries for spelling and format!

So looks like your config file is somehow problematic.
Config
Let's take a look:
## The containers that are sorted. Please use a comma-delimited list of prefab names. [Synced with Server]
# Setting type: String
# Default value: piece_chest_wood,piece_chest_blackmetal
ContainerWhitelist = piece_chest_wood

You accidently put the piece_chest_blackmetal on the commented line. It should go on the value eg. ContainerWhitelist = piece_chest_wood,piece_chest_blackmetal
Aside of that though: there is nothing wrong with this config file and it cannot be the cause of the errors in the log. Is there another one coming from the server?
Conclusion
I think a config from the server has problems and is causing everything to go wrong

Other problems unrelated to Cheb's Necromancy
Error in ProperPortals
[Error  : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
ProperPortals.ProperPortalsPlugin.UpdateActivationRange (TeleportWorld portal) (at <83a0eb5567964047a1828ab6bd5eb7f1>:0)
ProperPortals.ProperPortalsPlugin+TeleportWorld_Patches.Awake_Postfix (TeleportWorld __instance) (at <83a0eb5567964047a1828ab6bd5eb7f1>:0)
(wrapper dynamic-method) TeleportWorld.DMD<TeleportWorld::Awake>(TeleportWorld)
UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)
ZNetScene:CreateObject(ZDO)
ZNetScene:CreateObjectsSorted(List`1, Int32, Int32&)
ZNetScene:CreateObjects(List`1, List`1)
ZNetScene:DMD<ZNetScene::CreateDestroyObjects>(ZNetScene)
ZNetScene:Update()

No worries @Pete100x . I'm glad you solved the issue. Have fun & feel free to reach out again if you run into problems.


Use a dev branch

Great to see all this progress on the pyshgp package. I strongly recommend using a separate development branch for developing the module, and dedicate the master branch to the latest release on pip. I got thrown off for a bit because I was installing pyshgp via pip but referring to examples on the latest dev version on GitHub.

Great suggestion. I will do this from now on.
These kinds of repository best-practices are things that pyshgp is in desperate need of. This is the first project I have maintained that has the potential to be used by others, so I need all the help I can get! If you come across more things like this, please feel free to open more issues!
Also, be aware that I struggled to get pyshgp on pip. I was under the impression that all my attempts had failed and it was not possible to get pyshgp from pip yet. If there is something there, it is out of date (as you noticed). This is on the to-do list right after I finish up a fair amount of refactoring on the gp modules.

pyshGP is indeed on pip: https://pypi.python.org/pypi/pyshgp
You can log in there to remove it if you prefer.
You can look at the TPOT repo for other examples of good practices for OSS on GitHub. Some random tips:

Add a license and a LICENSE file in your repo ASAP! I recommend the MIT license unless other dependencies in the software require a more restrictive license.

Write unit tests and use a service like TravisCI for continuous integration

Use a service like landscape.io to continuously check your code quality and how it confirms to PEP8

Write a contributor's guide to help potential contributors know how to properly contribute to the project

License added in LICENSE.md
There are way more unit tests now. Coverage is tracked using Codacy.
Code style and other things also tracked by Codacy. It is not setup to comment on every PR.
Contributor guide has been added to the ReadTheDocs here.

Thank you for these awesome suggestions! I think the repo is in a much better state now and from here on out I will be sticking much more strictly to these best practices.
I removed pyshgp from pip and will add it back once the Beta 0.1 milestone is reached.
I looked around some other repos, including TPOT, sklearn, DEAP and others. It looks to me like projects either:

Use a dev branch where master is what is on pypi and dev branch is where new PRs go into. I suppose it would be up to the maintainers when to merge dev into master and create a new release.
Or use master as the bleeding edge branch, and a locked branch is created every time a new release is cut. The branch has the version's name (ie. v0.1) or something similar.

I am curious to hear your thoughts on these two options, or if you have any other options.

The feature-branch patter has been working well for now.
Once pyshgp makes its way (back) to pip I would like to take the following pattern:

A "pre" version branch will be created (ie. "v0.3-pre")
Feature branches (including on forks) will be used to add individual features. Once complete, these branches will be merged into the pre-version branch via a PR.
Once the pre-version branch contains all features desired in the next release, the pre-version branch will be merged into master and a locked version branch will be created. (ie. "v0.3").

I have documented this workflow in the contributing guide and I am going to close this issue.


Issue #41: Removed unneeded uses of 'this' in HoughTransformation

Issue #41.

Hi Frida, unfortunately I will not be able to review these PRs this week. I
will probably get to it this weekend.
On Mon, Jan 9, 2017, 12:59 FridaTveit<EMAIL_ADDRESS>wrote:

Issue #41 https://github.com/oskopek/javaanpr/issues/41.
You can view, comment on, or merge this pull request online at:
https://github.com/oskopek/javaanpr/pull/63
Commit Summary

Issue #41: Removed unneeded uses of 'this' in HoughTransformation

File Changes

M
src/main/java/net/sf/javaanpr/imageanalysis/HoughTransformation.java
https://github.com/oskopek/javaanpr/pull/63/files#diff-0 (76)

Patch Links:

https://github.com/oskopek/javaanpr/pull/63.patch
https://github.com/oskopek/javaanpr/pull/63.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/oskopek/javaanpr/pull/63, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABulBEWeNi7J74KrEjK0B2rl4trPFgKiks5rQiEygaJpZM4LeL8K
.

Coverage remained the same at 14.463% when pulling 1189a1239c8f7fce34435bdea556694e9ac8294a on FridaTveit:RemoveUnneededThisinHoughTransformation into fde1d42ae2522c899e1883ef0e803392e1aa4fd6 on oskopek:master.

No problem :)

Merging now, I'll apply the changes myself.


Bug: minicpmv-convert-image-encoder-to-gguf.py does not work on 4-bit models

What happened?
Failed to load a 4-bit model with
python3 ./examples/minicpmv/minicpmv-convert-image-encoder-to-gguf.py --model ../Vision-8B-MiniCPM-2_5-Uncensored-and-Detailed-4bit/ --minicpmv-projector ../Vision-8B-MiniCPM-2_5-Uncensored-and-Detailed-4bit/minicpmv.projector --output-dir ../Vision-8B-MiniCPM-2_5-Uncensored-and-Detailed-4bit/ --image-mean 0.5 0.5 0.5 --image-std 0.5 0.5 0.5

It errors out with mismatched dims. See the logs below.
Name and Version
Commit 6366d62d6b16b4376d976399cf402eb40829ebb1
What operating system are you seeing the problem on?
Linux
Relevant log output
Traceback (most recent call last):
  File "/home/moe/llama.cpp/./examples/minicpmv/minicpmv-convert-image-encoder-to-gguf.py", line 156, in <module>
    model.load_state_dict(torch.load(os.path.join(dir_model, "minicpmv.clip")))
  File "/home/moe/.local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 2189, in load_state_dict
    raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for Idefics2VisionTransformer:
	size mismatch for encoder.layers.0.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.0.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.0.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.0.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.0.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.1.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.1.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.1.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.1.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.1.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.2.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.2.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.2.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.2.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.2.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.3.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.3.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.3.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.3.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.3.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.4.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.4.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.4.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.4.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.4.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.5.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.5.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.5.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.5.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.5.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.6.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.6.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.6.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.6.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.6.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.7.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.7.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.7.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.7.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.7.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.8.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.8.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.8.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.8.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.8.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.9.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.9.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.9.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.9.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.9.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.10.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.10.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.10.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.10.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.10.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.11.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.11.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.11.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.11.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.11.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.12.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.12.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.12.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.12.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.12.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.13.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.13.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.13.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.13.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.13.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.14.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.14.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.14.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.14.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.14.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.15.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.15.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.15.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.15.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.15.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.16.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.16.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.16.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.16.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.16.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.17.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.17.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.17.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.17.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.17.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.18.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.18.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.18.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.18.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.18.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.19.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.19.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.19.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.19.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.19.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.20.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.20.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.20.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.20.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.20.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.21.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.21.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.21.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.21.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.21.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.22.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.22.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.22.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.22.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.22.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.23.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.23.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.23.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.23.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.23.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.24.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.24.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.24.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.24.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.24.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.25.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.25.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.25.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.25.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.25.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).
	size mismatch for encoder.layers.26.self_attn.k_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.26.self_attn.v_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.26.self_attn.q_proj.weight: copying a param with shape torch.Size([663552, 1]) from checkpoint, the shape in current model is torch.Size([1152, 1152]).
	size mismatch for encoder.layers.26.mlp.fc1.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([4304, 1152]).
	size mismatch for encoder.layers.26.mlp.fc2.weight: copying a param with shape torch.Size([2479104, 1]) from checkpoint, the shape in current model is torch.Size([1152, 4304]).

@all
Hi, I don't always pay attention to the issue area in this fork code repo.

If this issue still needs to be answered, please raise an issue in the main repo with "llamacpp" label. I will respond very quickly.
If this issue no longer needs to be answered, I will close it this week.


0.1.0 release!

Almost there! Ready for review.

[x] Complete coverage on https://github.com/dwsupplee/gcloud-php/blob/release-0.1.0/src/Storage/Connection/Rest.php#L204
[x] Update docs script
[ ] Rename Gcloud.php based on this conversation. Any thoughts on what we could change this to?
[x] Finish https://github.com/dwsupplee/gcloud-php/blob/release-0.1.0/tests/GcloudTest.php
[x] Fix test failing on travis

Just some various thoughts. Feel free to respond if they make sense, otherwise ignore :)

Any plans to document the structure of the code base or some details on how the pieces work? I don't think this is absolutely necessary, although things like service-v1.json & the builder aren't completely clear on how they work
I noticed some methods have @see links to the upstream API resource docs and others don't
It might be a good idea to explain more in the docs what a resumable upload is, or at a minimum link out to the Resumable upload guide
Some convenience methods around ACLs would be nice, e.g. bucket.makePublic() and object.makePrivate() etc.
Silly formatting note: some docblock markup seems to indent 4 spaces on a new line and others don't
Silly formatting note again: some code uses ' . $concat . ' style and others "$concat" style
CONGRATULATIONS!!! :tada: :balloon: :cake: :fork_and_knife:

Good working getting up to speed on the gcloud-* conventions, Storage API, and API best practices so quickly and... singularly! Even though I can't fully understand how this code will all work together (as a non-PHP dev), I can clearly see the reflection of all of that hard work between the lines.

This is looking great!  I'll dig in here in a bit to check out the code.  Until then - I have a small ask :)  Can you start chunking up your commits so they're small and task focused?  It's a little difficult to review this much code, and it's usually nicer to spot where individual things were added. It also keeps a feedback loop flowing a bit more quickly.
Thanks!

@stephenplusplus
Thanks so much for the feedback and taking the time to review!

I think this is a great idea. Anything we can do to add clarity to what's going on behind the scenes is important. As we move forward I will write up some more thorough documentation for these structures.
Thanks for catching this. I'll comb through and make sure we always link out when appropriate.
Great call.
I would love to add more functionality like this, although I see it happening as part of future releases.
5/6. D'oh! I'll make sure I normalize things like this.
Thanks!! :dancers:

@JustinBeckwith You've got it!

I've been spending some time pondering about a different naming convention for Gcloud.php and I keep coming back to wanting to keep it Gcloud. The name sounds friendlier to me than something like Api or ServiceBuilder and just seems to fit well as an entry point into the set of libraries.
Some other viewpoints on this would be really helpful. :)
/cc @jgeewax @stephenplusplus @tmatsuo @JustinBeckwith @bshaffer

This is probably best to discuss with some demo code... What does the code look like with the different names we're talking about?
For example, this looks pretty nice to me...
use Google\Cloud\Storage;

$storage = new Storage\Client(
    'keyFilePath' => '/path/to/key/file.json',
    'projectId' => 'myProject'
);

$bucket = $storage->bucket('myBucket');

If we want to do something higher level (ie, you want to set the key and project to be shared across lots of clients):
use Google\Cloud;

// I don't know if this is even OK to do...?

$cloud = new Cloud\Client(
    'keyFilePath' => '/path/to/key/file.json',
    'projectId' => 'myProject'
);

$storage = $cloud.storage();

What we have built right now closely matches the second example, with the additional option to override the 'global' configuration passed into the class's constructor for each service.
I'm torn on calling the class Client because it's not really executing any commands against the API, rather it's just building other clients to be passed back to the user. That's why I keep thinking the Gcloud term seems so appropriate. From what I've seen in PHP a class of this nature would be given a very descriptive Java-esque name like ServiceBuilder or something more friendly that represents the project as a whole. Maybe I'm just overthinking things, though, it doesn't seem like there is any hard definition for what a 'Client' should be.

Can you show some code that you would want it to look like... ? Why not revamp the second one...?
$cloud = new Google\Cloud( ... );
$storage = $cloud.storage();

?

It looks like this currently and this is also what I'm proposing we keep:
use Google\Cloud\Gcloud;

$gcloud = new Gcloud([
    'projectId' => 'wowGreatProject',
    'keyFilePath' => '/path/to/key.json'
]);

$storage = $gcloud->storage();

// or
$glcoud = new Gcloud();

$storage = $gcloud->storage([
    'projectId' => 'wowGreatProject',
    'keyFilePath' => '/path/to/key.json'
]);

I understand that we want to chop out the term Gcloud though, so if this doesn't make sense for us I'm just trying to think what other class names would be appropriate.

I like the look of both of @jgeewax's examples. I like "Client" being unbound to any google terminology, so that a user can alias it with whatever term feels natural in their project.
Is this a weird combination of terms for the examples:?
use Google\Cloud;

$gcloud = new Cloud\Client(...);
$storage = $gcloud->storage(...);

With gcloud-node, these are the common non-standard naming patterns I see in userland code:
var google = require('gcloud');
// or
var gcloud = require('gcloud');
var google = gcloud({ projectId: '...' });

var gcs = google.storage(); // `gcs` instead of `storage`

Yea, I'm with @stephenplusplus 's second example... I'm fine with using gcloud when the library is called gcloud and installed as gcloud... If not, it seems weird to do Google\Cloud\Gcloud -- feels like we should pick one...

Yes, let's pick! :8ball:

Yea, I'd like to vote for Google\Cloud and friends over GCloud.

I'm all for using Google\Cloud. My concern is over the term Client, in my experience a Client has a very specific purpose and what this class is really doing is building out other clients.

The other option is to say that you don't have a top-level thing, and instead only instantiate a service-specific client. This is how gcloud-java and gcloud-python work. Node and Ruby both have the "top-level" aspect, but I wouldn't say it's a requirement...

Ah, okay - I assumed that was something we wanted. I can run with that.

Haha -- that's something to debate! :) Do PHP folks want to create a top-level and then go from there (like Node / Ruby) ? Or do they not mind following the Python-style pattern ?

Are we ditching the top-level object only because we can't think of a good name for it? It was stressed as very important for the Node project, and it's pretty widely used. It's really nice to not have to write out your project ID and auth config each time you want to access a service. I agree it's not necessary, but this seems like a :\ reason to remove support for it, especially if you've already implemented it.

I agree. Can we just put it on the "Cloud" object?
// use Google\Cloud; <-- don't need this anymore?

$gcloud = new Google\Cloud(...);
$storage = $gcloud->storage(...);

I don't mind us using gcloud as a variable name, but it seems weird to call an object that.

Woah, woah! It's not being ditched! :)
This just makes the decision on what to call the top-level convenience class that builds out clients for us easier. Currently, things are built out with the Gcloud class being the easiest point of entry to using a service. Given that, I didn't want to name it something like ServiceBuilder which just sounds bland in my opinion :).
If I change up the constructor for the StorageClient we can get something like this:
use Google\Cloud\StorageClient;
use Google\Cloud\ServiceBuilder;

$storage = new StorageClient([
    'projectId' => 'myProject'
]);

// or use our magical ServiceBuilder which allows you to share configs between clients easily!
$serviceBuilder = new ServiceBuilder([
    'projectId' => 'myProject'
]);

$storage = $serviceBuilder->storage();

That's just the namespace, there isn't actually a Cloud object.
I could just rename Gcloud to Cloud and we would have
use Google\Cloud\Cloud;

$cloud = new Cloud($config);
$cloud->storage();

Is it possible to move up a level? And have the Cloud piece act as the ServiceBuilder ?

Can we chat over in https://gitter.im/GoogleCloudPlatform/gcloud-php for a second ?

Sure thing!

Sorry I missed the chat. Can you post a final example of what we ended up with (instantiating the global class and then the Storage class individually?)

No worries! We are moving forward with this:
use Google\Cloud\Storage\StorageClient;
use Google\Cloud\ServiceBuilder;

$storage = new StorageClient([
    'projectId' => 'myProject'
]);

// or use our magical ServiceBuilder which allows you to share configs between clients easily!
$serviceBuilder = new ServiceBuilder([
    'projectId' => 'myProject'
]);

$storage = $serviceBuilder->storage();

@tmatsuo I simplified the retry logic a bit if you wouldn't mind taking another look :)

@dwsupplee The backoff logic looks good now :)
BTW, as @JustinBeckwith said, it is great if you could make PRs smaller.

@tmatsuo You can definitely expect that moving forward! Thanks again for taking the time to review everything. :)

Just a heads up that as long as this looks good to everyone I will be merging in later tonight in order to release to the packagist.

I haven't reviewed everything yet.

Ok, sounds good. I can hold off for as long as needed until you finish.

Alright, I think I have reviewed everything and it looks good except for some comments.
Excellent work :+1:

Thanks @tmatsuo! :facepunch:
I'm addressing the comments right now. Can't thank you enough for your eyes on this one.


add more record, and field types

Please review them, and let me know what you think.
This pull request contains the latest EPICS record and missing field types.
If you are OK, could you push the latest one to vscode extension repo?
Best,
@jeonghanlee

Hi @jeonghanlee,
Thanks for your new contribution, I assigned this PR to @vnadot as usual and hope he will get some time soon to test your code and release an update :)
Best!