text:
proposal: net/tspsock: filter/interceptor - concept with default implementation for proxyprotocol (v1/v2)

Proposal Details
Abstract
Introduce a filter / interceptor that will be called in the TCPConn Read function, that can be configured on the TCPListener.
The TCPConn should be the same as today, so no default filter should be apply.
Background
Whenever we are using an underlying TCP connection, the implementations like http break when a TCP Package contains a ProxyProtocol V1 or V2 header.
The problem in the http component is how the TCP package is processed.
The important part here is, that http should not have to care about the TCP Package itself, it should only care about the http package.
To solve problems like that, we should give the users more flexibility on how a TCP Package is processed.
To provide that flexibility, we should introduce a filter or interceptor to the TCPConn.
Proposal
The proposal is to add a filter or interceptor to the TCPListener that is used in the TCPConnection itself and allows that every package that is received can be "filtered".
The filter must be called before the TCPConn is doing the syscall receiving the TCP package on which the filter or interceptor should be applied.
The filter should be able to modify / change the TCP Package before it is returned to the caller.
The interface that is provided can also be used to implement something like a callback where for example the ProxyProtocol V1 or V2 header can be processed.
To have something that is working out of the box for an http server, for example, we should introduce an implementation that drops the ProxyProtocol header if a user is configuring the server with the filter.
Compatibility
The introduction of the filter / interceptor should not break any existing code. The new introduced filter / interceptor is optional.
When a filter / interceptor is required, it can be configured on the TCPListener.
Implementation
The implementation / example is not finished but should show the idea behind the proposal.
//Example http server
mux := http.NewServeMux()
mux.HandleFunc("/", root)
ls := &net.ListenConfg{
    PackageFilter: ne.ProxyProtocolDropFilter,
}
server := &http.Serve{Addr: ":80", Handler: mux, ListenConfig: ls}
server.ListenAndServe()

//package net

// TCPFilter type definition
type TCPFilter func(co conn, s int) ([]byte, int, error)

//Add rhe Read(b []byte) (n int, err error) to the TCPConn
func (c *TCPConn) Read(b []byte) (int, error) {
    if c.filter != nil {
        r, l, err := c.filter(c.conn, len(b))
        if err != nil {
            return l, err
        }

        copy(b, r)
        return l, err
    }
    return c.conn.Read(b)
}

// Example filter implementation
var (
    PPV1 = []byte{'\x50', '\x52', '\x4F', '\x58', '\x59'}
    PPV2 = []byte{'\x0D', '\x0A', '\x0D', '\x0A', '\x00', '\x0D', '\x0A', '\x51', '\x55', '\x49', '\x54', '\x0A'}
)

// Filter implementation
func ProxyProtocolDropFilter(co conn, s int) ([]byte, int, error) {
    r := make([]byte, s)
    l, err := co.Read(r)
    if err != nil {
    	return []byte{}, l, err
    }

    // Check if the package is smaller than 5 bytes, we can't check the header version.
    if s < 5 {
        return r, l, nil
    }

    if bytes.Equal(r[:5], PPV1) {
        i := bytes.Index(r[:108], []byte("\r\n"))
        return r[i+2:], l, nil
    }

    //Add more checks (just an example)
    if bytes.Equal(r[:13], PPV2) {
        fmt.Print("handle ppv2")
    }

	return r, l, err
}

A third party proxy protocol package could just wrap a net.Listener and expose itself as a net.Listener for net/http.Server.Serve.
Which is what already existing packages do: https://pkg.go.dev/github.com/blacktear23/go-proxyprotocol#NewListener
Why should we add a more complex and less flexible filtering system into net?

Hi,
I know that kind of implementations and know that writing a "custom" net.Listener can handle that.
The only problem that I see is, that "default" (for example http server) implementation will fail when you receive  a tcp package that includes a proxy protocol.
So my idea was to add something that is "issue" is handled by default / configuration.

Thanks, but in the Go standard library filters are implemented by wrapping readers.  If HTTP needs a way to filter its reader, then we should add a way to customize the reader that it uses.  We should add something inside TCPConn.  I'm going to close this proposal.  Please comment if you disagree.

authors: HappyTobi ianlancetaylor seankhliao


text:
modules: "updates to go.mod needed" when I test 1.20 code using 1.21+

Go version
go version go1.22.0 linux/amd64
Output of go env in your module/workspace:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='local'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.22.0'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='0'
GOMOD='/app/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build405843297=/tmp/go-build -gno-record-gcc-switches'

What did you do?
I have 1.20 code (as expressed in go.mod).
Tried testing inside golang:1.22-alpine Container:
FROM golang:1.22-alpine AS build

ENV CGO_ENABLED=0
WORKDIR /app

COPY go.* ./

RUN --mount=type=cache,target=/root/go/pkg/mod go mod download

COPY . ./

RUN --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=cache,target=/root/go/pkg/mod \
    go build -o /service cmd/*.go

RUN --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=cache,target=/root/go/pkg/mod \
    go test ./... -v

Same happens with golang:1.21-alpine.
What did you see happen?
go build works fine. go test fails with:

go: updates to go.mod needed; to update it:

Aside from the very obscured reason why it needs to be updated - it only happens if I choose 1.21 or 1.22 Golang.
I was under the impression that 1.20 code should build/test with newer versions.
What did you expect to see?
It should build/test using 1.21/1.22 without any change to go.mod.

this is working as intended, starting 1.21 go started enforcing minimum go versions like any other dependency.
Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions

Don't you think it would be better to state that compat. change then in the error message?
Why not then in this case replace go: updates to go.mod needed; to update it: with e.g.:
go: Version in go.mod (1.20) does not match Version of executable (1.21).
Upgrade go.mod to version 1.21.
Exact Go Version matching is enforced from Go 1.21 onward.

source: gharchive/issue

repo: golang/go

license_type: permissive

license_source: github-api


text:
text/template/parse: Unexpected Behaviour of ActionNode.Position in text/template - Potential Bug?

Go version
go version go1.21.4 darwin/arm64
Output of go env in your module/workspace:
GO111MODULE='on'
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/xxx/Library/Caches/go-build'
GOENV='/Users/xxx/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/xxx/projects/gopath/pkg/mod'
GOOS='darwin'
GOPATH='/Users/xxx/projects/gopath'
GOROOT='/opt/homebrew/opt/go/libexec'
GOSUMDB='sum.golang.google.cn'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/opt/homebrew/opt/go/libexec/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21.4'
GCCGO='gccgo'
AR='ar'
CC='cc'
CXX='c++'
CGO_ENABLED='1'
GOMOD='/Users/xxx/projects/xxx/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/mt/w_9vxxsn0ssfxz46n8lbrykh0000gp/T/go-build2022525700=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?
https://go.dev/play/p/U8UabjbhJsN
// You can edit this code!
// Click here and start typing.
package main

import (
	"fmt"
	"reflect"
	"text/template"
)

func main() {
	temp := `{{.locale}}`
	tree, err := template.New("test").Parse(temp)
	if err != nil {
		panic(err)
	}

	node := tree.Root.Nodes[0]
	fmt.Println(reflect.TypeOf(node))
	// expect: {{.locale}} 0
	fmt.Println(node.String(), node.Position())
	// expect: {{.locale}}
	fmt.Println(temp[node.Position():])
}

What did you see happen?
I am currently developing a highlighter for text/template scripts. To accomplish this, I require an Abstract Syntax Tree (AST) for the provided template. During this process, I encountered an unexpected behaviour with the Position method of the ActionNode.
Contrary to my expectations, the Position of the ActionNode does not include the delimiter ('{{'). However, the String method does return the full {{.locale}}, inclusive of the delimiter. This discrepancy has prompted me to question whether there is a bug, or if I have misunderstood the purpose of the Position function in the Action interface.
According to the given documentation comment, Position() Pos should represent the 'byte position of the start of node in full original input string'. This, in my understanding, should include the delimiter.
Could you please clarify this discrepancy, or confirm if this is indeed a bug? Thank you for your time and assistance.
What did you expect to see?
temp := `{{.locale}}`
tree, err := template.New("test").Parse(temp)
if err != nil {
  panic(err)
}

node := tree.Root.Nodes[0]
fmt.Println(reflect.TypeOf(node))
// expect: {{.locale}} 0
fmt.Println(node.String(), node.Position())
// expect: {{.locale}}
fmt.Println(temp[node.Position():])

@robpike, @mvdan, can you give this a look?

The action starts inside the delimiter, so the position field is correct. The String method includes the delimiter for ease of use. So yes, they are inconsistent and perhaps should be consistent, but it's more likely to break things than improve them to try to change this. Plus, you'd need to decide what change to make.
I think it can stay as is.

As I said, the action starts inside the delimiter, that's why.

As I said, the action starts inside the delimiter, that's why.

Sorry I may not have made it clear, I mean if there should be a node wraps the action node but contains the delimiter and prefix such as "if" and "range".

It's impractical to change the parse tree given the compatibility promise. You'll just have to code around it, which shouldn't be too inconvenient.

It's impractical to change the parse tree given the compatibility promise. You'll just have to code around it, which shouldn't be too inconvenient.

Got it, thanks.

authors: dr2chase robpike shallowclouds


text:
import/path: net/http h2 issue? not sure. shouldnt crash. how to debug?

Go version
go 1.23
Output of go env in your module/workspace:
go env
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE='*'
GOMODCACHE='/root/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/root/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.0'
GODEBUG=''
GOTELEMETRY='local'
GOTELEMETRYDIR='/root/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD=
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2845012808=/tmp/go-build -gno-record-gcc-switches'

What did you do?
warded-Proto:[https]]
2024/09/06 15:43:20 Sending request to backend
panic: id (106) <= evictCount (117)
goroutine 9201 [running]:
vendor/golang.org/x/net/http2/hpack.(*headerFieldTable).idToIndex(0xc0000bca00, 0xc00055dcb0?)
/usr/local/go/src/vendor/golang.org/x/net/http2/hpack/tables.go:118 +0xbd
vendor/golang.org/x/net/http2/hpack.(*headerFieldTable).search(0xc0000bca00, {{0x148ff02, 0x6}, {0xc000112ea0, 0xc1}, 0x0})
/usr/local/go/src/vendor/golang.org/x/net/http2/hpack/tables.go:105 +0xe5
vendor/golang.org/x/net/http2/hpack.(*Encoder).searchTable(0xc0000bca00, {{0x148ff02, 0x6}, {0xc000112ea0, 0xc1}, 0x0})
/usr/local/go/src/vendor/golang.org/x/net/http2/hpack/encode.go:97 +0x85
vendor/golang.org/x/net/http2/hpack.(*Encoder).WriteField(0xc0000bca00, {{0x148ff02, 0x6}, {0xc000112ea0, 0xc1}, 0x0})
/usr/local/go/src/vendor/golang.org/x/net/http2/hpack/encode.go:62 +0x145
net/http.(*http2ClientConn).writeHeader(0xc000956b60?, {0x148ff02?, 0x1454060?}, {0xc000112ea0?, 0xc000a63650?})
/usr/local/go/src/net/http/h2_bundle.go:9331 +0x148
net/http.(*http2ClientConn).encodeHeaders.func3({0xc000956b60?, 0xc000a63650?}, {0xc000112ea0, 0xc1})
/usr/local/go/src/net/http/h2_bundle.go:9265 +0x71
net/http.(*http2ClientConn).encodeHeaders.func1(0xc000933bb8)
/usr/local/go/src/net/http/h2_bundle.go:9226 +0x627
net/http.(*http2ClientConn).encodeHeaders(0xc0002eed80, 0xc0003a8500, 0x0, {0x0, 0x0}, 0x0)
/usr/local/go/src/net/http/h2_bundle.go:9258 +0x58c
net/http.(*http2clientStream).encodeAndWriteHeaders(0xc00072e300, 0xc0003a8500)
/usr/local/go/src/net/http/h2_bundle.go:8721 +0x2e9
net/http.(*http2clientStream).writeRequest(0xc00072e300, 0xc0003a8500, 0x0)
/usr/local/go/src/net/http/h2_bundle.go:8617 +0x535
net/http.(*http2clientStream).doRequest(0xc00072e300, 0x1856ea0?, 0xc000867068?)
/usr/local/go/src/net/http/h2_bundle.go:8551 +0x56
created by net/http.(*http2ClientConn).roundTrip in goroutine 9199
/usr/local/go/src/net/http/h2_bundle.go:8456 +0x3d8
What did you see happen?
some crawler online crash it.
What did you expect to see?
at least an error msg but not crash

Related Issues and Documentation

x/net/http2: hpack.(*Encoder).WriteField panic errors #47882 (closed)
when use standard http client panic id (14) <= evictCount (14) #43048 (closed)
x/net/http2: standard http client panics listing an evictCount #43051 (closed)
net/http: http2 close request body and read it again #59426 (closed)
x/net/http2: panic: interface conversion: http.http2Frame is *http.http2UnknownFrame, not *http.http2HeadersFrame #31986
x/net/http2/h2c panic #67168 (closed)
net/http: (*http2pipe).closeWithError” Crashed #43965
x/net/http2: closeStream has panic #59601 (closed)
net/http: panic at Transport.roundTrip getConn #55127
net/http: http2 round tripper nil pointer dereference causes panic causing deadlock #65927 (closed)

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

CC @neild, @tombergan.

authors: dmitshur gabyhelp sprappcom


text:
Fix issue #41960

Fix issue #41960

@googlebot I signed it!

source: gharchive/pull-request


text:
Golint wants to elide type that can be inferred, but this breaks docs

I found a number of closed issues about golint wanting to elide types that couldn't actually be inferred, but I'd like to dispute that this warning is necessary; it can actually be harmful (eg. it's not just a matter of style). For example, consider the following API:
package foo

type Foo string

var (
    // Bar is some common, predeclared Foo.
    Bar Foo = Foo("one")

    // Baz is some other common Foo.
    Baz Foo = Foo("two")
)

If we godoc foo against this package, our common Foo vars are grouped under the Foo type. However, golint complains about the unnecessary type, but if we remove it to make golint happy, then the list of common Foos appears in a vars section at the top of the document which may be nowhere near Foo in a large package, and is very confusing.
Maybe golint could warn about mixed inferred types (probably only in lists where all the RHS types were the same) instead, so it would not warn on the above, but would warn on:
var (
    // Bar is some common, predeclared Foo.
    Bar Foo = Foo("one")

    // Baz is some other common Foo.
    Baz = Foo("two")
)

An experimental implementation of this idea can be found in 1426a3b4d43c2ff45dc5a1cc2f3d24c846c89c0f

Oops, made a duplicate somehow. Closing this as a duplicate of #429

repo: golang/lint

license_source: bigquery


text:
MarshalText incorrectly handles unknown bytes

The following program crashes with the following message:
package main

import (
	"bytes"
	"fmt"

	pb "github.com/dvyukov/go-fuzz/examples/protobuf/pb"
	"github.com/golang/protobuf/proto"
)

func main() {
	data := []byte("\n\x010")
	v := new(pb.M25)
	err := proto.Unmarshal(data, v)
	if err != nil {
		panic(err)
	}

	var buf bytes.Buffer
	err = proto.MarshalText(&buf, v)
	if err != nil {
		panic(err)
	}
	v2 := new(pb.M25)
	err = proto.UnmarshalText(buf.String(), v2)
	if err != nil {
		fmt.Printf("failed to UnmarshalText: %q\n", buf.Bytes())
		panic(err)
	}
}

failed to UnmarshalText: "/* 3 unknown bytes */\n1: \"0\"\n"
panic: line 1.0: unexpected byte 0x2f

MarshalText should not produce text that is unparsable by UnmarshalText.
Either MarshalText should write unknown bytes differently, or UnmarshalText accept the current output of MarshalText.
on commit 34a5f244f1c01cdfee8e60324258cfbb97a42aec

No, the text format is not an interchange format. There is no guarantee that MarshalText's output will be parseable by UnmarshalText, especially when it fails.

MarshalText does not fail in any way detectable by user.
Do you mean that the "unknown bytes" are not representable in text form?

There are quite a few ways that a proto struct might not be representable in text format; having unrecognised fields is one way, and that's what your example hit.

authors: dsymonds dvyukov

repo: golang/protobuf


text:
jsonpb: fix unmarshal tests to not compare using strings from proto.MarshalTextString

Current unmarshaling tests calls proto.MarshalTextString and compares the resulting string.  This is not a good comparison since MarshalTextString may not reflect the actual underlying data, e.g. nil vs empty slice.  It's better to just use proto.Equal.

Fyi.  I just realized that proto.Equal may not be the correct solution.  In the case of nil vs empty slice, proto.Equal will not detect the difference.  Anyways, we should still update the tests accordingly and not use MarshalTextString.

Closing this since jsonpb will be completely rewritten with its own set of tests.

authors: cybrcodr dsnet


text:
tour: some languages don't work

Context: https://go-tour-ita.appspot.com/
Error:
Go 1.9 is no longer available. Please refer to https://goo.gl/aESk5L for more information.

Yeah, we're tracking this in #1039. Closing here.

authors: ALTree Fefefo

repo: golang/tour


text:
tour: Pi should be capital

Context: https://tour.golang.org/basics/3
math.pi does not compile outside of the playground. Should be math.Pi for a consistent example

whoops! :)


text:
Error during make

During make, I am getting the following error. Can you help me resolve this.
CCLD     aarx-view
./.libs/libamino.so: undefined reference to `aa_rx_ik_opt_err_qlnpv'
collect2: error: ld returned 1 exit status
Makefile:2513: recipe for target 'aarx-view' failed
make[2]: *** [aarx-view] Error 1
make[2]: Leaving directory '/home/asus/TM-kit/amino'
Makefile:3755: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/asus/TM-kit/amino'
Makefile:1985: recipe for target 'all' failed
make: *** [all] Error 2

Try installing nlopt and re-configure.

I reproduced your error when NLopt is not installed.  We get enough of a performance improvement from this library that I think a strict dependency is appropriate.  I added a hard check at configure-time for NLopt in 57e828b4437cea410c197ddc250be5143378f015.
If installing NLopt does not fix your problem, please reopen.

Installing NLopt fixed it. Thanks!

repo: golems/amino


text:
Try updating dependencies

Just seeing what will break on CI :)

twitter-text latest version errors with ERROR: could not find idn library!

RedCloth > 4.2.9 fails on JRuby (no longer supported). Since this is just a development dependency, that's not such a big deal.

repo: gollum/gollum-lib

license: MIT


text:
05 [스프링 데이터 사용] 몽고DB에 명령어 보내기

add chapter05 branch
create 1st example of chapter 5

approved


text:
Can't run properly in Fitbit Versa (meson)

Hi Gondwanasoft,
I tried to use this app for my Fitbit Versa (meson). It was successfully installed by modifying the json package. However, whem it is launced on the watch, it displays nothing. Can you help me to solve this problem?

The changes required are much more significant than that: see here.
I am no longer developing Fitbit apps; if you have questions concerning converting to a different SDK, I recommend that you post here.

Thank you for your response.
Warm regards.
On Sat, 8 Jun 2024, 03:24 Peter McLennan, @.***> wrote:

The changes required are much more significant than that: see here
https://community.fitbit.com/t5/SDK-Development/Fitbit-Versa-2-development-issue/m-p/5385315/highlight/true#M19325
.
I am no longer developing Fitbit apps; if you have questions concerning
converting to a different SDK, I recommend that you post here
https://community.fitbit.com/t5/SDK-Development/bd-p/sdk.
—
Reply to this email directly, view it on GitHub
https://github.com/gondwanasoft/fitbit-accel-fetcher/issues/3#issuecomment-2155497477,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BIXCGSICS4JLKMDPGHQOKYDZGIJJNAVCNFSM6AAAAABI67MFQSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNJVGQ4TONBXG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

authors: gondwanasoft mysantoso

repo: gondwanasoft/fitbit-accel-fetcher


text:
Is this package for 微信公众号开发者模式 or 微信开放平台第三方平台 ？

请问这个package是为 微信公众号开发者模式 还是 微信开放平台第三方平台 接入服务的？
Sorry for the silly question, but I couldn't make sure of it from the information provided in the Readme file.
At first glance, it seems like is for 公众号开发者模式, because, as stated in README file, you can specify encoding_aes_key, which is only available in 公众号开发者模式.
But the code also provides Wechat.access_token call to fetch access token, which might be a 微信开放平台第三方平台 thing.
Please clarify, Thanks.
Best,
J

微信公众号开发者模式 https://mp.weixin.qq.com/

Okay, 谢啦。I'm looking for an Elixir lib for 微信开放平台第三方平台。
没找到。 倒是找到一个PHP的库，功能非常全。
看来要自己试着做了，或者选择用PHP开发。
谢谢啦
Best!

@JJPro 你说的这个库也是公众平台，不是开放平台

你确定？怎么看？

哦 简介里有

微信公众平台第三方

我把这句理解成开放平台第三方平台了
不好意思 打扰了

authors: JJPro goofansu


text:
Unable to login with new user

Hi,
Thanks for the great guide.
I am doing first time setup and I am stuck at the step where I am supposed to login on JupyterHub.
When I try to login with new user/pass, I get following error:
This page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE

Can someone please help with this issue? Thanks!

I figured what the problem was. There was a version difference in kubectl client and server. I downgraded client and executed following steps and then it worked.
minikube stop
minikube delete
minikube start --cpus 4 --memory 8096 --disk-size=40g --vm-driver virtualbox


text:
Support of 16KB page sizes

Android 15 will now offer support for 16KB page size. Then, all shared libraries shipped within Android apps must be recompiled to support 16KB page size. See documentation :
https://developer.android.com/guide/practices/page-sizes
https://source.android.com/docs/core/architecture/16kb-page-size/16kb
I've checked ELF alignment of shared libraries in my project, and result shows that libmediapipe_tasks_vision_jni.so is not aligned :
lib/arm64-v8a/libmediapipe_tasks_vision_jni.so: \e[31mUNALIGNED\e[0m (2**12)
This issue is to ask support for Android 16KB page size in mediapipe lib. Thanks

Hi @mimai-hen,
Could you please provide more details about your query regarding support for 16KB pages? We are having difficulties to understand it clearly.
Thank you!!

Hi,
I’ll try to explain. In my Android project I use mediapipe task vision com.google.mediapipe:tasks-vision:0.10.18 for face detection.
When I launch my application on an Android 15 (with 16KB page size) emulator, it crashes when I try using face detection feature :
13:05:37.591  A  Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x767d224a47f0 in tid 3371 (xxx.pro.debug), pid 3371 (frica.pro.debug)
13:05:38.007  A  pid: 3371, tid: 3371, name: frica.pro.debug  >>> xxx.pro.debug <<<
13:05:38.007  A        #00 pc 0000000000bc47f0  /data/app/~~L48Lg1SFS4Btj8M5vE4IXw==/xxx.pro.debug-yimG5q0h5w9HtxLEz7xbSw==/lib/arm64/libmediapipe_tasks_vision_jni.so (BuildId: bca8e7908753794146dd5fbd3c1ea403)
13:05:38.007  A        #01 pc 0000000000bbee84  /data/app/~~L48Lg1SFS4Btj8M5vE4IXw==/com.orange.money.africa.pro.debug-yimG5q0h5w9HtxLEz7xbSw==/lib/arm64/libmediapipe_tasks_vision_jni.so (BuildId: bca8e7908753794146dd5fbd3c1ea403)
When I launch my application on an Android 15 (with standard 4KB page size) face detection works fine, as well as previous android versions.
In order to make it work on Android 15 (with 16KB page size), some adaptations must be made to native shared libs (here libmediapipe_tasks_vision_jni.so)
Please read carefully android developers guidelines about 16KB memory page size support : https://developer.android.com/guide/practices/page-sizes?hl=en
I apologize if it’s not the right place to ask for this issue to be fixed (in that case, may be you can let me know where I should post this issue)
I hope it’s more clear. Kind regards,

This issue was fixed in tensorflow lite for arm64:
https://github.com/tensorflow/tensorflow/issues/69459
Maybe something similar can be done here.
It would also be nice to fix it for other processor architectures:
https://github.com/google-ai-edge/LiteRT/issues/43

authors: kuaashish mimai-hen v-hogood

repo: google-ai-edge/mediapipe


text:
Failed to retrieve TPU context.

I am working on inferencing on ARM and Coral accelerator using TFLite model with C++.
I am creating the Edge TPU Context as follows:
std::unique_ptrtflite::FlatBufferModel model;
model = tflite::FlatBufferModel::BuildFromFile(model_file.c_str());
if (!model) {
cerr << "Cannot read model from " << model_file << endl;
return 1;
}
const auto& available_tpus = edgetpu::EdgeTpuManager::GetSingleton()->EnumerateEdgeTpu();
cout << available_tpus.size() << endl;
cout << available_tpus[0].type << endl;
cout << available_tpus[0].path << endl;
auto edgetpu_context = edgetpu::EdgeTpuManager::GetSingleton()->NewEdgeTpuContext();
std::unique_ptrtflite::Interpreter interpreter;
tflite::ops::builtin::BuiltinOpResolver resolver;
resolver.AddCustom(edgetpu::kCustomOp, edgetpu::RegisterCustomOp());
if (tflite::InterpreterBuilder(*model, resolver)(&interpreter) != kTfLiteOk)
cout << "Failed to build interpreter" << endl;
interpreter->SetExternalContext(kTfLiteEdgeTpuContext,edgetpu_context.get());
interpreter->SetNumThreads(1);
if (interpreter->AllocateTensors() != kTfLiteOk)
cout << "Allocate tensors failed" << endl;
I am getting the following output after executing the application.
1   // available_tpus.size()
Apex (PCIe) // type of available tpu
/dev/apex_0 // path of the available tpu
ERROR: Failed to retrieve TPU context.
ERROR: Node number 1 (edgetpu-custom-op) failed to prepare.
Allocate tensors failed
Segmentation fault
What could be the issue?

Hi @MeenalNarkhede are you using edgetpu runtime 14?
can you share the output of below command:
python3 -c 'from pycoral.utils.edgetpu import get_runtime_version; print(get_runtime_version())'

I am not running the inference with libcoral API. I am working with TFLite interpreter with libedgetpu. So I have the libedgetpu.so specific to aarch64 architecture with me.

Okay, can you please share your tflite model? Have you build libedgetpu with the latest code?

Can you also share some command in C++ to check the edgetpu runtime version?

Unfortunately, I don't have C++ command to check the edgetpu runtime version. May be this script is helpful to crosscheck.

can you please try to compile your model with -m flag with 13 version and the run the inference. And also please try with one of the model form here.
! edgetpu_compiler -s -m 13 ssdlite_mobiledet_dog_vs_cat.tflite

I tried the following:

Used the SSD MobileNetv1 EdgeTPU tflite file directly from Coral website.
Compiled the SSD MobileNetv1 CPU tflite file from Coral website using:
! edgetpu_compiler -s -m 13 ssd_mobilenet_v1_coco_quant_postprocess.tflite
But still in both cases I am facing the same error.

I have a few questions:

Is there any major change in the PCIe driver version 1.0 and 1.1?
Also getting kernel NULL pointer dereference in boot logs. I am attaching the snap of boot log for your reference.

@MeenalNarkhede Can you paste the output of:

modinfo gasket
modinfo apex
lspci -vvv

Output of lspci -vvv:
01:00.0 System peripheral: Device 1ac1:089a (prog-if ff)
Subsystem: Device 1ac1:089a
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 54
Region 0: Memory at 600100000 (64-bit, prefetchable) [size=16K]
Region 2: [virtual] Memory at 600000000 (64-bit, prefetchable) [size=1M]
Capabilities: [80] Express (v2) Endpoint, MSI 00
DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0.000W
DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta:	CorrErr+ NonFatalErr- FatalErr+ UnsupReq- AuxPwr- TransPend-
LnkCap:	Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta:	Speed 2.5GT/s (downgraded), Width x1 (ok)
TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [d0] MSI-X: Enable- Count=128 Masked-
Vector table: BAR=2 offset=00046800
PBA: BAR=2 offset=00046068
Capabilities: [e0] MSI: Enable- Count=1/32 Maskable- 64bit+
Address: 0000000000000000  Data: 0000
Capabilities: [f8] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100 v1] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
Capabilities: [108 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [110 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=0ns
L1SubCtl2: T_PwrOn=10us
Capabilities: [200 v2] Advanced Error Reporting
UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP+ ECRC- UnsupReq- ACSViol-
UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta:	RxErr+ BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap:	First Error Pointer: 12, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 34000000 00000020 00000000 00000000
Kernel driver in use: apex
Kernel modules: apex
I cannot see the output of modinfo since that command is not found as I am working in PetaLinux.

can you please try this pycoral demo it would be easy to identify the issue.

Output of dmesg | grep -i apex
[    8.258034] apex: module is from the staging directory, the quality is unknown, you have been warned.
[    8.273237] apex 0000:01:00.0: can't enable device: BAR 0 [mem 0x00000000-0x00003fff 64bit pref] not claimed
[    8.291928] apex 0000:01:00.0: BAR 2: assigned [mem 0x600000000-0x6000fffff 64bit pref]
[    8.299991] apex 0000:01:00.0: BAR 0: assigned [mem 0x600100000-0x600103fff 64bit pref]
[    8.308037] apex 0000:01:00.0: enabling device (0000 -> 0002)
[    8.376284] Modules linked in: apex(C+) mali(O) gasket(C)
[    8.502645]  apex_pci_probe+0x40/0x230 [apex]
[    8.545723]  apex_init+0x44/0x1000 [apex]
Output of dmesg | grep -i gasket
[    8.227891] gasket: module is from the staging directory, the quality is unknown, you have been warned.
[    8.376284] Modules linked in: apex(C+) mali(O) gasket(C)
[    8.402791] lr : gasket_sysfs_create_entries+0xb8/0x118 [gasket]
[    8.497428]  gasket_pci_add_device+0x1e4/0x518 [gasket]

@MeenalNarkhede Disabling secure boot has worked for some users. Can you try to disable the secure boot on your machine ?

@manoj7410 The secure boot mode is already disabled.
I tried to run the classify image demo as per the link shared by @hjonnala.
Following are some observations:

When the apex is not detected in the lspci -vvv command, the following error is seen.

When the apex is detected in the lspci -vvv command, the system hangs after running the classify image code.

I am using the libedgetpu.so available here: https://github.com/google-coral/pycoral/tree/master/libedgetpu_bin/direct/aarch64
Also in the boot logs I shared earlier, there is NULL pointer dereference seen in the boot logs. Any updates on that?

@MeenalNarkhede I haven't faced this NULL pointer error during boot. Does it also occur if the device is not connected to your machine? Which machine are you working with ?

One update on the earlier error:
Now the PCIe driver is getting detected. I can see apex in lspci -vvv. And the error after running the classify image example is as follows:

can you  install libedgetpu runtime and try the demo.

@MeenalNarkhede are you still having the issue?

authors: MeenalNarkhede hjonnala manoj7410

repo: google-coral/edgetpu


text:
Cannot inherit from ViewModelProvider.Factory interface

When I try to inherit the ViewModelProvider.Factory interface, while following the Step 6 in Introduction to Room and Flow codelab, I get the following error:

Just solved the issue by using the following build.gradle files:
build.gradle (Project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = '1.5.20'
    ext {
        kotlin_version = "1.5.31"
        nav_version = '2.3.5'
        room_version = '2.4.1'
    }
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
        classpath 'com.android.tools.build:gradle:7.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle (app)
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'androidx.navigation.safeargs.kotlin'
}
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 31

    defaultConfig {
        applicationId "com.example.busschedule"
        minSdkVersion 19
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        viewBinding true
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'

    // Room library
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation "androidx.room:room-ktx:$room_version"
}
repositories {
    mavenCentral()
}


text:
Issues migrating from stripe_payment to flutter_stripe. "Unexpected Error, try again" without giving more details

Hello,
As indicated in the former discontinued "stripe_payment" plugin, I migrated my app to "flutter_stripe" + "pay". At the moment of writing on their last versions. Here my Pubspec.yaml:
  flutter_stripe: ^1.3.0
  pay: ^1.0.5

I have problems with Apple Pay. Here is what I do.
First I initialize both plugging when running main():
    _payClient = Pay.withAssets([
      'apple_pay_payment_profile.json',
      'google_pay_payment_profile.json'
    ]);
    Stripe.publishableKey = _stripeClavePublica;
    Stripe.merchantIdentifier = ConfigSave.merchantAppleStore;
    Stripe.urlScheme = 'xxxx';
    await Stripe.instance.applySettings();

apple_pay_payment_profile.json looks something like:
{
  "provider": "apple_pay",
  "data": {
    "merchantIdentifier": "myMerchant",
    "displayName": "MyCompanyName",
    "merchantCapabilities": ["3DS", "debit", "credit"],
    "supportedNetworks": ["amex", "visa", "discover", "masterCard"],
    "countryCode": "ES",
    "currencyCode": "EUR",
    "requiredBillingContactFields": ["emailAddress", "name", "phoneNumber", "postalAddress"],
    "requiredShippingContactFields": [],
    "shippingMethods": [
      {
        "amount": "0.00",
        "detail": "Available within an hour",
        "identifier": "in_store_pickup",
        "label": "In-Store Pickup"
      },
      {
        "amount": "4.99",
        "detail": "5-8 Business Days",
        "identifier": "flat_rate_shipping_id_2",
        "label": "UPS Ground"
      },
      {
        "amount": "29.99",
        "detail": "1-3 Business Days",
        "identifier": "flat_rate_shipping_id_1",
        "label": "FedEx Priority Mail"
      }
    ]
  }
}

And I invoke:
     var _paymentItems = [
        PaymentItem(
          label: 'Pagar a MyCompany Servicio X',
          amount: '200',
          status: PaymentItemStatus.final_price,
        )
      ];

      final paymentResult = await _payClient.showPaymentSelector(
        provider: Platform.isIOS?PayProvider.apple_pay:PayProvider.google_pay,
        paymentItems: _paymentItems,
      );

This seems to work, both in a simulator and a device, returning the following paymentResult:
PAYMENTRESULT: {shippingMethod: null, token: {"version":"EC_v1","data":"loooong key","header":{"ephemeralPublicKey":"someKey","publicKeyHash":"someKey","transactionId":"someID"}}, paymentMethod: {displayName: Visa 8180, type: 2, network: Visa}, billingContact: {name: The Customer, phoneNumber: null, emailAddress: null}, shippingContact: null}
    LOG ANALYTICS: ["event": "stripeios.token_creation", "apple_pay_enabled": 1, "product_usage": [], "publishable_key": "pk_test_51...", "additional_info": [], "apple_merchant_identifier": "unknown", "os_version": "14.5", "shipping_type": "shipping", "bindings_version": "21.7.0", "app_version": "1.0.4", "additional_payment_methods": "none", "token_type": "apple_pay", "device_type": "iPhone10,4", "ocr_type": "none", "analytics_ua": "analytics.stripeios-1.0", "required_billing_address_fields": "zip", "app_name": "save", "company_name": "save", "required_shipping_address_fields": "none", "ui_usage_level": "none"]

Then, when I try to get the token to pass it to my backend, I get a generic exception. Doesn't give much detail:
flutter: StripeException(error: LocalizedErrorMessage(code: FailureCode.Failed, localizedMessage: There was an unexpected error -- try again in a few seconds, message: There was an unexpected error -- try again in a few seconds, stripeErrorCode: null, declineCode: null, type: null))
      flutter: #0      ResultParser.parse (package:stripe_platform_interface/src/result_parser.dart:15:7)
      #1      MethodChannelStripe.createApplePayToken (package:stripe_platform_interface/src/method_channel_stripe.dart:279:10)
      <asynchronous suspension>
      #2      Stripe.createApplePayToken (package:flutter_stripe/src/stripe.dart:130:25)
      <asynchronous suspension>
      #3      ServicioPago.pagaNativo (package:save/serviciosProveedores/servicioPago.dart:336:21)
      <asynchronous suspension>
      #4      _SelectorPagoState.pagar (package:save/pages/selectorPago.dart:119:11)
      <asynchronous suspension>

The only thing that I see strange is "apple_merchant_identifier": "unknown", where in the json property file, it is set up.
Does anyone has an idea of what is happening?
Many thanks in advance

Your payment configuration looks okay to me, assuming you have substituted some of the secret values in your comment.
I'd suggest to create/reference this issue in the Flutter plugin for Stripe.
CC'ing @jamesblasco who is involved in its development.

Thank you. I'll create it there. Wasn't sure since the Pay plugin is returning "unknown" where I would expect to see my merchant identifier.

repo: google-pay/flutter-plugin


text:
zero-shot for IsNext and NotNext function

I'm interested in BERT's pre-trained 'IsNext' and 'NotNext' functionality. How could I, without doing any fine-tuning, get Is/Not Next property from the Large model? I thought I would try out 'extract_features.py' from the bert repository, but in the 'jsonl' file there are clearly too many entries.
I also tried the 'run_classifier.py' file, but I believe this requires training. I'm looking to use BERT in an almost 'zero-shot' mode.
EDIT:
I also looked at the run_pretraining.py file. This is what I changed (just one line...):

def model_fn_builder(bert_config, init_checkpoint, learning_rate,
                     num_train_steps, num_warmup_steps, use_tpu,
                     use_one_hot_embeddings):
  """Returns `model_fn` closure for TPUEstimator."""

  def model_fn(features, labels, mode, params):  # pylint: disable=unused-argument
    """The `model_fn` for TPUEstimator."""

    tf.logging.info("*** Features ***")
    for name in sorted(features.keys()):
      tf.logging.info("  name = %s, shape = %s" % (name, features[name].shape))

    input_ids = features["input_ids"]
    input_mask = features["input_mask"]
    segment_ids = features["segment_ids"]
    masked_lm_positions = features["masked_lm_positions"]
    masked_lm_ids = features["masked_lm_ids"]
    masked_lm_weights = features["masked_lm_weights"]
    next_sentence_labels = features["next_sentence_labels"]

    is_training = (mode == tf.estimator.ModeKeys.TRAIN)

    model = modeling.BertModel(
        config=bert_config,
        is_training=is_training,
        input_ids=input_ids,
        input_mask=input_mask,
        token_type_ids=segment_ids,
        use_one_hot_embeddings=use_one_hot_embeddings)

    (masked_lm_loss,
     masked_lm_example_loss, masked_lm_log_probs) = get_masked_lm_output(
         bert_config, model.get_sequence_output(), model.get_embedding_table(),
         masked_lm_positions, masked_lm_ids, masked_lm_weights)

    (next_sentence_loss, next_sentence_example_loss,
     next_sentence_log_probs) = get_next_sentence_output(
         bert_config, model.get_pooled_output(), next_sentence_labels)

    total_loss = masked_lm_loss + next_sentence_loss

    tvars = tf.trainable_variables()

    initialized_variable_names = {}
    scaffold_fn = None
    if init_checkpoint:
      (assignment_map, initialized_variable_names
      ) = modeling.get_assignment_map_from_checkpoint(tvars, init_checkpoint)
      if use_tpu:

        def tpu_scaffold():
          tf.train.init_from_checkpoint(init_checkpoint, assignment_map)
          return tf.train.Scaffold()

        scaffold_fn = tpu_scaffold
      else:
        tf.train.init_from_checkpoint(init_checkpoint, assignment_map)

    tf.logging.info("**** Trainable Variables ****")
    for var in tvars:
      init_string = ""
      if var.name in initialized_variable_names:
        init_string = ", *INIT_FROM_CKPT*"
      tf.logging.info("  name = %s, shape = %s%s", var.name, var.shape,
                      init_string)

    output_spec = None
    if mode == tf.estimator.ModeKeys.TRAIN:
      train_op = optimization.create_optimizer(
          total_loss, learning_rate, num_train_steps, num_warmup_steps, use_tpu)

      output_spec = tf.contrib.tpu.TPUEstimatorSpec(
          mode=mode,
          loss=total_loss,
          train_op=train_op,
          scaffold_fn=scaffold_fn)
    elif mode == tf.estimator.ModeKeys.EVAL:

      def metric_fn(masked_lm_example_loss, masked_lm_log_probs, masked_lm_ids,
                    masked_lm_weights, next_sentence_example_loss,
                    next_sentence_log_probs, next_sentence_labels):
        """Computes the loss and accuracy of the model."""
        masked_lm_log_probs = tf.reshape(masked_lm_log_probs,
                                         [-1, masked_lm_log_probs.shape[-1]])
        masked_lm_predictions = tf.argmax(
            masked_lm_log_probs, axis=-1, output_type=tf.int32)
        masked_lm_example_loss = tf.reshape(masked_lm_example_loss, [-1])
        masked_lm_ids = tf.reshape(masked_lm_ids, [-1])
        masked_lm_weights = tf.reshape(masked_lm_weights, [-1])
        masked_lm_accuracy = tf.metrics.accuracy(
            labels=masked_lm_ids,
            predictions=masked_lm_predictions,
            weights=masked_lm_weights)
        masked_lm_mean_loss = tf.metrics.mean(
            values=masked_lm_example_loss, weights=masked_lm_weights)

        next_sentence_log_probs = tf.reshape(
            next_sentence_log_probs, [-1, next_sentence_log_probs.shape[-1]])
        next_sentence_predictions = tf.argmax(
            next_sentence_log_probs, axis=-1, output_type=tf.int32)
        next_sentence_labels = tf.reshape(next_sentence_labels, [-1])
        next_sentence_accuracy = tf.metrics.accuracy(
            labels=next_sentence_labels, predictions=next_sentence_predictions)
        next_sentence_mean_loss = tf.metrics.mean(
            values=next_sentence_example_loss)

        return {
            "masked_lm_accuracy": masked_lm_accuracy,
            "masked_lm_loss": masked_lm_mean_loss,
            "next_sentence_accuracy": next_sentence_accuracy,
            "next_sentence_loss": next_sentence_mean_loss,
            "next_sentence_log_probs": next_sentence_log_probs, ## <-- add this line here
        }

      eval_metrics = (metric_fn, [
          masked_lm_example_loss, masked_lm_log_probs, masked_lm_ids,
          masked_lm_weights, next_sentence_example_loss,
          next_sentence_log_probs, next_sentence_labels
      ])
      output_spec = tf.contrib.tpu.TPUEstimatorSpec(
          mode=mode,
          loss=total_loss,
          eval_metrics=eval_metrics,
          scaffold_fn=scaffold_fn)
    else:
      raise ValueError("Only TRAIN and EVAL modes are supported: %s" % (mode))

    return output_spec

  return model_fn

I get an error like this:
TypeError: Values of eval_metric_ops must be (metric_value, update_op) tuples, given: Tensor("Reshape_7:0", shape=(1, 2), dtype=float32) for key: next_sentence_log_probs
I thought that would do it. How do I get that Tensor to show up as values??? Thanks

I think I can use huggingface's Pytorch repo 'Transformers'. https://huggingface.co/transformers/model_doc/bert.html#transformers.BertForNextSentencePrediction
I'll close this. Thanks

repo: google-research/bert


text:
streaming_dvc model checkpoint

Can you release the streaming_dvc model checkpoint ?

Hello @ariu9 , did you solve the issue in any way?

repo: google-research/scenic


text:
Deduplicating "dumb" mode crashes

Sorry if I'm missing something from the documentation, but I couldn't figure this out. I'm trying to compare how much having the feedback from the instrumentation in AFL helps in finding unique crashes compared to dumb mode. Using AFL with instrumentation on a given program, it is reporting 114 unique crashes. However, running the same program with the -n flag, it reports 557,000 unique crashes (I'm assuming this is because it can't compare execution paths between crashes).
I'm wondering if there is a flag or tool (or some small changes I could make to the AFL source) to run the crashing input identified by AFL in dumb mode, but this time with instrumentation so I can find how many unique crashes were identified without instrumentation.
Thanks for any help.

One idea is to put all crash inputs into a single corpus directory and run the instrumented binary over it.

repo: google/AFL


text:
Fix for Missing Swift 3.2 and Swift 4.0 Support Issue #580

Created Swift 3.2 and Swift 4.0 Folders to ensure building Earlgrey for Projects using Swift 3.2 and Swift 4.0

I signed it!

I signed it!

If they are the same, can we make a change here:
https://github.com/google/EarlGrey/blob/master/gem/lib/earlgrey/configure_earlgrey.rb#L381
so when the swift file is not found, use the backup 3.0 version?

Yes they are the same. We can use the Swift 3.0 Version. I can implement this tomorrow.

@bootstraponline Is it time for us to deprecate he 3.0 and 2.3 files for these? At least the 2.3 one?

@bootstraponline Is it time for us to deprecate he 3.0 and 2.3 files for these? At least the 2.3 one?

I think so. We should probably only support the latest stable Xcode release. Swift is changing too rapidly to support all the versions forever.

@tirodkar @wuhao5 Could we merge this if it's good to go?

I think the decision is to not add another swift file but have gem to handle it.

Hello, I thought we were waiting on the additions to the gem here. Is that to be done in a separate PR?

closing in favor of #591

authors: bootstraponline khandpur mettieDie tirodkar wuhao5

repo: google/EarlGrey


text:
documentation

Welcome! Please use this template for reporting documentation issues on https://developers.google.com/web/.
For questions about Chrome DevTools, checkout the
google-chrome-devtools tag on StackOverflow.
For questions about Chrome, check the google-chrome
tag. If you think you've found a Chrome bug, check out our
feedback page for more details on how to file it.
Page Affected: https://developers.google.com/web/TODO
What needs to be done?
Please provide description of what's needs to be done here. Please be sure to include the link to the original page
and any supporting links/data.

[ ] Appropriate type-something label has been added.
[ ] Appropriate section-something label has been added.

?

repo: google/WebFundamentals


text:
FMP documentation isn't a spec.

Noted by Harald Kirschner from Mozilla.

[X] I have run npm test locally and all tests pass.
[X] I have added the appropriate type-something label.
[X] I've staged the site and manually verified that my content displays correctly.

CC: @kaycebasques

Whoops!
There were 1 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/tools/lighthouse/audits/first-meaningful-paint.md#L14 - Line must be at most 100 characters

I just meant spec in the general sense but I get why this would be problematic given the specific use of the word among browser vendors.

Thank you @petele for submitting the PR.

:tada: This has been pushed live to https://developers.google.com/web/

authors: WebFundBot kaycebasques petele


text:
June 2012 updates

What's changed, or what was fixed?

ilink updates
add wf_blink_components tags

Fixes: #issue
Target Live Date: YYYY-MM-DD

[ ] This has been reviewed and approved by (NAME)
[x] I have run npm test locally and all tests pass.
[ ] I have added the appropriate type-something label.
[x] I've staged the site and manually verified that my content displays correctly.

CC: @petele

:tada: This has been pushed live to https://developers.google.com/web/

authors: WebFundBot rottina


text:
[devtools] fix #8105

Fixes: #8105

[x] This has been reviewed and approved by @kaycebasques
[ ] I have run npm test locally and all tests pass.
[x] I have added the appropriate type-something label.
[ ] I've staged the site and manually verified that my content displays correctly.

CC: @petele

Whoops!
There were 6 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/updates/2019/09/devtools.md#L150 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L153 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L157 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L83 - Common typo found: 'the the' Should it be 'the'?
src/content/en/updates/2019/09/devtools.md#L115 - Line must be at most 100 characters
src/content/en/updates/2019/09/devtools.md#L178 - Line must be at most 100 characters

Whoops!
There were 15 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/updates/2019/07/devtools.md#L131 - Common typo found: 'javascript' Should it be 'JavaScript'?
src/content/en/updates/2019/07/devtools.md#L24 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/07/devtools.md#L24 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/07/devtools.md#L92 - Common typo found: 'homescreen' Should it be 'home screen'? See: https://developers.google.com/style/word-list#home-screen
src/content/en/updates/2019/07/devtools.md#L5 - WF Tag 'wf_updated_on' must be within the last 7 days.
src/content/en/updates/2019/07/devtools.md#L46 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L78 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L156 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L157 - Line must be at most 100 characters
src/content/en/updates/2019/09/devtools.md#L150 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L153 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L157 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L83 - Common typo found: 'the the' Should it be 'the'?
src/content/en/updates/2019/09/devtools.md#L115 - Line must be at most 100 characters
src/content/en/updates/2019/09/devtools.md#L178 - Line must be at most 100 characters

Whoops!
There were 14 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/updates/2019/07/devtools.md#L131 - Common typo found: 'javascript' Should it be 'JavaScript'?
src/content/en/updates/2019/07/devtools.md#L24 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/07/devtools.md#L24 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/07/devtools.md#L92 - Common typo found: 'homescreen' Should it be 'home screen'? See: https://developers.google.com/style/word-list#home-screen
src/content/en/updates/2019/07/devtools.md#L46 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L78 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L156 - Line must be at most 100 characters
src/content/en/updates/2019/07/devtools.md#L157 - Line must be at most 100 characters
src/content/en/updates/2019/09/devtools.md#L150 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L153 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L157 - Common typo found: 'node' Should it be 'Node'?
src/content/en/updates/2019/09/devtools.md#L83 - Common typo found: 'the the' Should it be 'the'?
src/content/en/updates/2019/09/devtools.md#L115 - Line must be at most 100 characters
src/content/en/updates/2019/09/devtools.md#L178 - Line must be at most 100 characters

:tada: This has been pushed live to https://developers.google.com/web/

authors: WebFundBot kaycebasques


text:
A typo in one of the wiki pages?

In one of the wiki pages, Incrementally-Agerifying-legacy-code, there seems to be a typing mistake. In the sample code of Exposing synchronous operations as repositories, did you mean Repositories.repositoryWithInitialValue(Result<ResponseBlob>.absent()) rather than the expression        Repositories.repositoryWithInitialValue(Result.<ResponseBlob>absent()) ?

ClassName.<TypeParam>staticMethodName() is the right Java syntax :)

I sincerely apologize.

authors: maxtroy xavieryao

repo: google/agera


text:
Voicekit - a problem about bluetooth

Hello! I am a student who wants to develop some user interfaces using Bluetooth.
I installed several python modules to take advantage of Bluetooth.
-sudo apt-get install bluetooth libbluetooth-dev
-sudo pip install pybluez
-sudo apt-get install libboost-all-dev
-sudo pip install gattlib
However, some errors occurred when installing the above module.
Are there any precautions for using Bluetooth module?
I want to communicate Bluetooth between raspberry pie.
Is there a Bluetooth module already installed and usable?
Thank you!!

i signed it!

@o5duck I'm not sure you meant to send a Pull Request here - this looks more like a support question.
Perhaps the users at the AIY Forums could help you with the bluetooth setup?

repo: google/aiyprojects-raspbian


text:
Fix docs on pool's default minCount

Regression in docs, see #303

Oops, looks like this commit was another victim of https://github.com/gingerik/closure-library/commit/889d16ae55c74aa0144d0be29b61243a9a49dcf7. Thanks for the update.

authors: gingerik joeltine

repo: google/closure-library


text:
Annotation Matchers don't respect inheritance

Original issue created by rburny@google.com on 2013-09-11 at 10:33 PM

Annotations Matcher doesn't respect inherited annotations (i.e. when type annotation is marked with @Inherited, and class doesn't overwrite it, it should be inherited from superclass. It is not inherited from interfaces and only applicable to type annotations).

Should be fixed now.

repo: google/error-prone


text:
Fix Avro conversion of R4 resources with contained reources.

This is a regression in R4 only and was discovered when we enabled Bunsen's avro-conversion unit-tests for R4; in particular AvroConverterTestR4.testContainedResources.

The root cause of this issue does not seem to be related to contained resources but the way slices are handled; and it seems the bug is not specific to R4 but has been present for STU3 too. It seems the current code does not properly recognize slice definitions on non-extension fields. So for example in this sliced telecom example it will end up adding multiple telecom fields in Patient leading to an exception. The reason it was tirgerred now (and was mis-attributed to R4) is that the MedicationRequest resource of US-Core, has a slice definition on category, trigering the bug.

repo: google/fhir-data-pipes


text:
Faced with a problem "HandleAllocator arena is full, using slower system heap"

Everything worked great until I loaded a relatively heavy model. The
"E/Filament: in allocateHandleSlow:82
reason: HandleAllocator arena is full, using slower system heap. Please increase the appropriate constant (e.g. FILAMENT_OPENGL_HANDLE_ARENA_SIZE_IN_MB).
E/Filament:
A/libc: Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x7776435000 in tid 13032 (ugmentedreality), pid 13032 (ugmentedreality)"
error occurs with the loadGlb() function. What to do in such a situation? I'm adding the package to build.gradle. Using 3D Viewer on android.

Лог - log.txt
Xiaomi 11T ( Android 12, Miui 13.0.2)
Модель - room.zip

Ah, the problem is actually this message:
E/Filament: Panic
    in flush:88
    reason: Backend CommandStream overflow. Commands are corrupted and unrecoverable.
    Please increase FILAMENT_MIN_COMMAND_BUFFERS_SIZE_IN_MB (currently 1 MiB).
    Space used at this time: 4761104 bytes

The model is just too big. We have a pending change that will allow you to configure this buffer at runtime -- however, I would strongly recommend to fix your model. These are mobile devices with limited resources, you shouldn't use models with so many draw calls. You need to use a library that optimizes your model geometry.

I did a test incrementing FILAMENT_MIN_COMMAND_BUFFERS_SIZE_IN_MB from 1 to 3, and FILAMENT_RENDER_PASS_SIZE_IN_MB from 3 to 4 as well as FILAMENT_PER_FRAME_COMMANDS_SIZE_IN_MB from 2 to 3, and the model was displayed. It has over 600 draw calls.

Thank you for the answer, which library can you recommend for optimizing the glb model. It is desirable that it was under Android

authors: pixelflinger xarlammm

repo: google/filament


text:
Fix clearing Rendertarget multiple times

This fixes a bug Renderer clearing a render target multiple times when the first time and back again.
Usually the default RenderTarget is unintentionally cleared/discarded in the current behavior.

Renderer renders a view without custom RenderTarget having full-screen viewport,
Renderer renders a view with custom RenderTarget
And Renderer renders an another view without custom RenderTarget having different viewport from 1)
You may see junk or empty pixels in outside of the viewport of the view 3), depending on ClearOptions and the backend.

This fix make Renderer put RenderTargets into a set and check them to be cleared only for the first time, instead of comparing the previous RenderTarget to the current RenderTarget.

@googlebot I fixed it..


text:
Fix type for user-facing precision arguments.

The type for lax precision arguments was too narrow, this
adjusts the type to cover all possible cases.

It's a copy of the private type definition used internally by JAX (and the set of arguments that jax._src.lax.lax.canonicalize_precision handles)

It's a copy of the private type definition used internally by JAX

Ah yes I see it here. Isn't it less error prone to just import their definition?

Codecov Report

Merging #1960 (9ad75f7) into main (c14c6cf) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1960      +/-   ##
==========================================
+ Coverage   71.17%   71.18%   +0.01%
==========================================
  Files          58       58
  Lines        4965     4967       +2
==========================================
+ Hits         3534     3536       +2
  Misses       1431     1431

Impacted Files
Coverage Δ

flax/linen/attention.py
95.76% <100.00%> (+0.03%)
:arrow_up:

flax/linen/linear.py
99.14% <100.00%> (+<0.01%)
:arrow_up:

flax/linen/recurrent.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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

It's not a public definition, so I don't want to import it unless they're down to export it.

authors: codecov-commenter levskaya marcvanzee

repo: google/flax


text:
Support preview Update Branch API

GitHub Developer API announcement:
https://developer.github.com/changes/2019-05-29-update-branch-api/
This would be a great PR for any new contributor to this repo or a new Go developer.
All contributions are greatly appreciated!
Feel free to volunteer for any issue and the issue can be assigned to you so that others don't attempt to duplicate the work.
Please check out our CONTRIBUTING.md guide to get started.
Thank you!

@gmlewis I'd like to work on this issue

Thank you, @waseem18!
It is yours.

repo: google/go-github


text:
No JWT documentation

I see that for doing service account authentication, JWT tokens are needed. However, the documentation doesn't mention anything about how to use the JWT API.

Fixed https://github.com/google/google-api-nodejs-client#using-jwt-service-tokens

authors: DullReferenceException ryanseys

repo: google/google-api-nodejs-client


text:
Executing modifyCloudToDeviceConfig within Cloud Function

In my cloud function, I want to send configurations programatically towards the Device. However, calling modifyCloudToDeviceConfig fails because it still wants to ask for authentication.
{ Error: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.  }

Is there a way to allow API call within the same account hosting the Cloud Functions without the need to authenticate (because Im also sending the configurations towards my device) ?
Or maybe an alternative?
Code snippets from my Cloud Function:
const google = require('googleapis');
...
const getClient = () => {
  return new Promise((resolve, reject) => {
    const discoveryUrl = `${DISCOVERY_API}?version=${API_VERSION}`;
    google.discoverAPI(discoveryUrl, {}, (err, client) => {
      if (err) {
        console.log('Error during API discovery', err);
        return undefined;
      }
      resolve(client);
    });
  });
}
...

exports.SendToMyMachine = function (request, response) {
  console.log(`SYDNEY>>>> ${request}`);
  console.log(`request.resource.project_id ${request.resource.project_id}`)
  console.log(`request.resource.region ${request.resource.region}`)
  getClient().then(client => {
    console.log(client);
    const projectId = 'XXXX';
    const cloudRegion = 'XXX';
    const registryId = 'XXX';
    const deviceId = 'XXX'
    const parentName = `projects/${projectId}/locations/${cloudRegion}`;
    const registryName = `${parentName}/registries/${registryId}`;
    const deviceName = `${registryName}/deviceid/${deviceId}/`;
    const body = { versionToUpdate: 23, binaryData: "YmF0bWFuMTIzNA==" };

    const pushRequest = {
      name: `${registryName}/devices/${deviceId}`,
      resource: body
    };

    client.projects.locations.registries.devices.modifyCloudToDeviceConfig(pushRequest, (err, data) => {
      if (err) {
        console.log('Error configuring :', deviceId);
        console.log('Error >>>>> :', err);
        response.status(200).send('Error');
      } else {
        console.log('Configured device:', deviceId);
        console.log(data);
        response.status(200).send(JSON.stringify(data));
      }
    });

  })

Thanks!

I had the same issue. This works for me: https://github.com/nqbit/mongoose_esp32_gcp/blob/master/gcp_function/index.js

Thanks @nqbit . After i tried, seems like google.cloudiot('v1') function is not in the googleapis.
This is the failure when deploying it
Deployment failure:
Function load error: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: TypeError: google.cloudiot is not a function
    at Object.<anonymous> (/user_code/index.js:6:23)

Closing this.
After reading @nqbit 's code, i applied the same approach using the google.auth.getApplicationDefault with the APIs returned from Discovery URL and not the google.cloudit('v1') and it worked as expected.
For those interested, heres what i did https://github.com/xtrycatchx/google-cloud-experiments/blob/master/cloud-function-experiment/index.js

authors: nqbit xtrycatchx


text:
Missing personFields parameter

Hello,
I am trying to execute this:
        $client = new \Google_Client();
        $client->setAccessToken($acess_token);
        $people_service = new \Google_Service_People($client);
        $optParams = array(
            'pageSize' => 10,
            'personFields'=>'emailAddresses'
        );
        $results = $people_service->people_connections->listPeopleConnections('people/me', $optParams);

And i got the error:
Google_Exception in Resource.php line 147:
(list) unknown parameter: 'personFields'
Adding the parameter personFields in the Google_Service People class constructor has resolved the problem.

I signed it!
2017-08-29 22:46 GMT-03:00 googlebot notifications@github.com:

Thanks for your pull request. It looks like this may be your first
contribution to a Google open source project. Before we can look at your
pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/
https://cla.developers.google.com/ to sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll
verify. Thanks.

If you've already signed a CLA, it's possible we don't have your
GitHub username or you're using a different email address. Check your
existing CLA data https://cla.developers.google.com/clas and verify
that your email is set on your git commits
https://help.github.com/articles/setting-your-email-in-git/.
If your company signed a CLA, they designated a Point of Contact who
decides which employees are authorized to participate. You may need to
contact the Point of Contact for your company and ask to be added to the
group of authorized contributors. If you don't know who your Point of
Contact is, direct the project maintainer to go/cla#troubleshoot.
In order to pass this check, please resolve this problem and have
the pull request author add another comment and the bot will run again.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/google/google-api-php-client-services/pull/81#issuecomment-325853903,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AczWPd8ePBcW_WSfNGva7q0E65VuZCfRks5sdL76gaJpZM4PGwtu
.

I solved it.

I solved it.
2017-08-29 22:46 GMT-03:00 googlebot notifications@github.com:

Thanks for your pull request. It looks like this may be your first
contribution to a Google open source project. Before we can look at your
pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/
https://cla.developers.google.com/ to sign.
Once you've signed, please reply here (e.g. I signed it!) and we'll
verify. Thanks.

If you've already signed a CLA, it's possible we don't have your
GitHub username or you're using a different email address. Check your
existing CLA data https://cla.developers.google.com/clas and verify
that your email is set on your git commits
https://help.github.com/articles/setting-your-email-in-git/.
If your company signed a CLA, they designated a Point of Contact who
decides which employees are authorized to participate. You may need to
contact the Point of Contact for your company and ask to be added to the
group of authorized contributors. If you don't know who your Point of
Contact is, direct the project maintainer to go/cla#troubleshoot.
In order to pass this check, please resolve this problem and have
the pull request author add another comment and the bot will run again.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/google/google-api-php-client-services/pull/81#issuecomment-325853903,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AczWPd8ePBcW_WSfNGva7q0E65VuZCfRks5sdL76gaJpZM4PGwtu
.

I solved it!

I  solved it!

I solved it
2017-08-29 22:54 GMT-03:00 googlebot notifications@github.com:

We found a Contributor License Agreement for you (the sender of this pull
request), but were unable to find agreements for the commit author(s). If
you authored these, maybe you used a different email address in the git
commits than was used to sign the CLA (login here
https://cla.developers.google.com/ to double check)? If these were
authored by someone else, then they will need to sign a CLA as well, and
confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull
request author add another comment and the bot will run again.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/google/google-api-php-client-services/pull/81#issuecomment-325855068,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AczWPdCwqtpgGXutCTob7smMu5vhEh24ks5sdMDugaJpZM4PGwtu
.

I solved it!

I solved it!
2017-08-29 22:54 GMT-03:00 googlebot notifications@github.com:

We found a Contributor License Agreement for you (the sender of this pull
request), but were unable to find agreements for the commit author(s). If
you authored these, maybe you used a different email address in the git
commits than was used to sign the CLA (login here
https://cla.developers.google.com/ to double check)? If these were
authored by someone else, then they will need to sign a CLA as well, and
confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull
request author add another comment and the bot will run again.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/google/google-api-php-client-services/pull/81#issuecomment-325855068,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AczWPdCwqtpgGXutCTob7smMu5vhEh24ks5sdMDugaJpZM4PGwtu
.

repo: google/google-api-php-client-services


text:
Adding expiration date to AppEngineCredentials.

The expiration information is passed in by the AppIdentityService. Pass along the expiration time for the App Engine Flexible Environment.  Not having this causes problems such as https://github.com/GoogleCloudPlatform/cloud-bigtable-client/issues/750 and https://github.com/GoogleCloudPlatform/cloud-bigtable-examples/issues/145.

This LGTM. @anthmgoogle, you fine with me merging it?

Yes, LGTM,

authors: anthmgoogle ejona86 sduskis

repo: google/google-auth-library-java


text:
An exception was caught and reported. Message: There is no started application

I am trying to bind an service instance which requires current application in Play framework. Following is the code sample
class ApplicationModule @Inject() extends AbstractModule {
  def configure() = {
    bind(classOf[ServiceGateway])
      .annotatedWith(Names.named("with_circuit_breaker"))
      .toInstance(new ServiceGateway with CircuitBreakerDecorator)
  }
}

import play.api.Play.current

class ServiceGateway{
  val url = current.configuration.underlying.getString("api.geocode.url")
  val apiKey = current.configuration.underlying.getString("api.geocode.api-key")

  def getData(address: Address) = {
    val request = WS.client.url(url).withQueryString(("address", address.toString), ("key", apiKey))
    request.get().map(_.json)
  }
}

trait CircuitBreakerDecorator extends ServiceGateway {
  val logger = LoggerFactory.getLogger(this.getClass)

  override def getData(address: Address) = {
    CustomCircuitBreaker.getCircuitBreaker(
      maxFailures         = 3,
      callTimeout         = 1.second,
      resetTimeout        = 10.second,
      onOpenCallback      = {logger.error("Service is temporarily down.")},
      onHalfOpenCallback  = {logger.error("Service will be called again to check availability.")},
      onCloseCallback     = {logger.error("Service is back up.")}
    ).withCircuitBreaker(super.getData(address))
  }
}

While doing so I am getting an error saying there is no started application in scope which is a bit weird. But if I hardcode configuration values the binder works perfectly fine. Am I missing some steps?  How can I feed the current Play application to the binder?

This is a Play Framework specific issue. Since binder cannot find a running application, it throws an binding error. This can be solved introducing laziness for those computation which requires a running application. Closing this issue.

repo: google/guice


text:
Questions about camera coordinate and poses

I really appreciate to your awesome work!!
I have some questions about the camera pose matrix in camera folder's json files.
I'm reimplementing your paper on pytorch based nerf code.
However, I have confused about camera coordinate in nerfies dataset.

In load_llff.py in nerf pytorch code, they load the camera poses from given poses_bounds.npy file and correct their correct rotation matrix like follow codes.(poses matrix format is (3,  5, frame_num)

However, I could not find any correction part on your code when you generate the poses of dataset after loading them from given camera information json files.
I guess you used different coordinate system compared to original nerf(using llff dataset)
Then if I want to use your dataset as llff format and ray function, should I correct poses matrix like above code?
If you don't mind, could you explain the camera coordinate axis format of COLMAP results, NeRF(llff), and Nerfies(HyperNerf)??

for dynamic scene dataset(called nvidia-dataset), there is no undistortion part for camera pose like follow part of your code.

I wonder the necessity of above part because nerfies dataset images seems to not be distorted.
and the dynamic scene dataset is pre-undistorted image?

Did you implement your code on NDC coordinate??
I wonder should I use the ndc_rays

I really hope your answer and appreciate to your great work again!!
Thank you.

Answered in https://github.com/google/nerfies/issues/39.
Thanks!

authors: dogyoonlee keunhong

repo: google/hypernerf


text:
Error with Tempcoding_main

'tempcoding_main' is not recognized as an internal or external command,
operable program or batch file.

Hello. How are you running the command?

Hello, Thank you for replying…this has been causing me much stress trying to get this to run.  I am running it literally word for word as per the build commands provided on the GitHub page on a Windows 10 environment. When I enter the command : tempcoding/tempcoding_main -problem=mnist -n_train=54000 -n_validation=6000 -n_test=10000  -batch_size=32 -clip_derivative=539.69973904211679 -decay_rate=0.18176949150701854 -fire_threshold=1.1673205005788956 -learning_rate=0.0010186407877494507 -learning_rate_pulses=0.09537534860701444 -n_hidden=340 -n_pulses=10 -nonpulse_weight_mean_multiplier=-0.2754188425913906 -penalty_no_spike=48.374830659132556 -pulse_weight_mean_multiplier=7.8391245503824578 -update_all_datapoints=true -use_adam=true -n_epochs=100 -mnist_data_path=C:\Users\alane\ihmehimmeli\data I get the response: 'tempcoding' is not recognized as an internal or external command,operable program or batch file. I have the directory named Tempcoding and I have the file tempcoding_main.vcxproj Have you gotten this to run?  If so, did you do anything different that the suggested build instructions. Thanks again for your reply.Andrew   From: Luca VersariSent: Friday, September 25, 2020 2:36 PMTo: google/ihmehimmeliCc: TheAwesomeAndy; AuthorSubject: Re: [google/ihmehimmeli] Error with Tempcoding_main (#4) Hello. How are you running the command?—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

The instructions we provided are for a Linux environment, we never run the code on Windows. Would it be possible for you to run this on a Linux machine?
I am not very familiar with Windows.

Thank you for the information.  Yes, I will try on Linux and let you know – thank you for contacting me -Andrew From: Luca VersariSent: Friday, October 2, 2020 3:11 PMTo: google/ihmehimmeliCc: TheAwesomeAndy; AuthorSubject: Re: [google/ihmehimmeli] Error with Tempcoding_main (#4) The instructions we provided are for a Linux environment, we never run the code on Windows. Would it be possible for you to run this on a Linux machine?I am not very familiar with Windows.—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

repo: google/ihmehimmeli


text:
Update CMake min to 3.12

STRING JOIN was introduced in 3.12
TEST=builds with cmake 3.12 fails with 3.10.2 (stock in ubuntu)
Latest Ubuntu PPAs are here: https://apt.kitware.com/

FYI the code style check failure is spurious. The github CI has been failing for a while. I'm trying to figure out how to disable it until we can get it working properly so it doesn't make people think they broke something

authors: GMNGeoffrey powderluv

repo: google/iree


text:
Fixed the validations.py file, now works as expected

Closes: #1
Fixes #<issue_number_goes_here>
Fix regular expression to avoid numbers at the begining of a name.

It's a good idea to open an issue first for discussion.

[x] Tests pass
[x] Appropriate changes to README are included in PR

@googlebot I signed it!

repo: google/it-cert-automation-practice


text:
Closes: #1

Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[x] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


text:
Updated validations.py python script.

Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Closes: #1
Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


text:
Add WebAssembly Support

With WebAssembly getting a lot of traction is it possible to have 2 back ends. One for JS and another for WA.

Keep in mind that wasm still has no GC, so it might not be a terribly natural fit for a language like Java, which assumes GC. Also consider TeaVM's very experimental wasm support as another way to consider turning your Java into wasm.

We are not planning to have WebAssembly support until it is practical for our use cases; for that at minimal we need GC and better JavaScript interop story to be available in WebAsssembly.

(Keeping open track future requests)

I can work on this

We actually implemented experimental WASM support.
(This is not good for production use, it is currently useful for Chrome/V8 team could have real world data to iterate on WASM GC specification)

This has been in production quite a while and we put samples in place. All necessary W3C spec work is completed so closing this issue issue now.


text:
Static fields and reflection (java.lang.reflect.Field)

I have a code that uses reflection to get a list of fields including static. I can get a list of object (dynamic) fields but always receive an empty array when try to get a list of static fields
I've got several simple classes for illustration (SomeClass demoes static case and Class3 demoes dynamic case).
// Class3.java
enum Class3 {
    TYPE
;

    public final CharSequence VALUESET_BINDER = new CharSequence() {

        @Override
        public int length() {
            return 1;
        }

        @Override
        public char charAt(int index) {
            return 'c';
        }

        @Override
        public CharSequence subSequence(int start, int end) {
            return null;
        }

        @Override
        public String toString() {
            return "Non static stuff";
        }
    };
}

// SomeClass.java
public enum SomeClass {
;
    public static final CharSequence VALUESET_BINDER;

    static {
        VALUESET_BINDER = new CharSequence() {

            @Override
            public int length() {
                return 1;
            }

                @Override
            public char charAt(int index) {
                return 'c';
            }

            @Override
            public CharSequence subSequence(int start, int end) {
                return null;
            }

            @Override
            public String toString() {
                return "HypHest";
            }
        };
    }
}

// Class2.java
import java.lang.reflect.Field;

public class Class2 {

    public static void main(String [] args) {
        try {
            System.out.println("BEGIN");
            Class clazz = Class3.class;
            for (Field i : clazz.getFields()) {
                System.out.println("Field : " + i);
            }
            for (Field i : clazz.getDeclaredFields()) {
                System.out.println("Declared : " + i);
            }
            Field f = clazz.getField("VALUESET_BINDER");
            System.out.println(f.get(Class3.TYPE));
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        System.out.println("END");

        try {
            System.out.println("BEGIN");
            Class clazz = SomeClass.class;
            for (Field i : clazz.getFields()) {
                System.out.println("Field : " + i);
            }
            for (Field i : clazz.getDeclaredFields()) {
                System.out.println("Declared : " + i);
            }
            Field f = clazz.getField("VALUESET_BINDER");
            System.out.println(f.get(null));
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        System.out.println("END");
    }
}

Original Java code performs correctly, and here's what its translation prints into the log
BEGIN
Field : interface JavaLangCharSequence Class3Enum.VALUESET_BINDER
Declared : interface JavaLangCharSequence Class3Enum.VALUESET_BINDER
Non static stuff
END
BEGIN
java.lang.NoSuchFieldException: VALUESET_BINDER
	at 0x00aa39a6 java.lang.NoSuchFieldException.<init>() + 25
	at 0x00c8101d java.lang.Class.getField:() + 106
…
END

This appears to be fixed in the latest source, can you please retry it?
$ j2objc *.java
translating Class2.java
translating Class3.java
translating SomeClass.java
Translated 3 files: 0 errors, 0 warnings
$ j2objcc *.m
$ ./a.out Class2
BEGIN
Field : public static final class Class3 Class3.TYPE
Field : public final interface JavaLangCharSequence Class3.VALUESET_BINDER
Declared : public static final class Class3 Class3.TYPE
Declared : public final interface JavaLangCharSequence Class3.VALUESET_BINDER
Non static stuff
END
BEGIN
Field : public static final interface JavaLangCharSequence SomeClass.VALUESET_BINDER
Declared : public static final interface JavaLangCharSequence SomeClass.VALUESET_BINDER
HypHest
END

authors: olexl tomball


text:
JAX 0.4.1 with Rocm tensorflow-upstream for AMD GPUs

Description
Hi,
We have similar system as LUMI and used the EasyBuild configuration file jax-0.4.1-cpeGNU-22.08-rocm5.3.eb
https://lumi-supercomputer.github.io/LUMI-EasyBuild-docs/j/jax/jax-0.4.1-cpeGNU-22.08-rocm5.3/
where, JAX v0.4.1 is built with Rocm tensorflow-upstream 463c9aeff2f52e7988c869b15e1c3876d311b578 using rocm v5.3
However, we are unable to build Jax with this config. If using tensorflow 463c9aeff2f52e7988c869b15e1c3876d311b578, there is one bug with c++ unique_ptr in the submission. So we have to use bug fixed version, e.g. ed2e564e9944c70a6274f61d7ef6c0c537a458a7 but there are other compiler errors likes

In file included from external/org_tensorflow/tensorflow/compiler/xla/service/gpu/am
dgpu_compiler_registration.cc:16:0:
external/org_tensorflow/tensorflow/compiler/xla/service/gpu/amdgpu_compiler.h: At gl
obal scope:
external/org_tensorflow/tensorflow/compiler/xla/service/gpu/amdgpu_compiler.h:36:10:
error: 342200230tsl::Status xla::gpu::AMDGPUCompiler::OptimizeHloConvolutionCanonicalizatio
n(xla::HloModule*, stream_executor::StreamExecutor*, stream_executor::DeviceMemoryAl
locator*)342200231 marked 342200230override342200231, but does not override
Status OptimizeHloConvolutionCanonicalization(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

though the function looks like to be declaimed as virtual function in the superclass GpuCompiler while it is overrided in subclass AMDGPUCompiler. so principally it should be fine.
There are two versions of rocm 5.0.2 and 5.3.3 available on our system.  Do you have any recommendation to install JAX (any versions) with compatible version of Rocm tensorflow-upstream ?
Thanks. /Jing
What jax/jaxlib version are you using?
jax v0.4.1
Which accelerator(s) are you using?
AMD GPU
Additional system info
python 3.9, Cray system
NVIDIA GPU info
No response

Please try the latest version (0.4.14). Anything older and we can't help you.

@jigo3635  We have started releasing jax/jaxlib for ROCm here https://github.com/ROCmSoftwarePlatform/jax/releases. Can you try one of these?
Also, you can find docker images here https://hub.docker.com/r/rocm/jax/tags.

Hi @rahulbatra85
Unfortunately the versions of rocm installed on the cluster are too old, v5.0 and v5.3, this is also the reason why I tried to install older version of jax.
The docker image  rocm5.6.0-jax0.4.13-py3.9.0 has been installed using singularity.

singularity shell --rocm rocm5.6.0-jax0.4.13-py3.9.0
Singularity> python
Python 3.8.10 (default, Jun 22 2022, 20:18:18)

# import jax is fine
>>> import jax

>>> import jax.numpy as jnp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'jax.numpy'

>>> import jax.grad
>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'grad' from 'jax'
...

It seems to me that only jax is available but not any submodules such as jax.numpy,  jax.random etc.  Is the installation of docker image correct? Thanks /Jing

I tried the above, and had the same error.
@rahulbatra85  The pip installation from releases you linked seems to only installs jaxlib, not jax. (Even under the "Install jax", the URL points to the same jaxlib .whl file). Maybe that's the issue.

@SarthakYadav As you can see, jaxlib 0.4.13 wheels are released for ROCm 5.5 and 5.6.
Instead of running baremetal, have you tried using the docker images mentioned on this page? They already have jax and jaxlib installed, so you don't even have to install the wheels. Also, the right ROCm version is already available in the docker images.
https://github.com/ROCmSoftwarePlatform/jax/releases

@rahulbatra85 I pulled the following docker image (to build a singularity image): rocm/jax:rocm5.5.0-jax0.4.12-py3.9.0
Upon running the singularity container, the correct rocm (5.5.0) is found in path, but the default python version is only 3.8, not 3.9, same as @jigo3635
I found the problem: when we run it as a singularity container, the following error is received:
source: /.singularity.d/env/10-docker2singularity.sh:2:8: invalid var name
It might be unrelated, but I think this results in python3.9 (which is at /pyenv/shims/python in the container) not being added to the path.
Once manually added it works, I can initialize arrays and run dot products on the GPU. Will report back once I get more complex examples going.
Can you recommend which paths can we explicitly add to paths to ensure everything works right?

@SarthakYadav You shouldn't need to add any paths explicitly.
When I run/start the docker container using this image rocm/jax:rocm5.5.0-jax0.4.12-py3.9.0, the python version is 3.9.
To verify on your end, is it possible for you run the container just using docker and not use singularity? May be the problem is how singularity image is built.

@jigo3635 Can you confirm which JAX python packages are installed?
python3[or python] -m pip list | grep jax
Also, what's the ROCm installation path? Is it /opt/rocm?

@rahulbatra85 ,
Here is the output
singularity shell --rocm jax0.4.13_rocm5.5.0_python3.9.0

Singularity> ls /opt/rocm
rocm/       rocm-5.5.0/
Singularity> ls /opt/rocm/
amdgcn		 hipfft		     lib      rocalution   rocsolver
bin		 hiprand	     libexec  rocblas	   rocsparse
hip		 hipsolver	     llvm     rocfft	   rocthrust
...

Singularity> /pyenv/shims/python  -m pip list | grep jax
jax                  0.4.1
jaxlib               0.4.1

The version of jax/jaxlib  (0.4.1) seems not to be correct.   Perhaps it is the issue to use
/pyenv/shims/python !?

ROCm jaxlib wheels will have ROCm in the name. The Jaxlib that you have installed is what Google releases on PyPI. To my understanding that only supports CPU(https://github.com/google/jax#pip-installation-cpu). And obviously, it  doesn't have ROCm support in it. For ROCm support you have to specifically install ROCm jaxlib from the releases page that I shared with you above(https://github.com/ROCmSoftwarePlatform/jax/releases). It's similar even for CUDA. See https://github.com/google/jax#pip-installation-gpu-cuda-installed-via-pip-easier.
By the way, to my knowledge JAX team is working on a plugin mechanism where the same Jaxlib wheel can support different HW backends. Unfortunately, it's not available yet.

@rahulbatra85,
Thanks for the explanation. So, I need to do one more step with singularity

# build a singularity sandbox of jax0.4.13 from the docker
$ singularity build --sandbox jax0.4.13-rocm5.6.0-py3.9.0 docker://rocm/jax:rocm5.6.0-jax0.4.13-py3.9.0

# login the writeable sandbox
$ sudo singularity shell -w jax0.4.13-rocm5.6.0-py3.9.0
Singuarlity >

# install jaxlib-v0.4.13 with rocm
# /usr/bin/python version is 3.8 while pyenv/shims/python is 3.9
Singularity > /pyenv/shims/python -m pip install https://github.com/ROCmSoftwarePlatform/jax/releases/download/jaxlib-v0.4.13-rocm560/jaxlib-0.4.13+rocm560-cp39-cp39-manylinux2014_x86_64.whl

If I understand correctly from the previous conversations,  the last step to installation jaxlib-v0.4.13 is NOT necessary if directly run docker image.  Thanks /Jing

Correct, but you are building singularity image from the docker image. May be during this build something is installing jax/jaxlib 0.4.1.
Also, you should install the correct version of jax wheel also(can be from ROCm release page or PyPI directly since there isn't any ROCm specific piece in JAX itself, but jaxlib only).

@rahulbatra85
This is really issue:
source: /.singularity.d/env/10-docker2singularity.sh:2:8: invalid var name
cat /.singularity.d/env/10-docker2singularity.sh:2:8

export XLA_CLONE_DIR:/workspace/jax-xla-repo="${XLA_CLONE_DIR:/workspace/jax-xla-repo:-}"
export XLA_REPO="${XLA_REPO:-"https://github.com/ROCmSoftwarePlatform/xla.git"}"
...
export XLA_CLONE_DIR="${XLA_CLONE_DIR:-"/workspace/jax-xla-repo"}"

So, to remove the fist line with sudo and recreate new .sif  image works fine now.

$ singularity shell jax0.4.13_rocm5.5.0_python3.9.0 --rocm
Singularity> python
>>> import jax
>>> print(jax.devices())
[gpu(id=0), gpu(id=1), gpu(id=2), gpu(id=3), gpu(id=4), gpu(id=5), gpu(id=6), gpu(id=7)]

Thanks a lot for the help. /Jing

@hawkinsp @jakevdp We can close this issue now. Thanks!

Thanks!

@rahulbatra85
This is the really issue:
source: /.singularity.d/env/10-docker2singularity.sh:2:8: invalid var name
cat /.singularity.d/env/10-docker2singularity.sh

export XLA_CLONE_DIR:/workspace/jax-xla-repo="${XLA_CLONE_DIR:/workspace/jax-xla-repo:-}"
export XLA_REPO="${XLA_REPO:-"https://github.com/ROCmSoftwarePlatform/xla.git"}"
...
export XLA_CLONE_DIR="${XLA_CLONE_DIR:-"/workspace/jax-xla-repo"}"

So, to remove the fist line with sudo and recreate new .sif image works fine now.

$ singularity shell jax0.4.13_rocm5.5.0_python3.9.0 --rocm
Singularity> python
>>> import jax
>>> print(jax.devices())
[gpu(id=0), gpu(id=1), gpu(id=2), gpu(id=3), gpu(id=4), gpu(id=5), gpu(id=6), gpu(id=7)]

Thanks a lot for the help. /Jing

Hi @jigo3635 I am facing the exact issue as you. Can you make it more clear what file do I need to modify? I am not sure where exactly 10-docker2singularity.sh file is

Hi @reachtarunhere,

I am not sure where exactly 10-docker2singularity.sh file is
I suppose that you have a singularity sandbox. So you can do likes

> sudo singularity shell -w <singularity.box>

# within the sandbox, the files is located in  /.singularity.d/env/10-docker2singularity.sh
singularity$ ls /.singularity.d/env/10-docker2singularity.sh
...
(use one text editor to remove or comment the first line of this file, i.e.

export XLA_CLONE_DIR:/workspace/jax-xla-repo="${XLA_CLONE_DIR:/workspace/jax-xla-repo:-}"

repo: google/jax