diff --git a/label/label.go b/label/label.go
index faf431c..50a71d0 100644
--- a/label/label.go
+++ b/label/label.go
@@ -51,12 +51,6 @@
 	// Relative indicates whether the label refers to a target in the current
 	// package. Relative is true if and only if Repo and Pkg are both omitted.
 	Relative bool
-
-	// Canonical indicates whether the repository name is canonical. If true,
-	// then the label will be stringified with an extra "@" prefix if it is
-	// absolute.
-	// Note: Label does not apply any kind of repo mapping.
-	Canonical bool
 }
 
 // New constructs a new label from components.
@@ -89,11 +83,10 @@
 	origStr := s
 
 	relative := true
-	canonical := false
 	var repo string
+	// if target name begins @@ drop the first @
 	if strings.HasPrefix(s, "@@") {
 		s = s[len("@"):]
-		canonical = true
 	}
 	if strings.HasPrefix(s, "@") {
 		relative = false
@@ -147,11 +140,10 @@
 	}
 
 	return Label{
-		Repo:      repo,
-		Pkg:       pkg,
-		Name:      name,
-		Relative:  relative,
-		Canonical: canonical,
+		Repo:     repo,
+		Pkg:      pkg,
+		Name:     name,
+		Relative: relative,
 	}, nil
 }
 
@@ -168,9 +160,6 @@
 		// if l.Repo == "@", the label string will begin with "@//"
 		repo = l.Repo
 	}
-	if l.Canonical && strings.HasPrefix(repo, "@") {
-		repo = "@" + repo
-	}
 
 	if path.Base(l.Pkg) == l.Name {
 		return fmt.Sprintf("%s//%s", repo, l.Pkg)
@@ -224,8 +213,8 @@
 }
 
 func (l Label) BzlExpr() bzl.Expr {
-	return &bzl.StringExpr{
-		Value: l.String(),
+	return &bzl.StringExpr {
+	    Value: l.String(),
 	}
 }
 
diff --git a/label/label_test.go b/label/label_test.go
index 083add8..65c5a37 100644
--- a/label/label_test.go
+++ b/label/label_test.go
@@ -87,10 +87,10 @@
 		{str: "@a//some/pkg/[someId]:[someId]", want: Label{Repo: "a", Pkg: "some/pkg/[someId]", Name: "[someId]"}},
 		{str: "@rules_python~0.0.0~pip~name_dep//:_pkg", want: Label{Repo: "rules_python~0.0.0~pip~name_dep", Name: "_pkg"}},
 		{str: "@rules_python~0.0.0~pip~name//:dep_pkg", want: Label{Repo: "rules_python~0.0.0~pip~name", Name: "dep_pkg"}},
-		{str: "@@rules_python~0.26.0~python~python_3_10_x86_64-unknown-linux-gnu//:python_runtimes", want: Label{Repo: "rules_python~0.26.0~python~python_3_10_x86_64-unknown-linux-gnu", Name: "python_runtimes", Canonical: true}},
+		{str: "@@rules_python~0.26.0~python~python_3_10_x86_64-unknown-linux-gnu//:python_runtimes", want: Label{Repo: "rules_python~0.26.0~python~python_3_10_x86_64-unknown-linux-gnu", Name: "python_runtimes"}},
 		{str: "@rules_python++pip+name_dep//:_pkg", want: Label{Repo: "rules_python++pip+name_dep", Name: "_pkg"}},
 		{str: "@rules_python++pip+name//:dep_pkg", want: Label{Repo: "rules_python++pip+name", Name: "dep_pkg"}},
-		{str: "@@rules_python++python+python_3_10_x86_64-unknown-linux-gnu//:python_runtimes", want: Label{Repo: "rules_python++python+python_3_10_x86_64-unknown-linux-gnu", Name: "python_runtimes", Canonical: true}},
+		{str: "@@rules_python++python+python_3_10_x86_64-unknown-linux-gnu//:python_runtimes", want: Label{Repo: "rules_python++python+python_3_10_x86_64-unknown-linux-gnu", Name: "python_runtimes"}},
 	} {
 		got, err := Parse(tc.str)
 		if err != nil && !tc.wantErr {
@@ -117,37 +117,3 @@
 		}
 	}
 }
-
-func TestParseStringRoundtrip(t *testing.T) {
-	for _, tc := range []struct {
-		in  string
-		out string
-	}{
-		{in: "target", out: ":target"},
-		{in: ":target"},
-		{in: "//:target"},
-		{in: "//pkg:target"},
-		{in: "@repo//:target"},
-		{in: "@repo//pkg:target"},
-		{in: "@repo", out: "@repo//:repo"},
-		{in: "@//pkg:target"},
-		{in: "@@canonical~name//:target"},
-		{in: "@@//:target"},
-	} {
-		lbl, err := Parse(tc.in)
-		if err != nil {
-			t.Errorf("Parse(%q) failed: %v", tc, err)
-			continue
-		}
-		got := lbl.String()
-		var want string
-		if len(tc.out) == 0 {
-			want = tc.in
-		} else {
-			want = tc.out
-		}
-		if got != want {
-			t.Errorf("Parse(%q).String() = %q; want %q", tc.in, got, want)
-		}
-	}
-}
